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:
Área de trabajo de Log Analytics en la que tenga al menos derechos de colaborador.
Su área de trabajo de Log Analytics debe estar vinculada a un clúster dedicado o tener un nivel de compromiso.
Espacio de nombres de centros de eventos que permita el acceso público a la red. Si el acceso a la red pública está deshabilitado, asegúrese de que "Permitir que los servicios de Microsoft de confianza omitan este firewall" esté establecido en "Sí".
Centro de eventos con eventos. Puede enviar eventos a su centro de eventos mediante los pasos descritos en Tutoriales sobre envío y recepción de eventos en Azure Event Hubs o configurando los ajustes de diagnóstico de los recursos Azure.
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:
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.
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.
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.
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:
Seleccione el botón Cloud Shell y asegúrese de que el entorno está configurado como PowerShell.
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 comandoInvoke-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
yTitle
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:
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.
En la pantalla Información general del punto de conexión de recopilación de datos, seleccione Vista JSON.
Copie el identificador de recurso de la regla de recopilación de datos. Utilizará esta información en el siguiente paso.
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:
En el cuadro de búsqueda del portal, escriba plantilla y, a continuación, seleccione Implementar una plantilla personalizada.
Seleccione Cree su propia plantilla en el editor.
Pegue la plantilla del Administrador de recursos que aparece a continuación en el editor y, a continuación, seleccione Guardar.
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, establecemostransformKql
ensource
, 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'))]" } ] } } ] }
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.
Seleccione Revisar y crear y, a continuación, Crear cuando revise los detalles.
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.
Copie el identificador de recurso de la regla de recopilación de datos. Utilizará esta información en el siguiente paso.
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.
Ingesta de datos de registro en una tabla Azure (opcional)
Para ingerir datos en una tabla Azure soportada:
En la regla de recopilación de datos, cambie
outputStream
:De:
"outputStream": "[concat('Custom-', parameters('tableName'))]"
Para:
"outputStream": "outputStream": "[concat(Microsoft-', parameters('tableName'))]"
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.
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.
Seleccione Azure Event Hubs Data Receiver y seleccione Siguiente.
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.
Seleccione Revisar + asignar y verifique los detalles antes de guardar la 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:
En el cuadro de búsqueda de Azure Portal, escriba plantilla y, a continuación, seleccione Implementar una plantilla personalizada.
Seleccione Cree su propia plantilla en el editor.
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')]" } } ] }
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:
- Región: se rellena automáticamente en función del grupo de recursos seleccionado.
- Identificación del recurso de la instancia del centro de eventos: consulte Recopilación de información requerida.
- Nombre de la asociación: asigne un nombre a la asociación.
- Id. de regla de recopilación de datos: se genera al crear la regla de recopilación de datos.
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:
Vaya a su área de trabajo y seleccione Registros.
Escriba una consulta simple en el editor de consultas y seleccione Ejecutar:
<table_name>
Debería ver los eventos de su 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
- Si transfiere una suscripción entre directorios de Microsoft Entra, deberá seguir los pasos descritos en Problemas conocidos con identidades gestionadas para recursos Azure para continuar ingiriendo datos.
- Puede ingerir mensajes de hasta 64 KB desde Event Hubs a los registros de Azure Monitor.
Pasos siguientes
Más información sobre: