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:
- Área de trabajo de Log Analytics en la que tiene al menos derechos de colaborador.
- Permisos para crear objetos de regla de recopilación de datos en el área de trabajo.
- La tabla ya debe tener algunos datos.
- La tabla no puede estar ya vinculada a la DCR de transformación del área de trabajo.
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.
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.
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.
Seleccione Registros y ejecute algunas consultas para rellenar
LAQueryLogs
con algunos datos. Estas consultas no necesitan devolver realmente ningún dato.
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.
Haga clic en Cloud Shell en Azure Portal y asegúrese de que el entorno esté establecido en PowerShell.
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
Pegue el código en el símbolo del sistema de Cloud Shell para ejecutarlo.
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.
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.
Abra el área de trabajo en el menú Áreas de trabajo de Log Analytics de Azure Portal y seleccione Registros para abrir Log Analytics.
Ejecute la consulta siguiente para ver el contenido de la tabla
LAQueryLogs
. Observe el contenido de la columnaRequestContext
. 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
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.
- Elimine las filas relacionadas con las consultas de la propia tabla
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 clavesource
. 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 = ''
- En lugar de especificar un nombre de tabla (
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.
En el cuadro de búsqueda de Azure Portal, escriba plantilla y, a continuación, seleccione Implementar una plantilla personalizada.
Haga clic en Cree su propia plantilla en el editor.
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.
{ "$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'))]" } } }
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.
Haga clic en Revisar y crear y, a continuación, en Crear cuando revise los detalles.
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.
Copie el identificador de recurso de la regla de recopilación de datos. Usará esta información en el paso siguiente.
Vinculación del área de trabajo a 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.
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
Pegue el código en el símbolo del sistema de Cloud Shell para ejecutarlo.
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.