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
  • Concesión de 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

Nota:

Aunque se puede crear una regla de recopilación de datos (DCR) y una tabla de destino en Azure Log Analytics a través de Azure Portal, la ingesta de eventos de Azure Event Hubs en los registros de Azure Monitor requiere una plantilla de implementación o la API de DCR. Esto se debe a que DCR debe incluir una sintaxis específica que no se admite en la interfaz del portal.

Requisitos previos

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

Regiones compatibles

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 siguientes pasos, necesitará su ID de suscripción, nombre del grupo de recursos, nombre del espacio de trabajo, ID del recurso del espacio de trabajo e ID del recurso de la instancia del 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. Necesita 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. Necesita el identificador 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. Necesita el ID de recurso de la instancia del hub de eventos para asociar la regla de recopilación de datos al hub 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 de PowerShell para crear la tabla, proporcione el nombre de tabla (<table_name>) en json (con sufijo _CL para una tabla personalizada) y establezca los <subscription_id>valores , <resource_group_name>, <workspace_name>, <table_name>y <api_version> en el Invoke-AzRestMethod -Path comando :

    $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."
                    }
                ]
            }
        }
    }
    '@
    
    $restMethodParams = @{
        Path    = "/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/microsoft.operationalinsights/workspaces/<workspace_name>/tables/<table_name>?api-version=<api_version>"
        Method  = "PUT"
        Payload = $tableParams}
    
    Invoke-AzRestMethod @restMethodParams
    

Importante

  • Los nombres de las columnas deben comenzar con una letra y pueden consistir en hasta 45 caracteres alfanuméricos y subrayados (_).
  • _ResourceId, id, _SubscriptionId, TenantId, Type, UniqueIdy Title son nombres de columna reservados.
  • Los nombres de columna distinguen mayúsculas de minúsculas. Asegúrese de usar el caso correcto en la regla de recopilación de datos.

Nota:

Para obtener más información sobre las versiones de API admitidas actualmente, consulte Registro de cambios de versión de API para la implementación de Microsoft.OperationalInsights/workspaces/tables.

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 conexión de recopilación de datos en la misma región que el espacio de trabajo de Log Analytics.

  2. En la pantalla de resumen del punto final 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. Esta información se usa en el paso siguiente.

    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 siguiente plantilla de Resource Manager en el editor y seleccione Guardar.

    Captura de pantalla para editar la plantilla de Resource Manager.

    Observe los detalles siguientes en la 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: Identificador 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 Leer eventos.
      • Properties: Propiedades de usuario del evento. Para obtener más información, consulte Leer 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 ingerir en una tabla de 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 y source, esto no modifica de ninguna manera los datos del origen, ya que estamos mapeando los datos entrantes a una tabla personalizada creada 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 datos necesarios.
    • 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 de resumen de las reglas de recopilación de datos.

  7. Copie el identificador de recurso de la regla de recopilación de datos. Esta información se usa en el paso siguiente.

    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 la regla de recopilación de datos para admitir la identidad asignada por el usuario, en la plantilla de DCR, reemplace:

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

Con:

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

Para encontrar el <identity_resource_Id> valor, navegue hasta su recurso de identidad administrada asignada por el usuario en el portal de Azure, seleccione JSON para abrir la pantalla JSON del recurso y copie el ID de recurso de la identidad administrada.

Recorte de pantalla que muestra la pantalla JSON del recurso con el identificador de recurso de 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:

    Desde: "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.

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

Con identidad administrada, puede conceder cualquier centro de eventos o espacio de nombres de Event Hubs, permiso para enviar eventos a la regla de recopilación de datos y al punto de conexión de recopilación de datos que creó. 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.

    Recorte de pantalla que muestra la pantalla Agregar asignación de roles 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.

    Recorte de pantalla que muestra la pestaña 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. Al eliminar 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 reglas de recopilación de datos en 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 siguiente plantilla de Resource Manager en el editor y 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.

Comprobación de la tabla de destino para ver los eventos ingeridos

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 la tabla de destino para ver los eventos ingeridos:

  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 eventos del 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 para la recopilación de datos.

Evalúa si todavía necesitas 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 deja en ejecución pueden costar dinero.

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 hub de eventos.

Problemas y limitaciones conocidos

Pasos siguientes

Más información acerca de: