Supported OS

Versión de la integración5.0.0

Dashboard de Druid

Información general

Datadog Agent recopila métricas de Druid mediante DogStatsD. DogStatsD recopila métricas sobre consultas, ingesta y datos de coordinación de Druid. Para más información, consulta la documentación de métricas de Druid.

Además de recopilar métricas, el Agent también envía un check de servicio relacionado con el estado de Druid.

Configuración

Requisito previo

Druid v0.16 o posterior es necesario para que esta integración funcione correctamente.

Instalación

Los dos pasos siguientes son necesarios para que la integración de Druid funcione correctamente. Antes de empezar, debes instalar el Datadog Agent.

Paso 1: Configurar Druid para recopilar métricas de estado y checks de servicio

Configura el check de Druid incluido en el paquete del Datadog Agent para recopilar métricas de estado y checks de servicio.

  1. Edita el archivo druid.d/conf.yaml, en la carpeta conf.d/ en la raíz del directorio de configuración de tu Agent para comenzar a recopilar tus checks de servicio de druid. Consulta el druid.d/conf.yaml de ejemplo para conocer todas las opciones de configuración disponibles.
  2. Reinicia el Agent.

Paso 2: Conectar Druid a DogStatsD (incluido en el Datadog Agent) utilizando la extensión statsd-emitter para recopilar métricas

Paso para configurar la extensión statsd-emitter para recopilar la mayoría de las métricas de Druid.

  1. Instala la extensión de Druid statsd-emitter.

    $ java \
      -cp "lib/*" \
      -Ddruid.extensions.directory="./extensions" \
      -Ddruid.extensions.hadoopDependenciesDir="hadoop-dependencies" \
      org.apache.druid.cli.Main tools pull-deps \
      --no-default-hadoop \
      -c "org.apache.druid.extensions.contrib:statsd-emitter:0.15.0-incubating"
    

    Puedes encontrar más información sobre este paso en la guía oficial para cargar extensiones de Druid

  2. Actualiza las propiedades java de Druid añadiendo las siguientes configuraciones:

    # Add `statsd-emitter` to the extensions list to be loaded
    druid.extensions.loadList=[..., "statsd-emitter"]
    
    # By default druid emission period is 1 minute (PT1M).
    # We recommend using 15 seconds instead:
    druid.monitoring.emissionPeriod=PT15S
    
    # Use `statsd-emitter` extension as metric emitter
    druid.emitter=statsd
    
    # Configure `statsd-emitter` endpoint
    druid.emitter.statsd.hostname=127.0.0.1
    druid.emitter.statsd.port:8125
    
    # Configure `statsd-emitter` to use dogstatsd format. Must be set to true, otherwise tags are not reported correctly to Datadog.
    druid.emitter.statsd.dogstatsd=true
    druid.emitter.statsd.dogstatsdServiceAsTag=true
    
  3. Reinicia Druid para empezar a enviar tus métricas de Druid al Agent a través de DogStatsD.

Checks de servicio de integraciones

