Recopilación de logs del Agent del host

Para recopilar logs con el Datadog Agent es necesario disponer de la versión 6.0 o una posterior. Las versiones anteriores del Agent no incluyen la interfaz log collection. Si todavía no utilizas el Agent, sigue las instrucciones de instalación.

Activar la recopilación de logs

La recopilación de logs se encuentra deshabilitada de forma predeterminada en el Datadog Agent. Si ejecutas el Agent en un entorno de Kubernetes o Docker, consulta la documentación sobre la recopilación de logs con Kubernetes o la recopilación de logs con Docker.

Para habilitar la recopilación de logs con un Agent que se está ejecutando en tu host, cambia logs_enabled: false a logs_enabled: true en el archivo de configuración principal del Agent (datadog.yaml).

datadog.yaml

## @param logs_enabled - boolean - optional - default: false
## @env DD_LOGS_ENABLED - boolean - optional - default: false
## Enable Datadog Agent log collection by setting logs_enabled to true.
logs_enabled: false

## @param logs_config - custom object - optional
## Enter specific configurations for your Log collection.
## Uncomment this parameter and the one below to enable them.
## See https://docs.datadoghq.com/agent/logs/
logs_config:

  ## @param container_collect_all - boolean - optional - default: false
  ## @env DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL - boolean - optional - default: false
  ## Enable container log collection for all the containers (see ac_exclude to filter out containers)
  container_collect_all: false

  ## @param logs_dd_url - string - optional
  ## @env DD_LOGS_CONFIG_LOGS_DD_URL - string - optional
  ## Define the endpoint and port to hit when using a proxy for logs. The logs are forwarded in TCP
  ## therefore the proxy must be able to handle TCP connections.
  logs_dd_url: <ENDPOINT>:<PORT>

  ## @param logs_no_ssl - boolean - optional - default: false
  ## @env DD_LOGS_CONFIG_LOGS_NO_SSL - optional - default: false
  ## Disable the SSL encryption. This parameter should only be used when logs are
  ## forwarded locally to a proxy. It is highly recommended to then handle the SSL encryption
  ## on the proxy side.
  logs_no_ssl: false

  ## @param processing_rules - list of custom objects - optional
  ## @env DD_LOGS_CONFIG_PROCESSING_RULES - list of custom objects - optional
  ## Global processing rules that are applied to all logs. The available rules are
  ## "exclude_at_match", "include_at_match" and "mask_sequences". More information in Datadog documentation:
  ## https://docs.datadoghq.com/agent/logs/advanced_log_collection/#global-processing-rules
  processing_rules:
    - type: <RULE_TYPE>
      name: <RULE_NAME>
      pattern: <RULE_PATTERN>

  ## @param force_use_http - boolean - optional - default: false
  ## @env DD_LOGS_CONFIG_FORCE_USE_HTTP - boolean - optional - default: false
  ## By default, the Agent sends logs in HTTPS batches to port 443 if HTTPS connectivity can
  ## be established at Agent startup, and falls back to TCP otherwise. Set this parameter to `true` to
  ## always send logs with HTTPS (recommended).
  ## Warning: force_use_http means HTTP over TCP, not HTTP over HTTPS. Please use logs_no_ssl for HTTP over HTTPS.
  force_use_http: true

  ## @param force_use_tcp - boolean - optional - default: false
  ## @env DD_LOGS_CONFIG_FORCE_USE_TCP - boolean - optional - default: false
  ## By default, logs are sent through HTTPS if possible, set this parameter
  ## to `true` to always send logs via TCP. If `force_use_http` is set to `true`, this parameter
  ## is ignored.
  force_use_tcp: true

  ## @param use_compression - boolean - optional - default: true
  ## @env DD_LOGS_CONFIG_USE_COMPRESSION - boolean - optional - default: true
  ## This parameter is available when sending logs with HTTPS. If enabled, the Agent
  ## compresses logs before sending them.
  use_compression: true

  ## @param compression_level - integer - optional - default: 6
  ## @env DD_LOGS_CONFIG_COMPRESSION_LEVEL - boolean - optional - default: false
  ## The compression_level parameter accepts values from 0 (no compression)
  ## to 9 (maximum compression but higher resource usage). Only takes effect if
  ## `use_compression` is set to `true`.
  compression_level: 6

  ## @param batch_wait - integer - optional - default: 5
  ## @env DD_LOGS_CONFIG_BATCH_WAIT - integer - optional - default: 5
  ## The maximum time (in seconds) the Datadog Agent waits to fill each batch of logs before sending.
  batch_wait: 5

  ## @param open_files_limit - integer - optional - default: 500
  ## @env DD_LOGS_CONFIG_OPEN_FILES_LIMIT - integer - optional - default: 500
  ## The maximum number of files that can be tailed in parallel.
  ## Note: the default for Mac OS is 200. The default for
  ## all other systems is 500.
  open_files_limit: 500

  ## @param file_wildcard_selection_mode - string - optional - default: `by_name`
  ## @env DD_LOGS_CONFIG_FILE_WILDCARD_SELECTION_MODE - string - optional - default: `by_name`
  ## The strategy used to prioritize wildcard matches if they exceed the open file limit.
  ##
  ## Choices are `by_name` and `by_modification_time`.
  ##
  ## `by_name` means that each log source is considered and the matching files are ordered
  ## in reverse name order. While there are less than `logs_config.open_files_limit` files
  ## being tailed, this process repeats, collecting from each configured source.
  ##
  ## `by_modification_time` takes all log sources and first adds any log sources that
  ## point to a specific file. Next, it finds matches for all wildcard sources.
  ## This resulting list is ordered by which files have been most recently modified
  ## and the top `logs_config.open_files_limit` most recently modified files are
  ## chosen for tailing.
  ##
  ## WARNING: `by_modification_time` is less performant than `by_name` and will trigger
  ## more disk I/O at the configured wildcard log paths.
  file_wildcard_selection_mode: by_name

  ## @param max_message_size_bytes - integer - optional - default: 256000
  ## @env DD_LOGS_CONFIG_MAX_MESSAGE_SIZE_BYTES - integer - optional - default : 256000
  ## The maximum size of single log message in bytes. If maxMessageSizeBytes exceeds
  ## the documented API limit of 1MB - any payloads larger than 1MB will be dropped by the intake.
  https://docs.datadoghq.com/api/latest/logs/
  max_message_size_bytes: 256000

  ## @param integrations_logs_files_max_size - integer - optional - default: 10
  ## @env DD_LOGS_CONFIG_INTEGRATIONS_LOGS_FILES_MAX_SIZE - integer - optional - default: 10
  ## The max size in MB that an integration logs file is allowed to use
  integrations_logs_files_max_size

  ## @param integrations_logs_total_usage - integer - optional - default: 100
  ## @env DD_LOGS_CONFIG_INTEGRATIONS_LOGS_TOTAL_USAGE - integer - optional - default: 100
  ## The total combined usage all integrations logs files can use
  integrations_logs_total_usage

