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, todos en la misma región:

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

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.

    Screenshot showing Log Analytics workspace overview screen with subscription ID, resource group name, and workspace name highlighted.

  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.

    Screenshot showing the Resource JSON screen with the workspace resource ID highlighted.

  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.

    Screenshot showing the Resource JSON screen with the event hub resource ID highlighted.

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.

    Screenshot showing how to open 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.

    Screenshot that shows the data collection endpoint Overview screen.

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

    Screenshot that shows the data collection endpoint JSON view.

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.

    Screenshot to deploy custom template.

  2. Seleccione Cree su propia plantilla en el editor.

    Screenshot to build template in the editor.

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

    Screenshot to edit Resource Manager template.

    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.

    Screenshot showing the Custom Template Deployment screen with the deployment values for the data collection rule set up in this 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.

    Screenshot that shows the Data Collection Rule Overview screen.

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

    Screenshot that shows the data collection rule JSON view.

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.

Screenshot showing Resource JSON screen with the managed identity resource ID highlighted.

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.

    Screenshot that shows the Access control screen for the data collection rule.

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

    Screenshot that shows the Add Role Assignment screen for the event hub with the Azure Event Hubs Data Receiver role highlighted.

  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.

    Screenshot that shows how to assign access to managed identity.

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

    Screenshot that shows the Review and Assign tab of the Add Role Assignment screen.

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:

    Screenshot showing the Custom Template Deployment screen with the deployment values for the data collection rule association set up in this tutorial.

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

Compruebe su tabla de destino para los eventos ingestados

Ahora que ha asociado la regla de recopilación de datos con su centro de eventos, los registros de Azure Monitor ingestarán todos los eventos existentes cuyo período de retención no haya caducado y 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.

Screenshot showing the results of a simple query on a custom table. The results consist of events ingested from an event hub.

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: