El parámetro log_processing_rules se utiliza en las configuraciones de la integración para personalizar la configuración de la recopilación de logs. Mientras que en la configuración principal del Agent, el parámetro processing_rules se utiliza para definir reglas de procesamiento generales.
Para enviar solo un subconjunto específico de logs a Datadog, utiliza el parámetro log_processing_rules en el archivo de configuración con el tipo exclude_at_match o include_at_match.
logs:- type:filepath:/my/test/file.logservice:cardpaymentsource:javalog_processing_rules:- type:exclude_at_matchname:exclude_datadoghq_users## Regexp can be anythingpattern:\w+@datadoghq.com
En un entorno de Docker, utiliza la etiqueta com.datadoghq.ad.logs en el contenedor que envíe los logs que quieres filtrar para especificar el parámetro log_processing_rules. Por ejemplo:
Nota: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses etiquetas. Por ejemplo, \d pasaría a ser \\d, \w pasaría a ser \\w.
Nota: El valor de la etiqueta debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios.
Para configurar Autodiscovery para la recopilación de logs de contenedor de un contenedor dado (con el nombre CONTAINER_NAME) dentro de tu pod, añade las siguientes anotaciones a las log_processing_rules de tu pod:
Nota: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses anotaciones de pod. Por ejemplo, \d pasaría a ser \\d, \w pasaría a ser \\w.
Nota: El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios.
Solo se enviarán a Datadog aquellos logs que tengan un mensaje con el patrón especificado. Si se definen varias reglas include_at_match, deberán coincidir todos los patrones de reglas para que se incluya el log.
Por ejemplo, utiliza la siguiente configuración del parámetro log_processing_rules para incluir los logs que contienen una dirección de correo electrónico de Datadog:
logs:- type:filepath:/my/test/file.logservice:cardpaymentsource:javalog_processing_rules:- type:include_at_matchname:include_datadoghq_users## Regexp can be anythingpattern:\w+@datadoghq.com
Si quieres que coincidan uno o varios patrones, debes definirlos en una única expresión:
En un entorno de Docker, utiliza la etiqueta com.datadoghq.ad.logs en el contenedor que envía los logs que quieres filtrar, para especificar el parámetrolog_processing_rules. Por ejemplo:
Nota: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses etiquetas. Por ejemplo, \d pasaría a ser \\d, \w pasaría a ser \\w.
Nota: El valor de la etiqueta debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios.
En un entorno de Kubernetes, utiliza la anotación de pod ad.datadoghq.com en tu pod para definir el parámetro log_processing_rules. Por ejemplo:
Nota: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses anotaciones de pod. Por ejemplo, \d pasaría a ser \\d, \w pasaría a ser \\w.
Nota: El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios.
El uso de Sensitive Data Scanner con el Agent está en Vista previa. Para obtener más información, consulta la entrada del blog y la documentación. Para solicitar acceso, rellena este formulario.
Si tus logs contienen información confidencial que es necesario ocultar, configura el Datadog Agent para limpiar secuencias confidenciales y utiliza el parámetro log_processing_rules en tu archivo de configuración con el tipo mask_sequences.
Esto reemplazará todos los grupos coincidentes con el valor del parámetro replace_placeholder.
Por ejemplo, para ocultar los números de tarjetas de crédito:
Nota: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses etiquetas. Por ejemplo, \d pasaría a ser \\d, \w pasaría a ser \\w.
Nota: El valor de la etiqueta debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios.
En un entorno de Kubernetes, utiliza la anotación de pod ad.datadoghq.com en tu pod para definir el parámetro log_processing_rules. Por ejemplo:
Nota: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses anotaciones de pod. Por ejemplo, \d pasaría a ser \\d, \w pasaría a ser \\w.
Nota: El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios.
A partir de la versión 7.17 del Agent, la cadena replace_placeholder puede ampliar las referencias para capturar grupos como $1, $2, etc. Si quieres que una cadena vaya después del grupo de captura sin espacio de separación, utiliza el formato ${<GROUP_NUMBER>}.
Por ejemplo, para limpiar información de usuario del logUser email: foo.bar@example.com, utiliza:
pattern: "(User email: )[^@]*@(.*)"
replace_placeholder: "$1 masked_user@${2}"
Así, se enviará el siguiente log a Datadog: User email: masked_user@example.com
Si tus logs no se envían en JSON y quieres agregar varias líneas en una sola entrada, configura el Datadog Agent para que detecte un log nuevo mediante un patrón de expresión regular específico en lugar de tener un log por línea. Utiliza el tipo multi_line en el parámetro log_processing_rules para agregar todas las líneas en una sola entrada hasta que se vuelva a detectar el patrón dado.
Por ejemplo, cada línea de log de Java empieza con una marca de tiempo en formato yyyy-dd-mm. Estas líneas incluyen un stack trace que puede enviarse como dos logs:
2018-01-03T09:24:24.983Z UTC Exception in thread "main" java.lang.NullPointerException
at com.example.myproject.Book.getTitle(Book.java:16)
at com.example.myproject.Author.getBookTitles(Author.java:25)
at com.example.myproject.Bootstrap.main(Bootstrap.java:14)
2018-01-03T09:26:24.365Z UTC starting upload of /my/file.gz
Nota: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando realices una agregación multilínea con anotaciones de pod. Por ejemplo, \d pasaría a ser \\d, \w pasaría a ser \\w.
Nota: El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios.
Importante Los patrones de expresiones regulares para logs multilínea deben comenzar al principio de un log. Los patrones no pueden coincidir a mitad de una línea. Un patrón que no coincida nunca puede provocar pérdidas de líneas de logs.
La recopilación de logs funciona con una precisión de hasta milisegundos. Los logs con mayor precisión no se envían aunque coincidan con el patrón.
A partir de la versión 7.37 o posterior del Agent, es posible habilitar auto_multi_line_detection para que el Agent pueda detectar patrones multilínea habituales de manera automática.
Activa auto_multi_line_detection de forma general en el archivo datadog.yaml:
logs_config:auto_multi_line_detection:true
Para los despliegues contenedorizados, puedes activar auto_multi_line_detection con la variable de entornoDD_LOGS_CONFIG_AUTO_MULTI_LINE_DETECTION=true.
También se puede activar o desactivar este parámetro (anulando la configuración general) en la configuración de cada log:
La detección multilínea automática utiliza una lista de expresiones regulares habituales para intentar buscar coincidencias de logs. Si no es suficiente con la lista integrada, puedes añadir patrones personalizados en el archivo datadog.yaml:
Si ningún patrón llega al umbral de coincidencia con la línea, añade el parámetro auto_multi_line_default_match_threshold con un valor inferior. Esto configura un valor de umbral que determina la frecuencia con la que los logs tienen que coincidir para que funcione la agregación multilínea automática. Para conocer el valor actual del umbral, ejecuta el comando de status del Agent.
La detección multilínea automática utiliza una lista de expresiones regulares comunes para intentar emparejar los logs. Si la lista incorporada no es suficiente, también puedes añadir patrones personalizados en el archivo datadog.yaml con la variable de entorno DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS.
Si ningún patrón llega al umbral de coincidencia con la línea, añade la variable de entornoDD_LOGS_CONFIG_AUTO_MULTI_LINE_DEFAULT_MATCH_THRESHOLD con un valor inferior. Esto configura un valor de umbral que determina la frecuencia con la que los logs deben coincidir para que funcione la agregación multilínea automática. Para conocer el valor del umbral actual, ejecuta el comando de statusdel Agent.
La detección multilínea automática utiliza una lista de expresiones regulares comunes para intentar emparejar los logs. Si la lista incorporada no es suficiente, también puedes añadir patrones personalizados en el archivo datadog.yaml con la variable de entorno DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS.
Si ningún patrón llega al umbral de coincidencia con la línea, añade la variable de entornoDD_LOGS_CONFIG_AUTO_MULTI_LINE_DEFAULT_MATCH_THRESHOLD con un valor inferior. Esto configura un valor de umbral que determina la frecuencia con la que los logs deben coincidir para que funcione la agregación multilínea automática. Para conocer el valor del umbral actual, ejecuta el comando de statusdel Agent.
Si se activa esta función y se abre un nuevo archivo de logs, el Agent intenta detectar un patrón. Durante este proceso, los logs se envían en forma de líneas únicas. Una vez alcanzado el umbral de detección, todos los futuros logs de ese origen se agregan con el patrón detectado, o bien como líneas únicas en caso de que no se encuentre ningún patrón. Como máximo, la detección tarda 30 segundos o lo que se tarde en detectar los primeros 500 logs (lo que ocurra antes).
Nota: Si puedes controlar el patrón de nombres del log rotado, asegúrate de que el archivo rotado sustituya al archivo activo anteriormente con ese mismo nombre. El Agent reutiliza un patrón detectado anteriormente en el archivo recién rotado para evitar tener que volver a ejecutar la detección.
La detección multilínea automática detecta los logs que empiezan y concuerdan con los siguientes formatos de fecha/hora: RFC3339, ANSIC, el formato de fecha Unix, el formato de fecha Ruby, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339Nano y el formato de fecha SimpleFormatter para el registro de logs de Java predeterminado.
Si tus archivos de log se han etiquetado por fecha o si todos ellos se encuentran almacenados en el mismo directorio, configura el Datadog Agent para monitorizarlos a todos y detectar de manera automática los nuevos mediante comodines en el atributo path. Si quieres excluir algunos archivos coincidentes con la ruta path seleccionada, inclúyelos en el atributo exclude_paths.
Al utilizar path: /var/log/myapp/*.log:
Habrá coincidencia con todos los archivos .log contenidos en el directorio /var/log/myapp/.
No habrá coincidencia con /var/log/myapp/myapp.conf.
Al utilizar path: /var/log/myapp/*/*.log:
Habrá coincidencia con /var/log/myapp/log/myfile.log.
Habrá coincidencia con /var/log/myapp/errorLog/myerrorfile.log.
No habrá coincidencia con /var/log/myapp/mylogfile.log.
En el ejemplo anterior, hay coincidencia con C:\\MyApp\\MyLog.log y se excluyen C:\\MyApp\\MyLog.20230101.log y C:\\MyApp\\MyLog.20230102.log.
Nota: El Agent requiere permisos de lectura y ejecución en un directorio para mostrar la lista de todos los archivos disponibles que contiene.
Nota2: Los valores path y exclude_paths distinguen entre mayúsculas y minúsculas.
A la hora de priorizar qué archivos supervisar, el Datadog Agent ordena los nombres de archivo de la ruta de directorio por orden lexicográfico inverso. Para ordenar los archivos por hora de modificación, define la opción de configuraciónlogs_config.file_wildcard_selection_mode con el valor by_modification_time.
Esta opción resulta útil cuando el total de coincidencias de archivos de logs es superior a logs_config.open_files_limit. Al utilizar by_modification_time, se garantiza que los últimos archivos actualizados se supervisan primero en la ruta de directorio definida.
Para restablecer el comportamiento predeterminado, define la opción de configuración logs_config.file_wildcard_selection_mode con el valor by_name.
Para usar esta función, se necesita la versión 7.40.0 o posterior del Agent.
De forma predeterminada, el Datadog Agent asume que los logs utilizan la codificación UTF-8. Si los logs de tu aplicación utilizan otra codificación, define el parámetro encoding con la configuración de logs.
En la siguiente lista se indican los valores de codificación compatibles. Si indicas un valor no compatible, el Agent lo ignorará y leerá el archivo como UTF-8.
A partir de la versión 6.10 o superior del Datadog Agent, es posible definir las reglas de procesamiento exclude_at_match, include_at_match y mask_sequences de manera general en el archivo de configuración principal del Agent o mediante una variable de entorno:
Utiliza el parámetro spec.override.[key].env en tu manifiesto del Datadog Operator para definir la variable de entorno DD_LOGS_CONFIG_PROCESSING_RULES y configurar reglas de procesamiento globales, donde [key] es nodeAgent, clusterAgent o clusterChecksRunner. Por ejemplo:
Utiliza el parámetro datadog.env en el Helm chart para definir la variable de entornoDD_LOGS_CONFIG_PROCESSING_RULES para configurar reglas de procesamiento globales Por ejemplo:
Todos los logs recopilados por el Datadog Agent se ven afectados por las reglas de procesamiento generales.
Nota: El Datadog Agent no inicia el Collector de logs si existe un problema de formato en las reglas de procesamiento generales. Ejecuta el subcomando de estado del Agent para solucionar los problemas que encuentres.