Logstash

Supported OS Linux Mac OS Windows

Integration version1.1.0

Información general

Obtén métricas de Logstash en tiempo real para:

  • Visualizar y monitorizar estados de Logstash.
  • Recibir notificaciones sobre eventos de Logstash.

Configuración

Instalación

El check de Logstash está incluido en el paquete del Datadog Agent, por lo que no necesitas instalarlo.

Host

Para el Agent v7.21/v6.21 y posteriores, sigue las siguientes instrucciones para instalar el check de Logstash en tu host. Para versiones anteriores del Agent, consulta el uso de integraciones de la comunidad.

  1. Ejecuta el siguiente comando para instalar la integración del Agent:

    datadog-agent integration install -t datadog-logstash==<INTEGRATION_VERSION>
    
  2. Configura tu integración como si fuese una integración de base.

Contenedores

Utiliza el siguiente archivo Docker para crear una imagen personalizada del Datadog Agent que incluya la integración Logstash.

FROM gcr.io/datadoghq/agent:latest
RUN datadog-agent integration install -r -t datadog-logstash==<INTEGRATION_VERSION>

Si utilizas Kubernetes, actualiza la configuración de tu Datadog Operator o tu Helm chart para extraer esa imagen personalizada del Datadog Agent.

Para obtener más información, consulta el uso de integraciones de la comunidad.

Configuración

Recopilación de métricas

Host
  1. Edita el archivo logstash.d/conf.yaml, que se encuentra en la carpeta conf.d/ en la raíz del directorio de configuración del Agent.

    init_config:
    
    instances:
      # The URL where Logstash provides its monitoring API.
      # This will be used to fetch various runtime metrics about Logstash.
      #
      - url: http://localhost:9600
    

    Para ver todas las opciones de configuración disponibles, consulta el ejemplo logstash.d/conf.yaml.

  2. Reinicia el Agent.

Contenedores

Para entornos contenedorizados, utiliza una plantilla de Autodiscovery con los siguientes parámetros:

ParámetroValor
<INTEGRATION_NAME>logstash
<INIT_CONFIG>en blanco o {}
<INSTANCE_CONFIG>{"server": "http://%%host%%:9600"}

Para saber cómo aplicar esta plantilla, consulta las integraciones Docker o las integraciones Kubernetes.

Para ver todas las opciones de configuración disponibles, consulta el ejemplo logstash.d/conf.yaml.

Recopilación de logs

Datadog cuenta con un complemento de salida para Logstash que se encarga de enviar tus logs a tu plataforma Datadog.

Para instalar este complemento ejecuta el siguiente comando:

  • logstash-plugin install logstash-output-datadog_logs

A continuación, configura el complemento datadog_logs con tu clave de API Datadog:

output {
    datadog_logs {
        api_key => "<DATADOG_API_KEY>"
    }
}

Por defecto, el complemento está configurado para enviar logs a través de HTTPS (puerto 443) utilizando la compresión gzip. Puedes cambiar este comportamiento utilizando los siguientes parámetros:

  • use_http: Configúralo como false si quieres utilizar el reenvío TCP y actualiza el host y el port en consecuencia (por defecto es true).
  • use_compression: La compresión sólo está disponible para HTTP. Deshabilítala configurándola como false (por defecto es true).
  • compression_level: Define el nivel de compresión de HTTP. El rango es de 1 a 9, siendo 9 la mejor proporción (por defecto es 6).

Se pueden utilizar parámetros adicionales para cambiar el endpoint utilizado para pasar por un proxy:

  • host: Endpoint de proxy para logs no reenviados directamente a Datadog (valor por defecto: http-intake.logs.datadoghq.com).
  • port: Puerto de proxy para logs no reenviados directamente a Datadog (valor por defecto: 80).
  • ssl_port: Puerto utilizado para logs reenviados a través de una conexión segura TCP/SSL a Datadog (valor por defecto: 443).
  • use_ssl: Indica al Agent que inicie una conexión TCP/SSL segura con Datadog (valor por defecto: true).
  • no_ssl_validation: Deshabilita la validación de nombres de host SSL (valor por defecto: false).

Nota: Define el host y el port para tu región .

output {
   datadog_logs {
       api_key => "<DATADOG_API_KEY>"
       host => "http-intake.logs.datadoghq.eu"
   }
}
Añadir metadatos a tus logs

Para lograr el mejor uso de tus logs en Datadog, es importante asociar los metadatos apropiados a tus logs, incluyendo el nombre de host y la fuente. Por defecto, el nombre y la marca de tiempo del nombre de host deberían reasignarse correctamente gracias a la reasignación de atributos reservados por defecto de Datadog. Para asegurarte de que el servicio se reasigna correctamente, añade el valor de su atributo a la lista de reasignación servicios.

Fuente

Configure un filtro de Logstash para definir el (nombre de la integración Datadog) de origen en tus logs.

filter {
  mutate {
    add_field => {
 "ddsource" => "<MY_SOURCE_VALUE>"
       }
    }
 }

Esta acción activa la configuración automática de la integración en Datadog.

Etiquetas (tags) personalizadas

Las etiquetas de host se configuran automáticamente en tus logs si existe un nombre de host coincidente en tu lista de infraestructuras. Utiliza el atributo ddtags para añadir etiquetas personalizadas a tus logs:

filter {
  mutate {
    add_field => {
        "ddtags" => "env:test,<KEY:VALUE>"
       }
    }
 }

Validación

Ejecuta el subcomando status del Agent y busca logstash en la sección Checks.

Compatibilidad

El check de Logstash es compatible con las versiones 5.x, 6.x y 7.x de Logstash. También es compatible con las nuevas métricas de pipelines múltiples, introducidas en Logstash v6.0. Probado con las versiones 5.6.15, 6.3.0 y 7.0.0 de Logstash.

Datos recopilados

Métricas

logstash.process.open_file_descriptors
(gauge)
The number of open file descriptors used by this process.
logstash.process.peak_open_file_descriptors
(gauge)
The peak number of open file descriptors used by this process.
logstash.process.max_file_descriptors
(gauge)
The maximum number of file descriptors used by this process.
logstash.process.mem.total_virtual_in_bytes
(gauge)
Total virtual memory allocated to this process.
Shown as byte
logstash.process.cpu.total_in_millis
(gauge)
The CPU time in milliseconds.
Shown as millisecond
logstash.process.cpu.percent
(gauge)
CPU utilization in percentage.
Shown as percent
logstash.process.cpu.load_average.1m
(gauge)
The average CPU load over one minute.
logstash.process.cpu.load_average.5m
(gauge)
The average CPU load over five minutes
logstash.process.cpu.load_average.15m
(gauge)
The average CPU load over fifteen minutes.
logstash.jvm.threads.count
(gauge)
Number of threads used by the JVM.
Shown as thread
logstash.jvm.threads.peak_count
(gauge)
The peak number of threads used by JVM.
Shown as thread
logstash.jvm.mem.heap_used_percent
(gauge)
Total Java heap memory used.
Shown as percent
logstash.jvm.mem.heap_committed_in_bytes
(gauge)
Total Java heap memory committed.
Shown as byte
logstash.jvm.mem.heap_max_in_bytes
(gauge)
Maximum Java heap memory size.
Shown as byte
logstash.jvm.mem.heap_used_in_bytes
(gauge)
Total Java heap memory used.
Shown as byte
logstash.jvm.mem.non_heap_used_in_bytes
(gauge)
Total Java non-heap memory used.
Shown as byte
logstash.jvm.mem.non_heap_committed_in_bytes
(gauge)
Total Java non-heap memory committed.
Shown as byte
logstash.jvm.mem.pools.survivor.peak_used_in_bytes
(gauge)
The Java memory used in the Survivor space.
Shown as byte
logstash.jvm.mem.pools.survivor.used_in_bytes
(gauge)
The peak Java memory used in the Survivor space.
Shown as byte
logstash.jvm.mem.pools.survivor.peak_max_in_bytes
(gauge)
The peak maximum Java memory used in the Survivor space.
Shown as byte
logstash.jvm.mem.pools.survivor.max_in_bytes
(gauge)
The maximum Java memory used in the Survivor space.
Shown as byte
logstash.jvm.mem.pools.survivor.committed_in_bytes
(gauge)
The committed Java memory used in the Survivor space.
Shown as byte
logstash.jvm.mem.pools.old.peak_used_in_bytes
(gauge)
The peak Java memory used in the Old generation.
Shown as byte
logstash.jvm.mem.pools.old.used_in_bytes
(gauge)
The Java memory used in the Old generation.
Shown as byte
logstash.jvm.mem.pools.old.peak_max_in_bytes
(gauge)
The peak maximum Java memory used in the Old generation.
Shown as byte
logstash.jvm.mem.pools.old.max_in_bytes
(gauge)
The maximum Java memory used in the Old generation.
Shown as byte
logstash.jvm.mem.pools.old.committed_in_bytes
(gauge)
The committed Java memory used in the Old generation.
Shown as byte
logstash.jvm.mem.pools.young.peak_used_in_bytes
(gauge)
The peak Java memory used in the Young space.
Shown as byte
logstash.jvm.mem.pools.young.used_in_bytes
(gauge)
The Java memory used in the Young generation.
Shown as byte
logstash.jvm.mem.pools.young.peak_max_in_bytes
(gauge)
The peak maximum Java memory used in the Young generation.
Shown as byte
logstash.jvm.mem.pools.young.max_in_bytes
(gauge)
The maximum Java memory used in the Young generation.
Shown as byte
logstash.jvm.mem.pools.young.committed_in_bytes
(gauge)
The committed Java memory used in the Young generation.
Shown as byte
logstash.jvm.gc.collectors.old.collection_time_in_millis
(gauge)
Garbage collection time spent in the Old generation.
Shown as millisecond
logstash.jvm.gc.collectors.old.collection_count
(gauge)
Garbage collection count in the Old generation.
logstash.jvm.gc.collectors.young.collection_time_in_millis
(gauge)
Garbage collection time spent in the Young generation.
Shown as millisecond
logstash.jvm.gc.collectors.young.collection_count
(gauge)
Garbage collection time spent in the Young generation.
logstash.reloads.successes
(gauge)
Number of successful configuration reloads.
logstash.reloads.failures
(gauge)
Number of failed configuration reloads.
logstash.pipeline.dead_letter_queue.queue_size_in_bytes
(gauge)
Total size of the dead letter queue.
Shown as byte
logstash.pipeline.events.duration_in_millis
(gauge)
Events duration in the pipeline.
Shown as millisecond
logstash.pipeline.events.in
(gauge)
Number of events into the pipeline.
logstash.pipeline.events.out
(gauge)
Number of events out from the pipeline.
logstash.pipeline.events.filtered
(gauge)
Number of events filtered.
logstash.pipeline.reloads.successes
(gauge)
Number of successful pipeline reloads.
logstash.pipeline.reloads.failures
(gauge)
Number of failed pipeline reloads.
logstash.pipeline.plugins.inputs.events.out
(gauge)
Number of events out from the input plugin.
logstash.pipeline.plugins.inputs.events.queue_push_duration_in_millis
(gauge)
Duration of queue push in the input plugin.
Shown as millisecond
logstash.pipeline.plugins.outputs.events.in
(gauge)
Number of events into the output plugin.
logstash.pipeline.plugins.outputs.events.out
(gauge)
Number of events out from the output plugin.
logstash.pipeline.plugins.outputs.events.duration_in_millis
(gauge)
Duration of events in the output plugin.
Shown as millisecond
logstash.pipeline.plugins.filters.events.in
(gauge)
Number of events into the filter plugin.
logstash.pipeline.plugins.filters.events.out
(gauge)
Number of events out from the filter plugin.
logstash.pipeline.plugins.filters.events.duration_in_millis
(gauge)
Duration of events in the filter plugin.
Shown as millisecond
logstash.pipeline.queue.capacity.max_queue_size_in_bytes
(gauge)
Maximum queue capacity in bytes of a persistent queue.
Shown as byte
logstash.pipeline.queue.capacity.max_unread_events
(gauge)
Maximum unread events allowed in a persistent queue.
logstash.pipeline.queue.capacity.page_capacity_in_bytes
(gauge)
Queue page capacity in bytes of a persistent queue.
Shown as byte
logstash.pipeline.queue.capacity.queue_size_in_bytes
(gauge)
Disk used in bytes of a persistent queue.
Shown as byte
logstash.pipeline.queue.events
(gauge)
Number of events in a persistent queue.

Eventos

El check de Logstash no incluye eventos.

Checks de servicio

logstash.can_connect
Returns Critical if the Agent cannot connect to Logstash to collect metrics, returns OK otherwise.
Statuses: ok, critical

Solucionar problemas

El Agent no se puede conectar

    logstash
    -------
      - instance #0 [ERROR]: "('Connection aborted.', error(111, 'Connection refused'))"
      - Collected 0 metrics, 0 events & 1 service check

Verifica que la url en conf.yaml es correcta.

Si necesitas más ayuda, ponte en contacto con el servicio de asistencia de Datadog.