Compartir vía


Recopilación de registros de un archivo de texto con el agente de Azure Monitor

Los registros de texto personalizados son una de las fuentes de datos utilizadas en una regla de recopilación de datos (DCR). Los detalles para la creación de la DCR se proporcionan en Recopilación de datos con el agente de Azure Monitor. En este artículo se proporcionan detalles adicionales para el tipo de registros de texto.

Muchas aplicaciones y servicios registrarán información en archivos de texto en lugar de servicios de registro estándar, como registro de eventos de Windows o Syslog. Estos datos pueden recopilarse con el agente Azure Monitor y almacenarse en un área de trabajo de Log Analytics con datos recopilados de otras fuentes.

Requisitos previos

Funcionamiento básico

En el diagrama siguiente se muestra la operación básica de recopilar datos de registro de un archivo de texto.

  1. El agente busca los archivos de registro que coincidan con un patrón de nombre especificado en el disco local.
  2. Cada entrada del registro se recopila y se envía a Azure Monitor. La secuencia recibida incluye toda la entrada de registro en una sola columna.
  3. Si se usa la transformación predeterminada, toda la entrada de registro se envía a una sola columna de la tabla de destino.
  4. Si se usa una transformación personalizada, la entrada de registro se puede analizar en varias columnas de la tabla de destino.

Diagrama que muestra la colección de un registro de texto por el agente de Azure Monitor, que muestra una colección simple y una transformación para un archivo delimitado por comas.

Requisitos y procedimientos recomendados de archivos de texto

El archivo que el agente de Azure Monitor está supervisando debe cumplir los siguientes requisitos:

  • El archivo debe almacenarse en la unidad local de la máquina con el agente de Azure Monitor en el directorio que se está supervisando.
  • Cada registro debe delimitarse con un final de línea.
  • El archivo debe usar la codificación ASCII o UTF-8. No se admiten otros formatos, como UTF-16.
  • Los nuevos registros deben anexarse al final del archivo y no sobrescribir los registros antiguos. La sobrescritura provocará la pérdida de datos.

Siga las siguientes recomendaciones para asegurarse de que no experimenta problemas de pérdida de datos o rendimiento:

  • Cree un nuevo archivo de registro todos los días para que pueda limpiar fácilmente los archivos antiguos.
  • Limpie continuamente los archivos de registro en el directorio supervisado. El seguimiento de muchos archivos de registro podría impulsar el uso de memoria y CPU del agente. Espere al menos 2 días para permitir un tiempo suficiente para que se procesen todos los registros.
  • No cambie el nombre de un archivo que coincida con el patrón de examen de archivos por otro nombre que también coincida con el patrón de examen de archivos. Esto hará que se ingieren datos duplicados.
  • No cambie el nombre ni copie archivos de registro grandes que coincidan con el patrón de examen de archivos en el directorio supervisado. Si fuera necesario, no supere los 50 MB por minuto.

Flujo de entrada

Nota:

La compatibilidad con varias líneas que usa una marca de tiempo para eventos delimitados ya está disponible. Debe usar una implementación de plantilla de administración de recursos hasta que se agregue compatibilidad en la interfaz de usuario del portal.

El flujo de datos recibido incluye las columnas de la siguiente tabla.

Columna Type Descripción
TimeGenerated datetime Hora a la que se generó el registro. Este valor se rellenará automáticamente con la hora en que se agrega el registro al área de trabajo de Log Analytics. Puede invalidar este valor mediante una transformación para establecer TimeGenerated en otro valor.
RawData string Toda la entrada de registro en una sola columna. Puede usar una transformación si desea dividir estos datos en varias columnas antes de enviarlos a la tabla.
FilePath string Si agrega esta columna a la secuencia recibida en el DCR, se rellenará con la ruta de acceso al archivo de registro. Esta columna no se crea automáticamente y no se puede agregar mediante el portal. Debe modificar manualmente el DCR creado por el portal o crear el DCR mediante otro método, donde puede definir explícitamente la secuencia recibida.
Computer string Si agrega esta columna a la secuencia de entrada en el DCR, se rellenará con el nombre del equipo que tiene el archivo de registro. Esta columna no se crea automáticamente y no se puede agregar mediante el portal. Debe modificar manualmente el DCR creado por el portal o crear el DCR mediante otro método, donde puede definir explícitamente la secuencia recibida.

Tabla personalizada

Para poder recopilar datos de registro de un archivo de texto, debe crear una tabla personalizada en el área de trabajo de Log Analytics para recibir los datos. El esquema de tabla debe coincidir con los datos que está recopilando o debe agregar una transformación para asegurarse de que el esquema de salida coincide con la tabla.

Advertencia

Para evitar la pérdida de datos, es importante que no use una tabla de registro personalizada existente que los agentes de MMA estén usando actualmente. Una vez que cualquier agente AMA escribe en una tabla de registro personalizada existente, los agentes de MMA ya no podrán escribir en esa tabla. En su lugar, debe crear una nueva tabla específicamente para los agentes AMA para garantizar una transición sin problemas de un agente a otro.

Por ejemplo, puede usar el siguiente script de PowerShell para crear una tabla personalizada con RawData, FilePath y Computer. No necesitaría una transformación para esta tabla porque el esquema coincide con el esquema predeterminado de la secuencia recibida.

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "DateTime"
                    }, 
                    {
                        "name": "RawData",
                        "type": "String"
                    },
                    {
                        "name": "FilePath",
                        "type": "String"
                    },
                    {
                        "name": "Computer",
                        "type": "String"
                    }
              ]
        }
    }
}
'@

Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams

Crear una regla de recopilación de datos para un archivo de texto

Cree una regla de recopilación de datos, como se describe en Recopilar datos con el agente de Azure Monitor. En el paso Recopilar y entregar, seleccione Registros de texto personalizados en la lista desplegable Tipo de origen de datos.

Configuración Descripción
Patrón de archivo Identifica la ubicación y el nombre de los archivos de registro en el disco local. Use un carácter comodín para los nombres de archivo que varían, por ejemplo, cuando se crea un nuevo archivo cada día con un nombre nuevo. Puede escribir varios patrones de archivo separados por comas.

Ejemplos:
- C:\Logs\MyLog.txt
- C:\Logs\MyLog*.txt
- C:\App01\AppLog.txt, C:\App02\AppLog.txt
- /var/mylog.log
- /var/mylog*.log
Nombre de tabla Nombre de la tabla de destino en el área de trabajo de Log Analytics.
Delimitador de registros Actualmente no se usa, pero está reservado para uso potencial futuro, lo que permite delimitadores distintos del final de línea admitido actualmente (/r/n).
Transformación Transformación en tiempo de ingesta para filtrar registros o dar formato a los datos recibidos para la tabla de destino. Use source para dejar los datos entrantes sin cambios.

Archivos de registro delimitados

Muchos archivos de registro de texto tienen entradas que están delimitadas por un carácter como una coma. Para analizar estos datos en columnas independientes, use una transformación con la función dividir.

Por ejemplo, considere un archivo de texto con los siguientes datos delimitados por comas. Estos campos se pueden describir como: Time, Code, Severity,Module y Message.

2024-06-21 19:17:34,1423,Error,Sales,Unable to connect to pricing service.
2024-06-21 19:18:23,1420,Information,Sales,Pricing service connection established.
2024-06-21 21:45:13,2011,Warning,Procurement,Module failed and was restarted.
2024-06-21 23:53:31,4100,Information,Data,Nightly backup complete.

La siguiente transformación analiza los datos en columnas independientes. Dado que split devuelve datos dinámicos, debe usar funciones como tostring y toint para convertir los datos en el tipo escalar correcto. También debe proporcionar un nombre para cada entrada que coincida con el nombre de columna de la tabla de destino. Tenga en cuenta que en este ejemplo se proporciona un valor TimeGenerated. Si no se proporcionó, se usaría el tiempo de ingesta.

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])

Captura de pantalla que muestra la configuración de la colección de archivos delimitada por comas.

La recuperación de estos datos con una consulta de registro devolvería los siguientes resultados.

Captura de pantalla que muestra la consulta de registro que devuelve los resultados de la colección de archivos delimitada por comas.

Solución de problemas

Siga los pasos siguientes si no recopila datos del registro de texto que espera.

  • Compruebe que los datos se escriben en el archivo de registro que se recopila.
  • Compruebe que el nombre y la ubicación del archivo de registro coinciden con el patrón de archivo especificado.
  • Compruebe que el esquema de la tabla de destino coincide con la secuencia recibida o que tiene una transformación que convertirá la secuencia recibida en el esquema correcto.
  • Consulte Comprobación de la operación para comprobar si el agente está operativo y se reciben datos.

Pasos siguientes

Más información sobre: