Tutorial: Ingesta y consulta de datos de supervisión en Azure Data Explorer

En este tutorial se muestra cómo ingerir datos de registros de actividad y diagnóstico para un clúster de Azure Data Explorer sin escribir código. Con este sencillo método de ingesta, puede empezar a consultar datos de Azure Data Explorer rápidamente para el análisis de datos.

En este tutorial, aprenderá a:

  • Cree la asignación de la ingesta y las tablas en una base de datos de Azure Data Explorer.
  • Aplicar formato a los datos ingeridos mediante una directiva de actualización
  • Crear un centro de eventos y conectarlo a Azure Data Explorer.
  • Hacer streaming de datos a un centro de eventos a partir de los registros y métricas de diagnóstico y los registros de actividad de Azure Monitor.
  • Consultar los datos ingeridos mediante Azure Data Explorer

Nota

Crear todos los recursos en la misma ubicación o región de Azure

Prerrequisitos

Proveedor de datos de Azure Monitor: registros y métricas de diagnóstico y registros de actividad

Vea y comprenda los datos que proporcionan los siguientes registros y métricas de diagnóstico y registros de actividad de Azure Monitor. Va a crear una canalización de ingesta en función de estos esquemas de datos. Tenga en cuenta que cada evento de un registro tiene una matriz de registros. Esta matriz de registros se dividirá más adelante en el tutorial.

Ejemplos de registros y métricas de diagnóstico y registros de actividad

Los registros y métricas de diagnóstico y los registros de actividad de Azure son emitidos por un servicio de Azure que proporciona datos sobre el funcionamiento de ese servicio.

Ejemplo de métricas de diagnóstico

Las métricas de diagnóstico se agregan con un intervalo de agregación de 1 minuto. El siguiente es un ejemplo de un esquema de eventos y métricas de Azure Data Explorer sobre la duración de una consulta:

{
    "records": [
    {
        "count": 14,
        "total": 0,
        "minimum": 0,
        "maximum": 0,
        "average": 0,
        "resourceId": "/SUBSCRIPTIONS/<subscriptionID>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.KUSTO/CLUSTERS/<cluster-name>",
        "time": "2018-12-20T17:00:00.0000000Z",
        "metricName": "QueryDuration",
        "timeGrain": "PT1M"
    },
    {
        "count": 12,
        "total": 0,
        "minimum": 0,
        "maximum": 0,
        "average": 0,
        "resourceId": "/SUBSCRIPTIONS/<subscriptionID>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.KUSTO/CLUSTERS/<cluster-name>",
        "time": "2018-12-21T17:00:00.0000000Z",
        "metricName": "QueryDuration",
        "timeGrain": "PT1M"
    }
    ]
}

Configuración de una canalización de ingesta en Azure Data Explorer

La configuración de una canalización de Azure Data Explorer implica varios pasos, como la creación de tablas y la ingesta de datos. También puede manipular, asignar y actualizar los datos.

Conexión a la interfaz de usuario web de Azure Data Explorer

En la base de datos TestDatabase de Azure Data Explorer, seleccione Query (Consultar) para abrir la interfaz de usuario web de Azure Data Explorer.

Página de consulta.

Creación de las tablas de destino

La estructura de los registros de Azure Monitor no es tabular. Podrá manipular los datos y expandir cada evento a uno o más registros. Los datos sin procesar se ingieren en una tabla intermedia denominada ActivityLogsRawRecords para registros de actividad y DiagnosticRawRecords para registros y métricas de diagnóstico. En ese momento, los datos se manipularán y se expandirán. Mediante una directiva de actualización, los datos expandidos se ingieren en la tabla ActivityLogs para los registros de actividad, DiagnosticMetrics para las métricas de diagnóstico y DiagnosticLogs para los registros de diagnóstico. Esto significa que deberá crear dos tablas independientes para la ingesta de los registros de actividad y dos tablas independientes para la ingesta de los registros y métricas de diagnóstico.

Use la interfaz de usuario web de Azure Data Explorer para crear las tablas de destino en la base de datos de Azure Data Explorer.

Creación de tablas para las métricas de diagnóstico

  1. En la base de datos TestDatabase, cree una tabla llamada DiagnosticMetrics para almacenar los registros de métricas de diagnóstico. Use el siguiente .create table comando de administración:

    .create table DiagnosticMetrics (Timestamp:datetime, ResourceId:string, MetricName:string, Count:int, Total:double, Minimum:double, Maximum:double, Average:double, TimeGrain:string)
    
  2. Seleccione Ejecutar para crear la tabla.

    Ejecutar consulta.

  3. Cree la tabla de datos intermedia llamada DiagnosticRawRecords en la base de datos TestDatabase para la manipulación de los datos mediante la siguiente consulta. Seleccione Ejecutar para crear la tabla.

    .create table DiagnosticRawRecords (Records:dynamic)
    
  4. Establezca una directiva de retención cero para la tabla intermedia:

    .alter-merge table DiagnosticRawRecords policy retention softdelete = 0d
    

Creación de asignaciones de tablas

Como el formato de datos es json, se requiere la asignación de datos. La asignación json asigna cada ruta de acceso JSON a un nombre de columna de tabla. Las rutas JSON con caracteres especiales deben incluir caracteres de escape, como ["Nombre de propiedad"]. Para más información, consulte la sintaxis JSONPath.

Asignación de métricas y registros de diagnóstico a la tabla

Para asignar las métricas de diagnóstico y los datos del registro a la tabla, use la siguiente consulta:

.create table DiagnosticRawRecords ingestion json mapping 'DiagnosticRawRecordsMapping' '[{"column":"Records","Properties":{"path":"$.records"}}]'

Creación de la directiva de actualización para los datos de métricas y registros

Creación de una directiva de actualización de datos para métricas de diagnóstico

  1. Cree una función que expanda la colección de registros de métricas de diagnóstico para que cada valor de la colección reciba una fila independiente. Use el operador mv-expand:

    .create function DiagnosticMetricsExpand() {
       DiagnosticRawRecords
       | mv-expand events = Records
       | where isnotempty(events.metricName)
       | project
           Timestamp = todatetime(events['time']),
           ResourceId = tostring(events.resourceId),
           MetricName = tostring(events.metricName),
           Count = toint(events['count']),
           Total = todouble(events.total),
           Minimum = todouble(events.minimum),
           Maximum = todouble(events.maximum),
           Average = todouble(events.average),
           TimeGrain = tostring(events.timeGrain)
    }
    
  2. Agregue la directiva de actualización a la tabla de destino. Esta directiva ejecuta automáticamente la consulta en cualquier dato recién ingerido en la tabla de datos intermedia DiagnosticRawRecords e ingiere sus resultados en la tabla DiagnosticMetrics:

    .alter table DiagnosticMetrics policy update @'[{"Source": "DiagnosticRawRecords", "Query": "DiagnosticMetricsExpand()", "IsEnabled": "True", "IsTransactional": true}]'
    

Creación de un espacio de nombres de Azure Event Hubs

La configuración de diagnóstico de Azure permite exportar métricas y registros a una cuenta de almacenamiento o a un centro de eventos. En este tutorial, enrutará las métricas y registros mediante un centro de eventos. En los pasos siguientes creará un espacio de nombres de Event Hubs y un centro de eventos para las métricas y registros de diagnóstico. Azure Monitor creará el centro de eventos insights-operational-logs para los registros de actividad.

  1. Cree un centro de eventos mediante una plantilla de Azure Resource Manager en Azure Portal. Para seguir el resto de los pasos de este artículo, haga clic con el botón derecho en el botón Implementar en Azure y, luego, seleccione Abrir en una nueva ventana. El botón Deploy to Azure (Implementar en Azure) le lleva a Azure Portal.

    Botón Implementar en Azure.

  2. Cree un espacio de nombres de Event Hubs y un centro de eventos para los registros de diagnóstico. Aprenda a crear un espacio de nombres de Event Hubs.

  3. Rellene el formulario con la siguiente información. Para el caso de opciones de configuración que no se muestren en la siguiente tabla, use los valores predeterminados.

    Configuración Valor sugerido Descripción
    Suscripción Su suscripción Seleccione la suscripción de Azure que quiere usar para el centro de eventos.
    Grupos de recursos test-resource-group Cree un nuevo grupo de recursos.
    Ubicación Seleccione la región que mejor se adapte a sus necesidades. Cree el espacio de nombres de Event Hubs en la misma ubicación que otros recursos.
    Nombre del espacio de nombres AzureMonitoringData Elija un nombre único que identifique el espacio de nombres.
    Nombre del centro de eventos DiagnosticData El centro de eventos se encuentra bajo el espacio de nombres, que proporciona un contenedor de ámbito único.
    Nombre del grupo de consumidores adxpipeline Cree un nombre para el grupo de consumidores. Los grupos de consumidores permiten consumir varias aplicaciones y que cada una tenga una vista independiente del flujo de eventos.

Conexión de métricas y registros de Azure Monitor al centro de eventos

Ahora debe conectar los registros y métricas de diagnóstico y los registros de actividad al centro de eventos.

Conexión de métricas y registros de diagnóstico al centro de eventos

Seleccione un recurso desde el que se va a exportar las métricas. Hay varios tipos de recursos que admiten la exportación de datos de diagnóstico, incluido el espacio de nombres de Event Hubs, Azure Key Vault, Azure IoT Hub y los clústeres de Azure Data Explorer. En este tutorial, se utilizará un clúster de Azure Data Explorer como nuestro recurso, se revisarán las métricas de rendimiento de las consultas y los registros de resultados de la ingesta.

  1. Seleccione el clúster de Kusto en Azure Portal.

  2. Seleccione Configuración de diagnóstico y, luego, el vínculo Activar diagnóstico.

    Configuración de diagnóstico.

  3. Se abre el panel Configuración de diagnóstico. Siga estos pasos.

    1. Asigne a los datos del registro de diagnóstico el nombre ADXExportedData.

    2. En REGISTRO, active las casillas SucceededIngestion y FailedIngestion.

    3. En MÉTRICA, seleccione la casilla Query performance.

    4. Active la casilla Transmitir a un centro de eventos.

    5. Seleccione Configurar.

      Panel Configuración de diagnóstico.

  4. En el panel Seleccionar centro de eventos, configure cómo exportar datos desde los registros de diagnóstico hasta el centro de eventos que ha creado:

    1. En la lista Seleccionar el espacio de nombres del Centro de eventos, seleccione AzureMonitoringData.
    2. En la lista Seleccionar nombre de centro de eventos, seleccione DiagnosticData.
    3. En la lista Seleccionar el nombre de directiva del Centro de eventos, seleccione RootManagerSharedAccessKey.
    4. Seleccione Aceptar.
  5. Seleccione Guardar.

Visualización del flujo de datos a los centros de eventos

  1. Espere unos minutos hasta que se defina la conexión y haya finalizado la exportación del registro de actividad al centro de eventos. Vaya al espacio de nombres de Event Hubs para ver los centros de eventos que ha creado.

    Centros de eventos creados.

  2. Vea el flujo de datos al centro de eventos:

    Datos del centro de eventos.

Conexión de un centro de eventos a Azure Data Explorer

Ahora debe crear las conexiones de datos para sus métricas y registros de diagnóstico y registros de actividad.

Creación de conexiones de datos para sus métricas y registros de diagnóstico y registros de actividad

  1. En el clúster de Azure Data Explorer llamado kustodocs, seleccione Bases de datos en el menú izquierdo.

  2. En la ventana Bases de datos, seleccione la base de datos TestDatabase.

  3. En el menú izquierdo, seleccione Ingesta de datos.

  4. En la ventana Ingesta de datos, seleccione + Agregar conexión de datos.

  5. En la ventana Conexión de datos, escriba la siguiente información:

    Conexión de datos del centro de eventos.

  1. Use la configuración siguiente en la ventana Conexión de datos:

    Origen de datos:

    Configuración Valor sugerido Descripción del campo
    Nombre de la conexión de datos DiagnosticsLogsConnection Nombre de la conexión que desea crear en el Explorador de datos de Azure.
    Espacio de nombres del centro de eventos AzureMonitoringData Nombre elegido anteriormente que identifica el espacio de nombres.
    Centro de eventos DiagnosticData El centro de eventos que creó.
    Grupo de consumidores adxpipeline Grupo de consumidores de eventos definido en el centro de eventos que creó.

    Tabla de destino:

    Hay dos opciones para el enrutamiento: estático y dinámico. En este tutorial usará el enrutamiento estático (el predeterminado), en el que se especifican el nombre de la tabla, el formato de los datos y la asignación. Deje Mis datos incluyen información de enrutamiento sin seleccionar.

    Configuración Valor sugerido Descripción del campo
    Tabla DiagnosticRawRecords La tabla que creó en la base de datos TestDatabase.
    Formato de datos JSON El formato usado en la tabla.
    Asignación de columnas DiagnosticRawRecordsMapping La asignación que creó en la base de datos TestDatabase, que asigna los datos JSON entrantes a los nombres de columna y los tipos de datos de la tabla DiagnosticRawRecords.
  2. Seleccione Crear.

Consulta de las nuevas tablas

Ahora tiene una canalización con el flujo de datos. La ingesta a través del clúster tarda cinco minutos de forma predeterminada, por lo que los datos fluyen durante unos minutos antes de empezar la consulta.

Consulta de la tabla de métricas de diagnóstico

La siguiente consulta analiza los datos de duración de las consultas a partir de los registros de métricas de diagnóstico de Azure Data Explorer:

DiagnosticMetrics
| where Timestamp > ago(15m) and MetricName == 'QueryDuration'
| summarize avg(Average)

Resultados de la consulta:

avg_Average
00:06.156