Compartir vía


Tutorial: Ingesta de eventos de Azure Event Hubs en los registros de Azure Monitor (versión preliminar pública)

Azure Event Hubs es una plataforma de flujo de macrodatos que recopila eventos de múltiples orígenes para que Azure y servicios externos los ingieran. En este artículo se explica cómo ingerir datos directamente desde un concentrador de eventos en un área de trabajo de Log Analytics.

En este tutorial, aprenderá a:

  • Cree una tabla de destino para los datos del concentrador de eventos en su área de trabajo de Log Analytics
  • Creación de un punto de conexión de recopilación de datos
  • Creación de una regla de recopilación de datos
  • Conceda permisos de regla de recopilación de datos al centro de eventos
  • Asociar la regla de recopilación de datos con el centro de eventos

Requisitos previos

Para enviar eventos desde Azure Event Hubs a los registros de Azure Monitor, necesita estos recursos:

Regiones admitidas

Azure Monitor actualmente admite la ingestión desde Event Hubs en estas regiones:

América Europa Oriente Medio África Asia Pacífico
Sur de Brasil Centro de Francia Norte de Emiratos Árabes Unidos Norte de Sudáfrica Centro de Australia
Sur de Brasil Norte de Europa Este de Australia
Centro de Canadá Este de Noruega Sudeste de Australia
Este de Canadá Norte de Suiza Centro de la India
Este de EE. UU. Oeste de Suiza Este de Asia
Este de EE. UU. 2 Sur de Reino Unido Japón Oriental
Centro-sur de EE. UU. Oeste de Reino Unido JIO del Oeste de la India
Oeste de EE. UU. Oeste de Europa Centro de Corea del Sur
Oeste de EE. UU. 3 Sudeste de Asia

Debe crear la Asociación de reglas de recopilación de datos (DCRA) en la misma región que el Centro de eventos. El área de trabajo de Log Analytics puede estar en cualquier región, pero la regla de recopilación de datos (DCR) y el punto de conexión de recopilación de datos (DCE) deben estar en la misma región que el área de trabajo de Log Analytics.

Para una latencia mínima, se recomienda colocar todos los recursos en la misma región.

Recopilación de la información necesaria

En los pasos siguientes, necesitará su Id. de suscripción, nombre de grupo de recursos, nombre de espacio de trabajo, Id. de recurso de área de trabajo e Id. de recurso de instancia de centro de eventos:

  1. Vaya a su área de trabajo en el menú Áreas de trabajo de Log Analytics y seleccione Propiedades y copie su Id. de suscripción, Grupo de recursos y Nombre del área de trabajo. Necesitará estos detalles para crear recursos en este tutorial.

    Captura de pantalla que muestra la pantalla de resumen del área de trabajo de Log Analytics con el Id. de suscripción, el nombre del grupo de recursos y el nombre del área de trabajo resaltados.

  2. Seleccione JSON para abrir la pantalla Recurso JSON y copie el ID de recurso del área de trabajo. Necesitará el ID de recurso del área de trabajo para crear una regla de recopilación de datos.

    Captura de pantalla que muestra la pantalla Resource JSON con el ID de recurso del área de trabajo resaltado.

  3. Vaya a su instancia de centro de eventos, seleccione JSON para abrir la pantalla Recurso JSON y copie el Id. de recurso de la instancia del centro de eventos. Necesitará el Id. de recurso de la instancia centro de eventos para asociar la regla de recopilación de datos con el centro de eventos.

    Captura de pantalla que muestra la pantalla JSON de recursos con el ID de recurso del centro de eventos resaltado.

Cree una tabla de destino en su área de trabajo de Log Analytics

Antes de poder ingestar datos, debe configurar una tabla de destino. Puede ingerir datos en tablas personalizadas y en tablas Azure compatibles.

Para crear una tabla personalizada en la que ingerir eventos, en el Azure Portal:

  1. Seleccione el botón Cloud Shell y asegúrese de que el entorno está configurado como PowerShell.

    Captura de pantalla que muestra cómo abrir Cloud Shell.

  2. Ejecute este comando PowerShell para crear la tabla, proporcionando el nombre de la tabla (<table_name>) en el JSON (también con el sufijo _CL si se trata de una tabla personalizada) y estableciendo los valores <subscription_id>, <resource_group_name>, <workspace_name> y <table_name> en el comando Invoke-AzRestMethod -Path:

    $tableParams = @'
    {
        "properties": {
            "schema": {
                "name": "<table_name>",
                "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "datetime",
                        "description": "The time at which the data was ingested."
                    },
                    {
                        "name": "RawData",
                        "type": "string",
                        "description": "Body of the event."
                    },
                    {
                        "name": "Properties",
                        "type": "dynamic",
                        "description": "Additional message properties."
                    }
                ]
            }
        }
    }
    '@
    
    Invoke-AzRestMethod -Path "/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/microsoft.operationalinsights/workspaces/<workspace_name>/tables/<table_name>?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
    