A partir de las versiones 6.19/7.19 del Agent, se utiliza de forma predeterminada el transporte HTTPS. Para obtener más información sobre cómo forzar el transporte HTTPS/TCP, consulta la documentación de transporte del Agent.

Para enviar logs con variables de entorno, configura lo siguiente:

  • DD_LOGS_ENABLED=true

Después de que actives la recopilación de logs, el Agent podrá reenviarlos a Datadog. A continuación, configura el Agent para indicarle desde dónde debe recopilar los logs.

Recopilación de logs personalizada

El Datadog Agent v6 puede recopilar logs y reenviarlos a Datadog desde archivos, la red (TCP o UDP), journald y canales de Windows:

  1. En el directorio conf.d/ de la raíz del directorio de configuración del Agent, crea una carpeta <CUSTOM_LOG_SOURCE>.d/ nueva a la que pueda acceder un usuario de Datadog.
  2. En ella, crea un archivo conf.yaml nuevo.
  3. Añade un grupo de configuración de recopilación de logs personalizada con los parámetros que se detallan a continuación.
  4. Reinicia el Agent para que aplique esta configuración nueva.
  5. Ejecuta el subcomando de estado del Agent y busca <CUSTOM_LOG_SOURCE> en la sección Checks.

Para solucionar posibles errores relacionados con permisos, consulta la sección sobre los problemas de permisos al supervisar los archivos de log.

A continuación, encontrarás ejemplos de una configuración de recopilación de logs personalizada:

Para recopilar logs de tu aplicación <APP_NAME> almacenada en <PATH_LOG_FILE>/<LOG_FILE_NAME>.log, crea un archivo <APP_NAME>.d/conf.yaml en la raíz del directorio de configuración del Agent que incluya lo siguiente:

logs:
  - type: file
    path: "<PATH_LOG_FILE>/<LOG_FILE_NAME>.log"
    service: "<APP_NAME>"
    source: "<SOURCE>"

En Windows, utiliza la ruta <DRIVE_LETTER>:\<PATH_LOG_FILE>\<LOG_FILE_NAME>.log y verifica que el usuario ddagentuser tenga permiso de lectura y escritura en el archivo de log.

Para recopilar logs de tu aplicación <APP_NAME>, que los transfiere a través del puerto TCP 10518, crea un archivo <APP_NAME>.d/conf.yaml en la raíz del directorio de configuración del Agent que incluya lo siguiente:

logs:
  - type: tcp
    port: 10518
    service: "<APP_NAME>"
    source: "<CUSTOM_SOURCE>"