Utiliza la configuración predeterminada de tu archivo druid.d/conf.yaml para activar la recopilación de checks de servicio de Druid. Consulta el [druid.d/conf.yaml] de ejemplo(https://github.com/DataDog/integrations-core/blob/master/druid/datadog_checks/druid/data/conf.yaml.example) para conocer todas las opciones de configuración disponibles.

Recopilación de logs

Disponible para las versiones 6.0 o posteriores del Agent

  1. La recopilación de logs está desactivada por defecto en el Datadog Agent, actívala en tu archivo datadog.yaml:

    logs_enabled: true
    
  2. Deselecciona y edita este bloque de configuración en la parte inferior de tu druid.d/conf.yaml:

    logs:
      - type: file
        path: '<PATH_TO_DRUID_DIR>/var/sv/*.log'
        source: druid
        service: '<SERVICE_NAME>'
        log_processing_rules:
          - type: multi_line
            name: new_log_start_with_date
            pattern: \d{4}\-\d{2}\-\d{2}
    

    Cambia los valores de los parámetros path y service y configúralos para tu entorno.

  3. Reinicia el Agent.

Validación

Ejecuta el subcomando de estado del Agent y busca druid en la sección Checks.

Datos recopilados

Métricas

druid.coordinator.segment.count
(gauge)
Recuento de segmentos del coordinador.
Se muestra como segmento
druid.historical.segment.count
(gauge)
Recuento histórico de segmentos.
Se muestra como segmento
druid.ingest.events.buffered
(gauge)
Número de eventos en cola en el búfer de EventReceiverFirehose.
Se muestra como evento
druid.ingest.events.duplicate
(count)
Número de eventos rechazados porque están duplicados.
Se muestra como evento
druid.ingest.events.messageGap
(gauge)
Intervalo de tiempo entre la hora de los datos en el evento y la hora actual del sistema.
Se muestra en milisegundos
druid.ingest.events.processed
(count)
Número de eventos procesados con éxito por periodo de emisión.
Se muestra como evento
druid.ingest.events.thrownAway
(count)
Número de eventos rechazados por estar fuera de windowPeriod.
Se muestra como evento
druid.ingest.events.unparseable
(count)
Número de eventos rechazados debido a que los eventos son incomparables.
Se muestra como evento
druid.ingest.handoff.failed
(count)
Número de traspasos fallidos.
druid.ingest.kafka.avgLag
(gauge)
Retraso medio entre los desfases consumidos por las tareas de indexación de Kafka y los últimos desfases en los corredores de Kafka en todas las particiones. El periodo de emisión mínimo para esta métrica es un Minuto.
Se muestra como desfase
druid.ingest.kafka.lag
(gauge)
Retraso total entre los desfases consumidos por las tareas de indexación de Kafka y los últimos desfases en los corredores de Kafka en todas las particiones. El periodo de emisión mínimo para esta métrica es un Minuto.
Se muestra como desfase
druid.ingest.kafka.maxLag
(gauge)
Retraso máximo entre los desfases consumidos por las tareas de indexación de Kafka y los últimos desfases en los corredores de Kafka en todas las particiones. El periodo de emisión mínimo para esta métrica es un Minuto.
Se muestra como desfase
druid.ingest.merge.cpu
(gauge)
Tiempo de CPU en nanosegundos empleado en fusionar segmentos intermedios.
Se muestra como nanosegundo
druid.ingest.merge.time
(gauge)
Milisegundos empleados en fusionar segmentos intermedios.
Se muestra como milisegundo
druid.ingest.persists.backPressure
(gauge)
Milisegundos empleados en crear tareas de persistencia y en bloquearse a la espera de que finalicen.
Se muestra como milisegundo
druid.ingest.persists.count
(count)
Número de veces que se ha producido la persistencia.
druid.ingest.persists.cpu
(gauge)
Tiempo de CPU en nanosegundos empleado en hacer persistencia intermedia.
Se muestra como nanosegundo
druid.ingest.persists.failed
(count)
Número de persistencias que han fallado.
druid.ingest.persists.time
(gauge)
Milisegundos dedicados a la persistencia intermedia.
Se muestra como milisegundo
druid.ingest.rows.output
(count)
Número de filas de Druid conservadas.
Se muestra como fila
druid.jvm.bufferpool.capacity
(gauge)
Capacidad del grupo de búfer en bytes.
Se muestra como byte
druid.jvm.bufferpool.count
(gauge)
Recuento del grupo de búfer en bytes.
Se muestra como byte
druid.jvm.bufferpool.used
(gauge)
Grupo de búfer utilizado en bytes.
Se muestra como byte
druid.jvm.gc.count
(count)
Recuento de recopilación de elementos no usados.
druid.jvm.gc.cpu
(gauge)
Tiempo de CPU en nanosegundos empleado en la recopilación de elementos no usados.
Se muestra como nanosegundo
druid.jvm.mem.committed
(gauge)
Memoria comprometida en bytes.
Se muestra como byte
druid.jvm.mem.init
(gauge)
Memoria inicial en bytes.
Se muestra como byte
druid.jvm.mem.max
(gauge)
Memoria máxima en bytes.
Se muestra como byte
druid.jvm.mem.used
(gauge)
Memoria utilizada en bytes.
Se muestra como byte
druid.jvm.pool.committed
(gauge)
Grupo comprometido en bytes.
Se muestra como byte
druid.jvm.pool.init
(gauge)
Grupo inicial en bytes.
Se muestra como byte
druid.jvm.pool.max
(gauge)
Grupo máximo en bytes.
Se muestra como byte
druid.jvm.pool.used
(gauge)
Grupo utilizado en bytes.
Se muestra como byte
druid.query.bytes
(count)
Número de bytes devueltos en la respuesta a la consulta.
Se muestra como byte
druid.query.cache.delta.averageBytes
(count)
Tamaño medio delta del byte de la entrada de caché.
Se muestra como byte
druid.query.cache.delta.errors
(count)
Número delta de errores de caché.
druid.query.cache.delta.evictions
(count)
Número delta de desalojos de caché.
Se muestra como desalojo
druid.query.cache.delta.hitRate
(count)
Tasa delta de aciertos en la cache.
Se muestra como fracción
druid.query.cache.delta.hits
(count)
Número delta de aciertos en la caché.
Se muestra como acierto
druid.query.cache.delta.misses
(count)
Número delta de fallos de caché.
Se muestra como fallo
druid.query.cache.delta.numEntries
(count)
Número delta de entradas de caché.
druid.query.cache.delta.sizeBytes
(count)
Tamaño delta en bytes de las entradas de la caché.
Se muestra como byte
druid.query.cache.delta.timeouts
(count)
Número delta de tiempos de espera de caché.
druid.query.cache.total.averageBytes
(gauge)
Tamaño medio total en bytes de la entrada de caché.
Se muestra como byte
druid.query.cache.total.errors
(gauge)
Número total de errores de caché.
druid.query.cache.total.evictions
(gauge)
Número total de desalojos de la caché.
Se muestra como desalojo
druid.query.cache.total.hitRate
(gauge)
Tasa total de aciertos de la caché.
Se muestra como fracción
druid.query.cache.total.hits
(gauge)
Número total de aciertos en la caché.
Se muestra como acierto
druid.query.cache.total.misses
(gauge)
Número total de fallos de caché.
Se muestra como fallo
druid.query.cache.total.numEntries
(gauge)
Número total de entradas de caché.
druid.query.cache.total.sizeBytes
(gauge)
Tamaño total en bytes de las entradas de la caché.
Se muestra como byte
druid.query.cache.total.timeouts
(gauge)
Número total de tiempos de espera de caché.
druid.query.count
(count)
Número de consultas totales.
Se muestra como consulta
druid.query.cpu.time
(gauge)
Microsegundos de tiempo de CPU que se tarda en completar una consulta.
Se muestra como microsegundo
druid.query.failed.count
(count)
Número de consultas fallidas.
Se muestra como consulta
druid.query.interrupted.count
(count)
Número de consultas interrumpidas por cancelación o tiempo de espera.
Se muestra como consulta
druid.query.intervalChunk.time
(gauge)
Solo se emite si la fragmentación de intervalos está activada. Milisegundos necesarios para consultar un fragmento de intervalos. Esta métrica está obsoleta y se eliminará en el futuro porque la fragmentación de intervalos está obsoleta. Consulta Contexto de consulta.
Se muestra como milisegundo
druid.query.node.backpressure
(gauge)
Milisegundos que el canal a este proceso ha pasado suspendido debido a la contrapresión.
Se muestra como milisegundo
druid.query.node.bytes
(count)
Número de bytes devueltos por la consulta de procesos individuales históricos/en tiempo real.
Se muestra como byte
druid.query.node.time
(gauge)
Milisegundos que se tardó en consultar procesos individuales históricos/en tiempo real.
Se muestra como milisegundo
druid.query.node.ttfb
(gauge)
Tiempo hasta el primer byte. Milisegundos transcurridos hasta que el broker comienza a recibir la respuesta de los procesos individuales históricos/en tiempo real.
Se muestra como milisegundo
druid.query.segment.time
(gauge)
Milisegundos que se tarda en consultar un segmento individual. Incluye el tiempo necesario para paginar en el segmento desde el disco.
Se muestra en milisegundos
druid.query.segmentAndCache.time
(gauge)
Milisegundos que se tarda en consultar un segmento individual o en acceder a la caché (si está activada en el proceso histórico).
Se muestra en milisegundos
druid.query.success.count
(count)
Número de consultas procesadas con éxito.
Se muestra como consulta
druid.query.time
(gauge)
Milisegundos que se tarda en completar una consulta.
Se muestra como milisegundo
druid.query.wait.time
(gauge)
Milisegundos de espera para escanear un segmento.
Se muestra como milisegundo
druid.segment.added.bytes
(count)
Tamaño en bytes de los nuevos segmentos creados.
Se muestra como byte
druid.segment.assigned.count
(count)
Número de segmentos asignados para ser cargados en el cluster.
Se muestra como segmento
druid.segment.cost.normalization
(count)
Se utiliza en el equilibrio de costes. La normalización de los segmentos de alojamiento.
druid.segment.cost.normalized
(count)
Se utiliza en el balance de costes. El coste normalizado de los segmentos de alojamiento.
druid.segment.cost.raw
(count)
Se utiliza en el balance de costes. El coste bruto de los segmentos de alojamiento.
druid.segment.deleted.count
(count)
Número de segmentos abandonados debido a las reglas.
Se muestra como segmento
druid.segment.dropQueue.count
(gauge)
Número de segmentos a abandonar.
Se muestra como segmento
druid.segment.dropped.count
(count)
Número de segmentos abandonados por estar eclipsados.
Se muestra como segmento
druid.segment.loadQueue.count
(gauge)
Número de segmentos a cargar.
Se muestra como segmento
druid.segment.loadQueue.failed
(gauge)
Número de segmentos que no se han podido cargar.
Se muestra como segmento
druid.segment.loadQueue.size
(gauge)
Tamaño en bytes de los segmentos a cargar.
Se muestra como byte
druid.segment.max
(gauge)
Límite máximo de bytes disponible para los segmentos.
Se muestra como byte
druid.segment.moved.bytes
(count)
Tamaño en bytes de los segmentos movidos/archivados a través de la tarea Mover.
Se muestra como byte
druid.segment.moved.count
(count)
Número de segmentos movidos en el clúster.
Se muestra como segmento
druid.segment.nuked.bytes
(count)
Tamaño en bytes de los segmentos eliminados mediante la tarea Eliminar.
Se muestra como byte
druid.segment.overShadowed.count
(gauge)
Número de segmentos eclipsados.
Se muestra como segmento
druid.segment.pendingDelete
(gauge)
Tamaño en disco en bytes de los segmentos que están esperando a ser borrados.
Se muestra como byte
druid.segment.scan.pending
(gauge)
Número de segmentos en cola a la espera de ser escaneados.
Se muestra como unidad
druid.segment.size
(gauge)
Tamaño en bytes de los segmentos disponibles.
Se muestra como byte
druid.segment.unavailable.count
(count)
Número de segmentos (sin incluir las réplicas) que quedan por cargar hasta que los segmentos que deberían cargarse en el clúster estén disponibles para las consultas.
Se muestra como segmento
druid.segment.underReplicated.count
(count)
Número de segmentos (incluidas las réplicas) que quedan por cargar hasta que los segmentos que deberían cargarse en el clúster estén disponibles para las consultas.
Se muestra como segmento
druid.segment.unneeded.count
(count)
Número de segmentos abandonados por estar marcados como no utilizados.
Se muestra como segmento
druid.segment.used
(gauge)
Bytes utilizados para los segmentos servidos.
Se muestra como byte
druid.segment.usedPercent
(gauge)
Porcentaje de espacio utilizado por los segmentos servidos.
Se muestra como fracción
druid.service.health
(gauge)
1 si el servicio está en buen estado, 0 en caso contrario
druid.sys.cpu
(gauge)
CPU utilizada.
Se muestra en porcentaje
druid.sys.disk.read.count
(count)
Lecturas del disco.
Se muestra como lectura
druid.sys.disk.read.size
(count)
Bytes leídos del disco. Se puede utilizar para determinar la cantidad de paginación que se está produciendo con respecto a los segmentos.
Se muestra como byte
druid.sys.disk.write.count
(count)
Escrituras del disco.
Se muestra como escritura
druid.sys.disk.write.size
(count)
Bytes escritos en el disco. Se puede utilizar para determinar cuánta paginación se está produciendo con respecto a los segmentos.
Se muestra como byte
druid.sys.fs.max
(gauge)
Máximo de bytes del sistema de archivos.
Se muestra como byte
druid.sys.fs.used
(gauge)
Bytes del sistema de archivos utilizados.
Se muestra como byte
druid.sys.mem.max
(gauge)
Máximo de memoria.
Se muestra como byte
druid.sys.mem.used
(gauge)
Memoria utilizada.
Se muestra como byte
druid.sys.net.read.size
(count)
Bytes leídos de la red.
Se muestra como byte
druid.sys.net.write.size
(count)
Bytes escritos en la red.
Se muestra como byte
druid.sys.storage.used
(gauge)
Espacio de disco utilizado.
Se muestra como byte
druid.sys.swap.free
(gauge)
Swap libre en bytes.
Se muestra como byte
druid.sys.swap.max
(gauge)
Swap máximo en bytes.
Se muestra como byte
druid.sys.swap.pageIn
(gauge)
Páginas entrantes al swap.
Se muestra como página
druid.sys.swap.pageOut
(gauge)
Páginas salientes del swap.
Se muestra como página
druid.task.failed.count
(count)
Número de tareas fallidas por periodo de emisión. Esta métrica solo está disponible si se incluye el módulo TaskCountStatsMonitor.
Paged in swap como tarea
druid.task.pending.count
(count)
Número de tareas pendientes actuales. Esta métrica solo está disponible si se incluye el módulo TaskCountStatsMonitor.
Se muestra como tarea
druid.task.run.time
(gauge)
Milisegundos que tarda en ejecutarse una tarea.
Se muestra como milisegundo
druid.task.running.count
(count)
Número de tareas en ejecución. Esta métrica solo está disponible si se incluye el módulo TaskCountStatsMonitor.
Se muestra como tarea
druid.task.success.count
(count)
Número de tareas realizadas con éxito por periodo de emisión. Esta métrica solo está disponible si se incluye el módulo TaskCountStatsMonitor.
Se muestra como tarea
druid.task.waiting.count
(count)
Número de tareas actuales en espera. Esta métrica solo está disponible si se incluye el módulo TaskCountStatsMonitor.
Se muestra como tarea

Eventos

El check de Druid no incluye eventos.

Checks de servicio

druid.service.can_connect

Devuelve CRITICAL si el check no puede conectarse al servicio de Druid. En caso contrario, devuelve OK.

Estados: ok, critical

druid.service.health

Devuelve CRITICAL si el servicio de Druid no está en buen estado. En caso contrario, devuelve OK.

Estados: ok, critical

Solucionar problemas

¿Necesitas ayuda? Ponte en contacto con el soporte de Datadog.