Importante

  • Los nombres de columna deben comenzar con una letra y pueden constar de hasta 45 caracteres alfanuméricos y guiones bajos (_).
  • _ResourceId, id, _ResourceId, _SubscriptionId, TenantId, Type, UniqueId y Title son nombres de columna reservados.
  • Los nombres de columna distinguen entre mayúsculas y minúsculas. Asegúrese de utilizar las mayúsculas y minúsculas correctas en su regla de recopilación de datos.

Creación de un punto de conexión de recopilación de datos

Para recopilar datos con una regla de recopilación de datos, necesita un punto de conexión de recopilación de datos:

  1. Cree un punto de conexión de recopilación de datos.

    Importante

    Cree el punto de coneción de recopilación de datos en la misma región que el área de trabajo de Log Analytics.

  2. En la pantalla Información general del punto de conexión de recopilación de datos, seleccione Vista JSON.

    Captura de pantalla que muestra la pantalla Información general del punto de conexión de recopilación de datos.

  3. Copie el identificador de recurso de la regla de recopilación de datos. Utilizará esta información en el siguiente paso.

    Captura de pantalla que muestra la vista JSON del punto de conexión de recopilación de datos.

Creación de una regla de recopilación de datos

Azure Monitor utiliza reglas de recopilación de datos para definir qué datos recopilar, cómo transformarlos y dónde enviarlos.

Para crear una regla de recopilación de datos en el Azure Portal:

  1. En el cuadro de búsqueda del portal, escriba plantilla y, a continuación, seleccione Implementar una plantilla personalizada.

    Captura de pantalla para implementar la plantilla personalizada.

  2. Seleccione Cree su propia plantilla en el editor.

    Captura de pantalla para crear una plantilla en el editor

  3. Pegue la plantilla del Administrador de recursos que aparece a continuación en el editor y, a continuación, seleccione Guardar.

    Captura de pantalla para editar la plantilla de Resource Manager.

    Observe los siguientes detalles en la siguiente regla de recopilación de datos:

    • identity - Define qué tipo de identidad administrada se va a utilizar. En nuestro ejemplo, utilizamos la identidad asignada por el sistema. También puede configurar la identidad administrada asignada por el usuario.

    • dataCollectionEndpointId: Id. de recurso del punto de conexión de recopilación de datos.

    • streamDeclarations: define qué datos ingerir desde el centro de eventos (datos entrantes). La declaración del flujo no puede modificarse.

      • TimeGenerated: la hora a la que los datos fueron ingeridos desde el centro de eventos a los registros de Azure Monitor.
      • RawData: cuerpo del evento. Para obtener más información, consulte Lectura de eventos.
      • Properties: propiedades de usuario del evento. Para obtener más información, consulte Lectura de eventos.
    • datasources: especifica el grupo de consumidores de centro de eventos y el flujo al que se ingestan los datos.

    • destinations: especifica todos los destinos a los que se enviarán los datos. Puede ingestar datos en una o varias áreas de trabajo de Log Analytics.

    • dataFlows: hace coincidir el flujo con el área de trabajo de destino y especifica la consulta de transformación y la tabla de destino. En nuestro ejemplo, ingerimos datos en la tabla personalizada que creamos anteriormente. También puede ingestar en una tabla Azure compatible.

    • transformKql: especifica una transformación para aplicar a los datos entrantes (declaración de flujo) antes de enviarlos al área de trabajo. En nuestro ejemplo, establecemos transformKql en source, lo que no modifica los datos de la fuente en modo alguno, ya que estamos asignando los datos entrantes a una tabla personalizada que hemos creado específicamente con el esquema correspondiente. Si está ingiriendo datos a una tabla con un esquema diferente o para filtrar datos antes de la ingestión, defina una transformación de recopilación de datos.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "dataCollectionRuleName": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the name of the data collection Rule to create."
                }
            },
            "workspaceResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the Log Analytics workspace to use."
                }
            },
            "endpointResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the data collection endpoint to use."
                }
            },
            "tableName": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the name of the table in the workspace."
                }
            },
            "consumerGroup": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the consumer group of event hub."
                },
                "defaultValue": "$Default"
            }
        },
        "resources": [
            {
                "type": "Microsoft.Insights/dataCollectionRules",
                "name": "[parameters('dataCollectionRuleName')]",
                "location": "[resourceGroup().location]", 
                "apiVersion": "2022-06-01",
                "identity": {
                                 "type": "systemAssigned"
                  },
                "properties": {
                    "dataCollectionEndpointId": "[parameters('endpointResourceId')]",
                    "streamDeclarations": {
                        "Custom-MyEventHubStream": {
                            "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "datetime"
                    },
                    {
                        "name": "RawData",
                        "type": "string"
                    },
                    {
                        "name": "Properties",
                        "type": "dynamic"
                    }
                ]
                        }
                    },
                    "dataSources": {
                        "dataImports": {
                             "eventHub": {
                                        "consumerGroup": "[parameters('consumerGroup')]",
                                        "stream": "Custom-MyEventHubStream",
                                        "name": "myEventHubDataSource1"
                                                              }
                                               }
                   },
                    "destinations": {
                        "logAnalytics": [
                            {
                                "workspaceResourceId": "[parameters('workspaceResourceId')]",
                                "name": "MyDestination"
                            }
                        ]
                    },
                    "dataFlows": [
                        {
                            "streams": [
                                "Custom-MyEventHubStream"
                            ],
                            "destinations": [
                                "MyDestination"
                            ],
                            "transformKql": "source",
                            "outputStream": "[concat('Custom-', parameters('tableName'))]"
                        }
                    ]
                }
            }
        ]
    }
    
  4. En la pantalla Implementación personalizada, especifique una Suscripción y un Grupo de recursos para almacenar la regla de recopilación de datos y, a continuación, proporcione valores para los parámetros definidos en la plantilla, incluidos:

    • Región: región para la regla de recopilación de datos. Se rellena automáticamente en función del grupo de recursos seleccionado.
    • Nombre de la regla de recopilación de datos: asigne un nombre a la regla.
    • Id. de recurso del área de trabajo: consulte Recopilación de información obligatoria.
    • Id. de recurso de punto de conexión: se genera al crear el punto de conexión de recopilación de datos.
    • Nombre de la tabla - El nombre de la tabla de destino. En nuestro ejemplo, y siempre que utilice una tabla personalizada, el nombre de la tabla debe terminar con el sufijo _CL. Si ingiere datos a una tabla Azure, introduzca el nombre de la tabla, por ejemplo, Syslog - sin el sufijo.
    • Grupo de consumidores: de manera predeterminada, el grupo de consumidores se establece en $Default. Si es necesario, cambie el valor a otro grupo de consumidores del centro de eventos.

    Captura de pantalla que muestra la pantalla de implementación de plantillas personalizadas con los valores de implementación para la regla de recopilación de datos configurada en este tutorial.

  5. Seleccione Revisar y crear y, a continuación, Crear cuando revise los detalles.

  6. Una vez completada la implementación, expanda el cuadro Detalles de la implementación y seleccione la regla de recopilación de datos para ver sus detalles. Seleccione Vista JSON.

    Captura de pantalla que muestra la pantalla Información general de reglas de recopilación de datos.

  7. Copie el identificador de recurso de la regla de recopilación de datos. Utilizará esta información en el siguiente paso.

    Captura de pantalla que muestra la vista JSON de la regla de recopilación de datos.