Si utilizas Serilog, puedes usar Serilog.Sinks.Network para conectarte a través de UDP.

En versiones del Agent posteriores a la 7.31.0, la conexión TCP permanece abierta de forma indefinida, incluso en reposo.

Nota: El Agent es compatible con logs de cadenas sin formato, JSON y Syslog con formato. Si envías logs en bloque, utiliza saltos de línea para separarlos.

Para recopilar logs de journald, crea un archivo journald.d/conf.yaml en la raíz del directorio de configuración del Agent que incluya lo siguiente:

logs:
  - type: journald
    path: /var/log/journal/

Consulta la documentación sobre la integración con journald para obtener más detalles sobre la configuración de entornos contenedorizados y saber más sobre el filtrado de unidades.

Para enviar eventos de Windows como logs a Datadog, añade los canales a conf.d/win32_event_log.d/conf.yaml de forma manual o utiliza el Datadog Agent Manager.

Para consultar tu lista de canales, ejecuta el siguiente comando en un PowerShell:

Get-WinEvent -ListLog *

Para consultar los canales más activos, ejecuta el siguiente comando en un PowerShell:

Get-WinEvent -ListLog * | sort RecordCount -Descending

Luego, añade los canales a tu archivo de configuración win32_event_log.d/conf.yaml:

logs:
  - type: windows_event
    channel_path: "<CHANNEL_1>"
    source: "<CHANNEL_1>"
    service: "<SERVICE>"
    sourcecategory: windowsevent

  - type: windows_event
    channel_path: "<CHANNEL_2>"
    source: "<CHANNEL_2>"
    service: "<SERVICE>"
    sourcecategory: windowsevent

Edita los parámetros <CHANNEL_X> con el nombre del canal de Windows desde el que quieres recopilar los eventos. Establece el mismo nombre de canal en el parámetro source correspondiente para beneficiarte de la configuración del pipeline de procesamiento automático de la integración.

Por último, reinicia el Agent.

Esta es una lista de todos los parámetros disponibles para la recopilación de logs:

ParámetroObligatorioDescripción
typeEl tipo de origen de entrada del log. Los valores válidos son: tcp, udp, file, windows_event, docker o journald.
portSi type es tcp o udp, define el puerto en el que se realiza la escucha de los logs.
pathSi type es file o journald, configura la ruta de archivo para la recopilación de logs.
channel_pathSi type es windows_event, establece una lista de los canales de eventos de Windows para la recopilación de logs.
serviceEl nombre del servicio al que pertenece el log. Si has instrumentado tu servicio con Datadog APM, este parámetro debe llevar el nombre del servicio. Verifica las instrucciones de etiquetado de servicio unificado cuando configures service en varios tipos de datos.
sourceEl atributo que define qué integración envía los logs. Si los logs no vienen de una integración existente, el campo puede incluir un nombre de origen personalizado. Sin embargo, se recomienda que sea el espacio de nombres de alguna métrica personalizada relacionada que vayas a recopilar; por ejemplo, myapp para myapp.request.count.
include_unitsNoSi type es journald, se trata de la lista de unidades journald que se deben incluir.
exclude_pathsNoSi type es file, y path contiene un carácter comodín, es la lista con el archivo o los archivos que hay que excluir de la recopilación de logs. Disponible a partir de la versión 6.18 del Agent.
exclude_unitsNoSi type es journald, se trata de la lista de unidades journald que se deben excluir.
sourcecategoryNoEl atributo que se utiliza para definir la categoría a la que pertenece un atributo de origen. Por ejemplo: source:postgres, sourcecategory:database o source: apache, sourcecategory: http_web_access.
start_positionNoSi type es file, establece la posición para que el Agent comience a leer el archivo. Los valores válidos son beginning y end (por defecto: end). Si path contiene un carácter comodín, beginning no es compatible. Se añadió en las versiones 6.19/7.19 del Agent

Si type es journald, establece la posición para que el Agent comience a leer el diario. Los valores válidos son beginning, end, forceBeginning y forceEnd (por defecto: end). Con las opciones de force, el Agent ignora el cursor almacenado en disco y siempre lee desde el principio o el final del diario cuando se inicia. Se añadió en la versión 7.38 del Agent
encodingNoSi type es file, establece qué codificación debe utilizar el Agent para leer el archivo. Utiliza utf-16-le para UTF-16 little-endian, utf-16-be para UTF-16 big-endian o shift-jis para Shift JIS. Si se establece cualquier otro valor, el Agent leerá el archivo como UTF-8. Se añadieron utf-16-le y utf-16be en las versiones 6.23/7.23 del Agent, y shift-jis en las versiones 6.34/7.34 del Agent
tagsNoUna lista de las etiquetas que se añaden a todos los logs recopilados (más información sobre el etiquetado).

Leer más

PREVIEWING: piotr_wolski/update-dsm-docs