Compartir por


Tutorial: Incorporación de una transformación en la regla de recopilación de datos del área de trabajo a Azure Monitor mediante plantillas de Resource Manager

Este tutorial le guía a través de la configuración de una transformación en una regla de recopilación de datos del área de trabajo de ejemplo mediante plantillas de Resource Manager. Las transformaciones en Azure Monitor permiten filtrar o modificar los datos entrantes antes de enviarlos a su destino. Las transformaciones del área de trabajo admiten transformaciones en tiempo de ingesta para los flujos de trabajo que aún no usan la canalización de ingesta de datos de Azure Monitor.

Las transformaciones del área de trabajo se almacenan juntas en una sola regla de recopilación de datos (DCR) para el área de trabajo, denominada DCR del área de trabajo. Cada transformación está asociada a una tabla determinada. La transformación se aplica a todos los datos enviados a esta tabla desde cualquier flujo de trabajo que no use una DCR.

Nota

En este tutorial se usan plantillas de Resource Manager y la API de REST para configurar una transformación del área de trabajo. Consulte Tutorial: Incorporación de una transformación en la regla de recopilación de datos del área de trabajo a Azure Monitor mediante Azure Portal para ver el mismo tutorial pero con Azure Portal.

En este tutorial, aprenderá a:

  • Configure la transformación del área de trabajo para una tabla en un área de trabajo de Log Analytics.
  • Escriba una consulta de registro para una transformación de tiempo de ingesta.

Nota

En este tutorial se usa PowerShell de Azure Cloud Shell para realizar llamadas API REST mediante la API Tables de Azure Monitor y Azure Portal para instalar plantillas de Resource Manager. Puede usar cualquier otro método para realizar estas llamadas.

Requisitos previos

Para completar este tutorial, necesita lo siguiente:

Información general del tutorial

En este tutorial, reducirá el requisito de almacenamiento de la tabla LAQueryLogs mediante el filtrado de determinados registros. También eliminará el contenido de una columna mientras analiza los datos de la columna para almacenar un fragmento de datos en una columna personalizada. La tabla LAQueryLogs se crea al habilitar la auditoría de consultas de registro en un área de trabajo, pero esta solo se usa como ejemplo para el tutorial. Puede usar este mismo proceso básico para crear una transformación para cualquier tabla admitida de un área de trabajo de Log Analytics.

Habilitación de los registros de auditoría de consulta

Debe habilitar la auditoría de consultas del área de trabajo para crear la tabla LAQueryLogs con la que va a trabajar. Esto no es necesario para todas las transformaciones de tiempo de ingesta. Solo es para generar los datos de ejemplo que usará esta transformación de ejemplo.

  1. En el menú Áreas de trabajo de Log Analytics de Azure Portal, seleccione Configuración de diagnóstico y, a continuación, Agregar configuración de diagnóstico.

    Captura de pantalla de la configuración de diagnóstico.

  2. Proporcione un nombre para la configuración de diagnóstico y seleccione el área de trabajo para que los datos de auditoría se almacenen en la misma área de trabajo. Seleccione la categoría Auditoría y haga clic en Guardar para guardar la configuración de diagnóstico y cerrar la página de configuración de diagnóstico.

    Captura de pantalla de la nueva configuración de diagnóstico.

  3. Seleccione Registros y ejecute algunas consultas para rellenar LAQueryLogs con algunos datos. Estas consultas no necesitan devolver realmente ningún dato.

    Captura de pantalla de consultas de registro de ejemplo.

Actualización de esquema de tabla

Para poder crear la transformación, se deben realizar los dos cambios siguientes en la tabla:

  • La tabla debe estar habilitada para la transformación del área de trabajo. Esto es necesario para cualquier tabla que tenga una transformación, incluso si esta no modifica el esquema de la tabla.
  • Las columnas adicionales que rellena la transformación deben agregarse a la tabla.

Use Tables - Update API para configurar la tabla con el código de PowerShell siguiente. Llamar a la API habilita la tabla para transformaciones del área de trabajo, independientemente de si se definen o no columnas personalizadas. En este ejemplo, se incluye una columna personalizada denominada Resources_CF que se rellenará con la consulta de transformación.

Importante

Las columnas personalizadas agregadas a una tabla integrada deben terminar en _CF. Las columnas agregadas a una tabla personalizada (una tabla con un nombre que termina en _CL) no necesitan tener este sufijo.

  1. Haga clic en Cloud Shell en Azure Portal y asegúrese de que el entorno esté establecido en PowerShell.

    Captura de pantalla de la apertura de Cloud Shell.

  2. Copie el siguiente código de PowerShell y reemplace el parámetro Path por los detalles del área de trabajo.

    $tableParams = @'
    {
        "properties": {
            "schema": {
                "name": "LAQueryLogs",
                "columns": [
                    {
                        "name": "Resources_CF",
                        "description": "The list of resources, this query ran against",
                        "type": "string",
                        "isDefaultDisplay": true,
                        "isHidden": false
                    }
                ]
            }
        }
    }
    '@
    
    Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/LAQueryLogs?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
    
  3. Pegue el código en el símbolo del sistema de Cloud Shell para ejecutarlo.

    Captura de pantalla de un script en Cloud Shell.

  4. Para comprobar que la columna se ha agregado, vaya al menú Área de trabajo de Log Analytics en Azure Portal. Seleccione Registros para que se abra Log Analytics y expanda la tabla LAQueryLogs para ver sus columnas.

    Captura de pantalla de Log Analytics con la columna nueva.

Definición de la consulta de transformación

Use Log Analytics para probar la consulta de transformación antes de agregarla a una regla de recopilación de datos.

  1. Abra el área de trabajo en el menú Áreas de trabajo de Log Analytics de Azure Portal y seleccione Registros para abrir Log Analytics.

  2. Ejecute la consulta siguiente para ver el contenido de la tabla LAQueryLogs. Observe el contenido de la columna RequestContext. La transformación recuperará el nombre del área de trabajo de esta columna y eliminará el resto de los datos que contiene.

    LAQueryLogs
    | take 10
    

    Captura de pantalla de la consulta inicial en Log Analytics.

  3. Modifique la consulta a la siguiente:

    LAQueryLogs
    | where QueryText !contains 'LAQueryLogs'
    | extend Context = parse_json(RequestContext)
    | extend Workspace_CF = tostring(Context['workspaces'][0])
    | project-away RequestContext, Context
    

    Esto realiza los cambios siguientes:

    • Elimine las filas relacionadas con las consultas de la propia tabla LAQueryLogs para ahorrar espacio, ya que estas entradas de registro no son útiles.
    • Agregue una columna al nombre del área de trabajo que se ha consultado.
    • Elimine los datos de la columna RequestContext para ahorrar espacio.

    Captura de pantalla de la consulta modificada en Log Analytics.

  4. Realice los siguientes cambios en la consulta para usarla en la transformación:

    • En lugar de especificar un nombre de tabla (LAQueryLogs en este caso) como origen de datos de esta consulta, use la palabra clave source. Se trata de una tabla virtual que siempre representa los datos entrantes de una consulta de transformación.
    • Elimine los operadores que no sean compatibles con las consultas de transformación. Consulte Características de KQL admitidas para obtener una lista detallada de los operadores admitidos.
    • Adapte la consulta a una sola línea para que pueda caber en el JSON de la regla de recopilación de datos.

    A continuación se muestra la consulta que usará en la transformación después de estas modificaciones:

    source | where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''
    

Creación de una regla de recopilación de datos (DCR)