Configurar la identidad administrada asignada por el usuario (opcional)

Para configurar su regla de recopilación de datos para que admita identidad asignada por el usuario, en el ejemplo anterior, reemplace:

    "identity": {
                        "type": "systemAssigned"
        },

Por:

    "identity": {
            "type": "userAssigned",
            "userAssignedIdentities": {
                "<identity_resource_Id>": {
                }
            }
        },

Para encontrar el valor <identity_resource_Id>, vaya a su recurso de identidad administrada asignada por el usuario en el Azure Portal, seleccione JSON para abrir la pantalla Resource JSON y copie el ID de recurso de la identidad administrada.

Captura de pantalla que muestra la pantalla Resource JSON con el Id. de recurso de la identidad administrada resaltado.

Ingesta de datos de registro en una tabla Azure (opcional)

Para ingerir datos en una tabla Azure soportada:

  1. En la regla de recopilación de datos, cambie outputStream:

    De: "outputStream": "[concat('Custom-', parameters('tableName'))]"

    Para: "outputStream": "outputStream": "[concat(Microsoft-', parameters('tableName'))]"

  2. En transformKql, defina una transformación que envíe los datos ingeridos a las columnas de destino en la tabla Azure de destino.

Conceda el permiso del centro de eventos a la regla de recopilación de datos

Con identidad administrada, puede conceder a cualquier centro de eventos, o espacio de nombres de centros de eventos, permiso para enviar eventos a la regla de recopilación de datos y al punto de conexión de recopilación de datos que ha creado. Cuando se conceden los permisos al espacio de nombres Event Hubs, todos los centros de eventos dentro del espacio de nombres heredan los permisos.

  1. Desde el centro de eventos o el espacio de nombres de centros de eventos en el Azure Portal, seleccione Control de acceso (IAM)>Añadir asignación de funciones.

    Captura de pantalla que muestra la pantalla de Control de acceso para la regla de recopilación de datos.

  2. Seleccione Azure Event Hubs Data Receiver y seleccione Siguiente.

    Captura de pantalla que muestra la pantalla Agregar asignación de funciones para el centro de eventos con el rol Receptor de datos de Azure Event Hubs resaltado.

  3. Seleccione Identidad administrada para Asignar acceso a y haga clic en Seleccionar miembros. Seleccione Regla de recopilación de datos, busque la regla de recopilación de datos por nombre y haga clic en Seleccionar.

    Captura de pantalla que muestra cómo asignar acceso a la identidad administrada.

  4. Seleccione Revisar + asignar y verifique los detalles antes de guardar la asignación de roles.

    Captura de pantalla que muestra la ficha Revisar y asignar de la pantalla Agregar asignación de roles.

Asociar la regla de recopilación de datos con el centro de eventos

El paso final es asociar la regla de recopilación de datos al centro de eventos desde el que desea recopilar eventos.

Puede asociar una única regla de recopilación de datos con varios centros de eventos que compartan el mismo grupo de consumidores e ingieran datos en el mismo flujo. Como alternativa, puede asignar una única regla de recopilación de datos a cada centro de eventos.

Importante

Debe asociar al menos una regla de recopilación de datos al centro de eventos para ingerir datos de un centro de eventos. Cuando elimine todas las asociaciones de reglas de recopilación de datos relacionadas con el centro de eventos, dejará de ingerir datos del centro de eventos.

Para crear una asociación de regla de recopilación de datos en el Azure Portal:

  1. En el cuadro de búsqueda de Azure Portal, escriba plantilla y, a continuación, seleccione Implementar una plantilla personalizada.

  2. Seleccione Cree su propia plantilla en el editor.

  3. Pegue la plantilla del Administrador de recursos que aparece a continuación en el editor y, a continuación, seleccione Guardar.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "eventHubResourceID": {
          "type": "string",
          "metadata": {
            "description": "Specifies the Azure resource ID of the event hub to use."
          }
        },
        "associationName": {
          "type": "string",
          "metadata": {
            "description": "The name of the association."
          }
        },
        "dataCollectionRuleID": {
          "type": "string",
          "metadata": {
            "description": "The resource ID of the data collection rule."
          }
        }
      },
      "resources": [
        {
          "type": "Microsoft.Insights/dataCollectionRuleAssociations",
          "apiVersion": "2021-09-01-preview",
          "scope": "[parameters('eventHubResourceId')]",
          "name": "[parameters('associationName')]",
          "properties": {
            "description": "Association of data collection rule. Deleting this association will break the data collection for this event hub.",
            "dataCollectionRuleId": "[parameters('dataCollectionRuleId')]"
          }
        }
      ]
    }
    
  4. En la pantalla Implementación personalizada, especifique una Suscripción y un Grupo de recursos para almacenar la asociación de reglas de recopilación de datos y, a continuación, proporcione valores para los parámetros definidos en la plantilla, incluidos:

    Captura de pantalla que muestra la pantalla de implementación de plantillas personalizadas con los valores de implementación para la asociación de regla de recopilación de datos configurada en este tutorial.

  5. Seleccione Revisar y crear y, a continuación, Crear cuando revise los detalles.

Compruebe su tabla de destino para los eventos ingestados

Los registros de Azure Monitor ingieren todos los eventos que existen en el Centro de eventos en el momento de la creación del DCRA, siempre que su período de retención no haya expirado, así como todos los eventos nuevos.

Para comprobar si hay eventos ingestados en su tabla de destino:

  1. Vaya a su área de trabajo y seleccione Registros.

  2. Escriba una consulta simple en el editor de consultas y seleccione Ejecutar:

    <table_name>
    

    Debería ver los eventos de su centro de eventos.

Captura de pantalla que muestra los resultados de una consulta simple en una tabla personalizada. Los resultados consisten en eventos ingestados desde un centro de eventos.

Limpieza de recursos

En este tutorial, ha creado los siguientes recursos:

  • Tabla personalizada
  • Punto de conexión de recopilación de datos
  • Regla de recopilación de datos
  • Asociación de reglas de recopilación de datos.

Evaluación de la necesidad de estos recursos. Eliminar los recursos que no necesita individualmente, o eliminar todos estos recursos a la vez eliminando el grupo de recursos. Los recursos que deje en ejecución pueden suponer costos.

Para dejar de ingerir datos del centro de eventos, elimine todas las asociaciones de reglas de recopilación de datos relacionadas con el centro de eventos, o elimine las propias reglas de recopilación de datos. Estas acciones también restablecen el punto de comprobación del centro de eventos.

Problemas y limitaciones conocidos

Pasos siguientes

Más información sobre: