Envío de datos de Windows Azure Diagnostics Extension a Azure Event Hubs

Azure Diagnostics Extension es un agente de Azure Monitor que recopila datos de supervisión del sistema operativo invitado y de las cargas de trabajo de las máquinas virtuales de Azure y de otros recursos de proceso. En este artículo, se explica cómo puede enviar datos desde Windows Azure Diagnostic Extension (WAD) a Azure Event Hubs para reenviarlos después fuera de Azure.

Datos admitidos

Los datos recopilados del sistema operativo invitado que pueden enviarse a Event Hubs son los siguientes. Otros orígenes de datos recopilados por WAD, como los volcados de memoria y los registros de IIS, no se pueden enviar a Event Hubs.

  • Eventos de Seguimiento de eventos para Windows (ETW)
  • Contadores de rendimiento
  • Registros de eventos de Windows, incluidos los registros de aplicaciones en el registro de eventos de Windows
  • Registros de infraestructura de diagnóstico de Azure

Requisitos previos

Esquema de configuración

Consulte las diferentes opciones para habilitar y configurar Diagnostics Extension en Instalación y configuración de Windows Azure Diagnostics Extension (WAD) y una referencia del esquema de configuración en Esquema de configuración de Azure Diagnostics. De aquí hasta el final del artículo, se describe cómo se utiliza esta configuración para enviar datos a un centro de eventos.

Azure Diagnostics siempre envía registros y métricas a una cuenta de Azure Storage. Puede configurar uno o varios receptores de datos para enviar datos a otros destinos. Cada receptor de datos se define en el elemento SinksConfig de la configuración pública con información confidencial en la configuración privada. Esta configuración de los centros de eventos utiliza los valores de la tabla siguiente.

Propiedad Descripción
Nombre Nombre descriptivo del receptor. Se utiliza en la configuración para especificar qué orígenes de datos van a enviar información al receptor.
Url Dirección URL del centro de eventos con el formato <espacio de nombres-centro de eventos>.servicebus.windows.net/<nombre-centro de eventos>.
SharedAccessKeyName Nombre de la directiva de acceso compartido del centro de eventos que tiene, como mínimo, el permiso Enviar.
SharedAccessKey Clave principal o secundaria de la directiva de acceso compartido del centro de eventos.

A continuación, se incluyen ejemplos de la configuración pública y privada. Se trata de una configuración mínima con un solo contador de rendimiento y un solo registro de eventos que ilustra cómo se configura y utiliza el receptor de datos del centro de eventos. Puede ver un ejemplo más complejo en Esquema de configuración de Azure Diagnostics.

Configuración pública

{
    "WadCfg": {
        "DiagnosticMonitorConfiguration": {
            "overallQuotaInMB": 5120,
            "PerformanceCounters": {
                "scheduledTransferPeriod": "PT1M",
                "sinks": "myEventHub",
                "PerformanceCounterConfiguration": [
                    {
                        "counterSpecifier": "\\Processor(_Total)\\% Processor Time",
                        "sampleRate": "PT3M"
                    }
                ]
            },
            "WindowsEventLog": {
                "scheduledTransferPeriod": "PT1M",
                "sinks": "myEventHub",
                    "DataSource": [
                    {
                        "name": "Application!*[System[(Level=1 or Level=2 or Level=3)]]"
                    }
                ]
            }
        },
        "SinksConfig": {
            "Sink": [
                {
                    "name": "myEventHub",
                    "EventHub": {
                        "Url": "https://diags-mycompany-ns.servicebus.windows.net/diageventhub",
                        "SharedAccessKeyName": "SendRule"
                    }
                }
            ]
        }
    },
    "StorageAccount": "mystorageaccount",
}

Configuración privada

{
    "storageAccountName": "mystorageaccount",
    "storageAccountKey": "{base64 encoded key}",
    "storageAccountEndPoint": "https://core.windows.net",
    "EventHub": {
        "Url": "https://diags-mycompany-ns.servicebus.windows.net/diageventhub",
        "SharedAccessKeyName": "SendRule",
        "SharedAccessKey": "{base64 encoded key}"
    }
}

Opciones de configuración

Para enviar datos a un receptor de datos, debe especificar el atributo sinks en el nodo del origen de datos. El lugar en el que incluya el atributo sinks determinará el ámbito de la asignación. En el ejemplo siguiente, el atributo sinks está definido en el nodo PerformanceCounters, lo que hará que todos los contadores de rendimiento secundarios se envíen al centro de eventos.

"PerformanceCounters": {
    "scheduledTransferPeriod": "PT1M",
    "sinks": "MyEventHub",
    "PerformanceCounterConfiguration": [
        {
            "counterSpecifier": "\\Processor(_Total)\\% Processor Time",
            "sampleRate": "PT3M"
        },
        {
            "counterSpecifier": "\\Memory\\Available MBytes",
            "sampleRate": "PT3M"
        },
        {
            "counterSpecifier": "\\Web Service(_Total)\\ISAPI Extension Requests/sec",
            "sampleRate": "PT3M"
        }
    ]
}

En el ejemplo siguiente, el atributo sinks se aplica directamente a tres contadores, por lo que solo se enviarán estos contadores de rendimiento al centro de eventos.

"PerformanceCounters": {
    "scheduledTransferPeriod": "PT1M",
    "PerformanceCounterConfiguration": [
        {
            "counterSpecifier": "\\Processor(_Total)\\% Processor Time",
            "sampleRate": "PT3M",
            "sinks": "MyEventHub"
        },
        {
            "counterSpecifier": "\\Memory\\Available MBytes",
            "sampleRate": "PT3M"
        },
        {
            "counterSpecifier": "\\Web Service(_Total)\\ISAPI Extension Requests/sec",
            "sampleRate": "PT3M"
        },
        {
            "counterSpecifier": "\\ASP.NET\\Requests Rejected",
            "sampleRate": "PT3M",
            "sinks": "MyEventHub"
        },
        {
            "counterSpecifier": "\\ASP.NET\\Requests Queued",
            "sampleRate": "PT3M",
            "sinks": "MyEventHub"
        }
    ]
}

Validación de la configuración

Puede utilizar diferentes métodos para comprobar que los datos se están enviando al centro de eventos. Un método sencillo es utilizar una captura de Event Hubs, tal y como se describe en Captura de eventos a través de Azure Event Hubs en Azure Blob Storage o Azure Data Lake Storage.

Solución de problemas con los receptores de Event Hubs

  • Consulte la tabla WADDiagnosticInfrastructureLogsTable de Azure Storage, que contiene registros y errores de Azure Diagnostics. Una opción es usar una herramienta como el Explorador de Azure Storage para conectarse a esta cuenta de almacenamiento, ver esta tabla y agregar una consulta para TimeStamp en las últimas 24 horas. Puede usar la herramienta para exportar un archivo .csv y abrirlo en una aplicación como Microsoft Excel. Excel facilita la búsqueda de cadenas de tarjeta de llamadas, como EventHubs, para ver qué error se notifica.

  • Compruebe que el centro de eventos esté correctamente aprovisionado. Toda la información de conexión de la sección PrivateConfig de la configuración debe coincidir con los valores del recurso que se muestran en el portal. No olvide que debe tener una directiva SAS definida (en este ejemplo es SendRule) en el portal y que debe haberse concedido el permiso Enviar.

Pasos siguientes