Puesto que esta es la primera transformación del área de trabajo, debe crear una regla de recopilación de datos de transformación del área de trabajo. Si crea transformaciones del área de trabajo para otras tablas de la misma área de trabajo, deben almacenarse en esta misma regla de recopilación de datos.

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

    Captura de pantalla para implementar la plantilla personalizada.

  2. Haga clic en Cree su propia plantilla en el editor.

    Captura de pantalla para crear una plantilla en el editor

  3. Pegue la plantilla de Resource Manager siguiente en el editor y, luego, haga clic en Guardar. Esta plantilla define la regla de recopilación de datos y contiene la consulta de transformación. No es necesario modificar esta plantilla, ya que recopilará valores para sus parámetros.

    Captura de pantalla para editar la plantilla de Resource Manager.

    {
        "$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."
                }
            },
            "location": {
                "type": "string",
                "defaultValue": "westus2",
                "allowedValues": [
                    "westus2",
                    "eastus2",
                    "eastus2euap"
                ],
                "metadata": {
                    "description": "Specifies the location in which to create the Data Collection Rule."
                }
            },
            "workspaceResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the Log Analytics workspace to use."
                }
            }
        },
        "resources": [
            {
                "type": "Microsoft.Insights/dataCollectionRules",
                "name": "[parameters('dataCollectionRuleName')]",
                "location": "[parameters('location')]",
                "apiVersion": "2021-09-01-preview",
                "kind": "WorkspaceTransforms",
                "properties": {
                    "destinations": {
                        "logAnalytics": [
                            {
                                "workspaceResourceId": "[parameters('workspaceResourceId')]",
                                "name": "clv2ws1"
                            }
                        ]
                    },
                    "dataFlows": [
                        {
                            "streams": [
                                "Microsoft-Table-LAQueryLogs"
                            ],
                            "destinations": [
                                "clv2ws1"
                            ],
                            "transformKql": "source |where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''"
                        }
                    ]
                }
            }
        ],
        "outputs": {
            "dataCollectionRuleId": {
                "type": "string",
                "value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
            }
        }
    }
    
  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 los valores definidos en la plantilla. Esto incluye un nombre para la regla de recopilación de datos y el identificador de recurso del área de trabajo que recopiló en un paso anterior. La ubicación debe ser la misma que la del área de trabajo. La región ya aparecerá rellenada y se usará como ubicación de la regla de recopilación de datos.

    Captura de pantalla para editar los valores de implementación personalizados.

  5. Haga clic en Revisar y crear y, a continuación, en Crear cuando revise los detalles.

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

    Captura de pantalla de detalles de la regla de recopilación de datos.

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

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

El último paso para habilitar la transformación es vincular la regla de recopilación de datos al área de trabajo.

Importante

Un área de trabajo solo se puede conectar a una única regla de recopilación de datos y la regla vinculada debe contener esta área de trabajo como destino.

Use Workspaces - Update API para configurar la tabla con el siguiente código de PowerShell.

  1. Haga clic en el botón Cloud Shell para volver a abrir Cloud Shell. Copie el siguiente código de PowerShell y reemplace los parámetros por los valores del área de trabajo y la regla de recopilación de datos.

    $defaultDcrParams = @'
    {
        "properties": {
            "defaultDataCollectionRuleResourceId": "/subscriptions/{subscription}/resourceGroups/{resourcegroup}/providers/Microsoft.Insights/dataCollectionRules/{DCR}"
        }
    }
    '@
    
    Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}?api-version=2021-12-01-preview" -Method PATCH -payload $defaultDcrParams
    
  2. Pegue el código en el símbolo del sistema de Cloud Shell para ejecutarlo.

    Captura de pantalla del script para vincular el área de trabajo a la DCR.

Transformación de pruebas

Espere unos 30 minutos para que la transformación surta efecto y, a continuación, puede probarla ejecutando una consulta en la tabla. Solo se verán afectados los datos que se envíen a la tabla después de aplicar la transformación.

Para este tutorial, ejecute algunas consultas de ejemplo para enviar datos a la tabla LAQueryLogs. Incluya algunas consultas en LAQueryLogs para que pueda comprobar que la transformación filtra estos registros. Observe que la salida tiene la nueva columna Workspace_CF y que no hay registros para LAQueryLogs.

Solución de problemas

En esta sección se describen las distintas condiciones de error que puede recibir y cómo corregirlas.

IntelliSense en Log Analytics no reconoce las columnas nuevas de la tabla.

La memoria caché que dirige IntelliSense puede tardar hasta 24 horas en actualizarse.

La transformación en una columna dinámica no funciona.

Actualmente hay un problema conocido que afecta a las columnas dinámicas. Una solución temporal consiste en analizar explícitamente los datos de columnas dinámicas mediante parse_json() antes de realizar cualquier operación en ellas.

Pasos siguientes