Compartir a través de


Transformaciones de ejemplo en Azure Monitor

Las transformaciones en Azure Monitor le permiten filtrar o modificar los datos entrantes antes de que se envíen a un área de trabajo de Log Analytics. En este artículo se proporcionan consultas de ejemplo para escenarios comunes que puede usar para empezar a crear sus propias transformaciones. Consulte Crear una transformación en Azure Monitor para obtener más información sobre cómo probar estas transformaciones y agregarlas a una regla de recopilación de datos (DCR).

Reducción de los costos de datos

Puesto que se le cobra el costo de ingesta de los datos enviados a un área de trabajo de Log Analytics, para reducirlo, se recomienda filtrar los datos que no necesite.

Filtrar filas de datos

Use una instrucción where para filtrar los datos entrantes que coincidan con determinados requisitos. Si el registro entrante no coincide con la instrucción, el registro no se envía al destino. En el siguiente ejemplo, solo se recopilan los registros con una gravedad de Critical.

source | where severity == "Critical" 

Filtrar columnas de datos

Quite las columnas del origen de datos que no son necesarias para ahorrar en los costos de ingesta de datos. Use una instrucción project para especificar las columnas de la salida o use project-away para especificar solo las columnas que se van a quitar. En el ejemplo siguiente, la columna RawData se quita de la salida.

source | project-away RawData

Análisis de datos importantes de una columna

Es posible que tenga una columna con datos importantes enterrados en texto excesivo. Mantenga solo los datos valiosos y quite el texto que no es necesario. Use funciones de cadena como substring y extract para analizar los datos que desee. También puede analizar los datos mediante parse o split para interrumpir una sola columna en varios valores y seleccionar la que desee. A continuación, use extend para crear una nueva columna con los datos analizados y project-away para quitar la columna original.

Advertencia

Consulte Dividir comandos de análisis grandes para obtener sugerencias sobre el uso de comandos de análisis complejos.

En el ejemplo siguiente, la columna RequestContext contiene JSON con el ResourceId del área de trabajo. Las funciones parse_json y split se usan para extraer el nombre simple del área de trabajo. Se crea una nueva columna para este valor y se quitan las demás columnas.

source
| extend Context = parse_json(RequestContext)
| extend Workspace_CF = tostring(Context['workspaces'][0])
| extend WorkspaceName_CF = split(Workspace_CF,"/")[8]
| project-away RequestContext, Context, Workspace_CF

Envío de filas a registros básicos

Envíe filas de los datos que requieran funcionalidades de consulta básicas a tablas de registros básicas para un costo de ingesta menor. Consulte Envío de datos a varias tablas para obtener más información sobre cómo enviar datos a varias tablas.

Eliminación de datos confidenciales

Es posible que tenga un origen de datos que envía información que no quiera almacenar por motivos de privacidad o cumplimiento.

Filtre información confidencial

Use las mismas estrategias descritas en Reducir los costos de datos para filtrar filas completas o columnas concretas que contienen información confidencial. En el ejemplo siguiente, la columna ClientIP se quita de la salida.

source | project-away ClientIP

Ofusque información confidencial

Use funciones de cadena para reemplazar información como dígitos en una dirección IP o un número de teléfono por un carácter común. En el ejemplo siguiente se reemplaza el nombre de usuario en una dirección de correo electrónico por "*****".

source | extend Email = replace_string(Email,substring(Email,0,indexof(Email,"@")),"*****")

Enviar a una tabla alternativa

Envíe registros confidenciales a una tabla alternativa con una configuración de control de acceso basado en rol diferente. Consulte Envío de datos a varias tablas para obtener más información sobre cómo enviar datos a varias tablas.

Enriquecer datos

Use una transformación para agregar información a los datos que proporcionan contexto empresarial o simplifican la consulta de los datos más adelante. Use funciones de cadena para extraer información crítica de una columna y luego use la instrucción extend para agregar una nueva columna al origen de datos. En el siguiente ejemplo se agrega una columna que identifica si una dirección IP de otra columna es interna o externa.

source | extend IpLocation = iff(split(ClientIp,".")[0] in ("10","192"), "Internal", "External")

Dar formato a los datos de destino

Es posible que tenga un origen de datos que envíe datos en un formato que no coincida con la estructura de la tabla de destino. Use una transformación para volver a formatear los datos en el esquema necesario.

Modificar esquema

Use comandos como extend y project para modificar el esquema de los datos entrantes para que coincidan con la tabla de destino. En el ejemplo siguiente, se agrega una nueva columna denominada TimeGenerated a los datos salientes mediante una función KQL para devolver la hora actual.

source | extend TimeGenerated = now()

Análisis de datos

Use el operador split o parse para analizar los datos en varias columnas de la tabla de destino. En el ejemplo siguiente, los datos entrantes tienen una columna delimitada por comas denominada RawData que se divide en columnas individuales para la tabla de destino.

source 
| project d = split(RawData,",") 
| project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])

Advertencia

Consulte Dividir comandos de análisis grandes para obtener sugerencias sobre el uso de comandos de análisis complejos.

Pasos siguientes