Broker Kafka

Supported OS Linux Windows Mac OS

Versión de la integración4.0.0

Dashboard de Kafka

Información general

Visualiza las métricas del agente de Kafka recopiladas para obtener una vista de 360 grados del estado y el rendimiento de tus clústeres de Kafka en tiempo real. Con esta integración, puedes recopilar métricas y logs de tu despliegue de Kafka para visualizar la telemetría y alertar sobre el rendimiento de su stack tecnológico de Kafka.

Nota:

  • Este check tiene un límite de 350 métricas por instancia. El número de métricas devueltas se indica en la salida de estado del Agent. Especifica las métricas que te interesen editando la configuración siguiente. Para obtener instrucciones más detalladas sobre la personalización de las métricas a recopilar, consulta la documentación de Checks de JMX.
  • Este ejemplo adjunto de configuración de una integración sólo funciona para Kafka v0.8.2 o posterior. Si utilizas una versión anterior, consulta los archivos de muestras lanzadas del Agent v5.2.x.
  • Para recopilar las métricas de los consumidores de Kafka, consulta check de kafka_consumer.

Considera Data Streams Monitoring para mejorar tu integración de Kafka. Esta solución permite la visualización de pipeline y el rastreo de retrasos, que te ayudará a identificar y resolver cuellos de botella.

Configuración

Instalación

El check de Kafka del Agent está incluido en el paquete del Datadog Agent , por lo que no necesitas instalar nada más en tus nodos Kafka.

El check recopila métricas de JMX con JMXFetch. Se necesita una JVM en cada nodo de kafka para que el Agent pueda ejecutar JMXFetch. Para ello se puede utilizar la misma JVM que utiliza Kafka.

Nota: El check de Kafka no puede utilizarse con Managed Streaming para Apache Kafka (Amazon MSK). Utiliza en su lugar la integración con Amazon MSK.

Configuración

host

Para configurar este check para un Agent que se ejecuta en un host:

Recopilación de métricas
  1. Edita el archivo kafka.d/conf.yaml, en la carpeta conf.d/ en la raíz de tu directorio de configuración del Agent. Los nombres de los beans de Kafka dependen de la versión exacta de Kafka que estés ejecutando. Utiliza el archivo de configuración de ejemplo que viene empaquetado con el Agent como base ya que es la configuración más actualizada. Nota: la versión del Agent del ejemplo puede ser para una versión del Agent más reciente que la que tienes instalada.

  2. Reinicia el Agent.

Recopilación de logs

Disponible para las versiones 6.0 o posteriores del Agent

  1. Kafka utiliza el registrador log4j por defecto. Para activar el registro en un archivo y personalizar el formato, edita el archivo log4j.properties:

      # Set root logger level to INFO and its only appender to R
      log4j.rootLogger=INFO, R
      log4j.appender.R.File=/var/log/kafka/server.log
      log4j.appender.R.layout=org.apache.log4j.PatternLayout
      log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    
  2. Por defecto, el pipeline de integración de Datadog admite los siguientes patrones de conversión:

      %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
      %d [%t] %-5p %c - %m%n
      %r [%t] %p %c %x - %m%n
      [%d] %p %m (%c)%n
    

    Clona y edita el pipeline de integración si tienes un formato diferente.

  3. La recopilación de logs está desactivada en forma predeterminada en el Datadog Agent, actívala en tu archivo datadog.yaml:

    logs_enabled: true
    
  4. Añade el siguiente bloque de configuración a tu archivo kafka.d/conf.yaml. Cambia los valores de los parámetros path y service en función de tu entorno. Consulta el ejemplo de kafka.d/conf.yaml para conocer todas las opciones de configuración disponibles.

    logs:
      - type: file
        path: /var/log/kafka/server.log
        source: kafka
        service: myapp
        #To handle multi line that starts with yyyy-mm-dd use the following pattern
        #log_processing_rules:
        #  - type: multi_line
        #    name: log_start_with_date
        #    pattern: \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])
    
  5. Reinicia el Agent.

En contenedores

Recopilación de métricas

Para entornos en contenedores, consulta la guía Autodiscovery con JMX.

Recopilación de logs

Disponible para las versiones 6.0 o posteriores del Agent

La recopilación de logs está desactivada en forma predeterminada en el Datadog Agent. Para activarla, consulta Recopilación de logs de Kubernetes.

ParámetroValor
<LOG_CONFIG>{"source": "kafka", "service": "<SERVICE_NAME>"}

Validación

[Ejecuta el subcomando de estado del Agent(https://docs.datadoghq.com/agent/guide/agent-commands/#agent-status-and-information) y busca kafka en la sección JMXFetch:

========
JMXFetch
========
  Initialized checks
  ==================
    kafka
      instance_name : kafka-localhost-9999
      message :
      metric_count : 46
      service_check_count : 0
      status : OK

Datos recopilados

Métricas

kafka.consumer.bytes_consumed
(medidor)
El número medio de bytes consumidos por segundo para un tema específico.
Mostrado como byte
kafka.consumer.bytes_in
(medidor)
Tasa de bytes del consumidor.
Mostrado como byte
kafka.consumer.delayed_requests
(medidor)
Número de solicitudes de consumidores con retraso.
Mostrado como solicitud
kafka.consumer.expires_per_second
(medidor)
Tasa de retraso en el vencimiento de las solicitudes de los consumidores.
Mostrado como expulsión
kafka.consumer.fetch_rate
(medidor)
La velocidad mínima a la que el consumidor envía solicitudes de búsqueda a un agente.
Mostrado como solicitud
kafka.consumer.fetch_size_avg
(medidor)
El número medio de bytes obtenidos por solicitud para un tema específico.
Mostrado como byte
kafka.consumer.fetch_size_max
(medidor)
El número máximo de bytes obtenidos por solicitud para un tema específico.
Mostrado como byte
kafka.consumer.kafka_commits
(medidor)
Tasa de confirmaciones desplazadas a Kafka.
Mostrado como escritura
kafka.consumer.max_lag
(medidor)
Retraso máximo del consumidor.
Mostrado como desplazamiento
kafka.consumer.messages_in
(medidor)
Tasa de consumo de mensajes de los consumidores.
Mostrado como mensaje
kafka.consumer.records_consumed
(medidor)
El número medio de registros consumidos por segundo para un tema específico.
Mostrado como registro
kafka.consumer.records_per_request_avg
(medidor)
El número medio de registros en cada solicitud para un tema específico.
Mostrado como registro
kafka.consumer.zookeeper_commits
(medidor)
Tasa de confirmaciones desplazadas a ZooKeeper.
Mostrado como escritura
kafka.expires_sec
(medidor)
Tasa de retraso en el vencimiento de la solicitud del productor.
Mostrado como expulsión
kafka.follower.expires_per_second
(medidor)
Tasa de vencimiento de solicitudes sobre seguidores.
Mostrado como expulsión
kafka.log.flush_rate.rate
(medidor)
Tasa de descarga de logs.
Mostrado como descarga
kafka.messages_in.rate
(medidor)
Tasa de mensajes entrantes.
Mostrado como mensaje
kafka.net.bytes_in.rate
(medidor)
Tasa de bytes entrantes.
Mostrado como byte
kafka.net.bytes_out
(medidor)
Total de bytes salientes.
Mostrado como byte
kafka.net.bytes_out.rate
(medidor)
Tasa de bytes salientes.
Mostrado como byte
kafka.net.bytes_rejected.rate
(medidor)
Tasa de bytes rechazados.
Mostrado como byte
kafka.net.processor.avg.idle.pct.rate
(medidor)
Fracción media de tiempo en que los hilos del procesador de red están inactivos.
Mostrado como fracción
kafka.producer.available_buffer_bytes
(medidor)
La cantidad total de memoria del búfer que no se está utilizando (ya sea sin asignar o en la lista libre)
Mostrado como byte
kafka.producer.batch_size_avg
(medidor)
El número medio de bytes enviados por partición por solicitud.
Mostrado como byte
kafka.producer.batch_size_max
(medidor)
El número máximo de bytes enviados por partición por solicitud.
Mostrado como byte
kafka.producer.buffer_bytes_total
(medidor)
La cantidad máxima de memoria del búfer que el cliente puede utilizar (tanto si se utiliza actualmente como si no).
Mostrado como byte
kafka.producer.bufferpool_wait_ratio
(medidor)
La fracción de tiempo que un appender espera para la asignación de espacio.
kafka.producer.bufferpool_wait_time
(medidor)
La fracción de tiempo que un appender espera para la asignación de espacio.
kafka.producer.bufferpool_wait_time_ns_total
(medidor)
El tiempo total en nanosegundos que un appender espera para la asignación de espacio.
Mostrado como nanosegundo
kafka.producer.bytes_out
(medidor)
Tasa de salida de bytes del productor.
Mostrado como byte
kafka.producer.compression_rate
(medidor)
La tasa de compresión media de los lotes de registros para un tema
Mostrado como fracción
kafka.producer.compression_rate_avg
(tasa)
La tasa de compresión media de los lotes de registros.
Mostrado como fracción
kafka.producer.delayed_requests
(medidor)
Número de solicitudes de productores retrasadas.
Mostrado como solicitud
kafka.producer.expires_per_seconds
(medidor)
Tasa de vencimiento de las solicitudes de los productores.
Mostrado como expulsión
kafka.producer.io_wait
(medidor)
Tiempo de espera de E/S del productor.
Mostrado como nanosegundo
kafka.producer.message_rate
(medidor)
Tasa de mensajes del productor.
Mostrado como mensaje
kafka.producer.metadata_age
(medidor)
La antigüedad en segundos de los metadatos del productor actual que se están utilizando.
Mostrado como segundo
kafka.producer.record_error_rate
(medidor)
Número medio por segundo de envíos de registros con errores para un tema
Mostrado como error
kafka.producer.record_queue_time_avg
(medidor)
El tiempo medio en ms que los lotes de registros pasan en el acumulador de registros.
Mostrado como milisegundo
kafka.producer.record_queue_time_max
(medidor)
El tiempo máximo en ms que los lotes de registros pasan en el acumulador de registros.
Mostrado como milisegundo
kafka.producer.record_retry_rate
(medidor)
Número medio por segundo de reintentos de envío de registros para un tema
Mostrado como registro
kafka.producer.record_send_rate
(medidor)
El número medio de registros enviados por segundo para un tema
Mostrado como registro
kafka.producer.record_size_avg
(medidor)
El tamaño medio del registro.
Mostrado como byte
kafka.producer.record_size_max
(medidor)
El tamaño máximo de registro.
Mostrado como byte
kafka.producer.records_per_request
(medidor)
El número medio de registros enviados por segundo.
Mostrado como registro
kafka.producer.request_latency_avg
(medidor)
Latencia media de la solicitud del productor.
Mostrado en milisegundos
kafka.producer.request_latency_max
(medidor)
La latencia máxima de la solicitud en ms.
Mostrado como milisegundo
kafka.producer.request_rate
(medidor)
Número de solicitudes de productores por segundo.
Mostrado como solicitud
kafka.producer.requests_in_flight
(medidor)
Número actual de solicitudes en espera de respuesta.
Mostrado como solicitud
kafka.producer.response_rate
(medidor)
Número de respuestas del productor por segundo.
Mostrado como respuesta
kafka.producer.throttle_time_avg
(medidor)
El tiempo medio en ms que una solicitud fue limitada por un agente.
Mostrado como milisegundo
kafka.producer.throttle_time_max
(medidor)
El tiempo máximo en ms que una solicitud fue limitada por un agente.
Mostrado como milisegundo
kafka.producer.waiting_threads
(medidor)
El número de hilos de usuario bloqueados en espera de memoria intermedia para poner en cola sus registros.
Mostrado como hilo
kafka.replication.active_controller_count
(medidor)
Número de controladores activos en el clúster.
Mostrado como nodo
kafka.replication.isr_expands.rate
(medidor)
Tasa de réplicas que se unen a la mezcla ISR.
Mostrado como nodo
kafka.replication.isr_shrinks.rate
(medidor)
Tasa de réplicas que abandonan la mezcla ISR.
Mostrado como nodo
kafka.replication.leader_count
(medidor)
Número de líderes en este agente.
Mostrado como nodo
kafka.replication.leader_elections.rate
(medidor)
Tasa de elección del líder.
Mostrado como evento
kafka.replication.max_lag
(medidor)
Máximo retraso en mensajes entre las réplicas seguidora y líder.
Mostrado como desplazamiento
kafka.replication.offline_partitions_count
(medidor)
Número de particiones que no tienen un líder activo.
kafka.replication.partition_count
(medidor)
Número de particiones en todos los temas del clúster.
kafka.replication.unclean_leader_elections.rate
(medidor)
Tasa de elección del líder sucio.
Mostrado como evento
kafka.replication.under_min_isr_partition_count
(medidor)
Número de particiones ISR por debajo del mínimo.
kafka.replication.under_replicated_partitions
(medidor)
Número de particiones bajo replicación.
kafka.request.channel.queue.size
(medidor)
Número de solicitudes en cola.
Mostrado como solicitud
kafka.request.fetch.failed.rate
(medidor)
Tasa de fallos en las solicitudes de búsqueda de los clientes.
Mostrado como solicitud
kafka.request.fetch_consumer.rate
(medidor)
Tasa de solicitudes de consumidores buscadas.
Mostrado como solicitud
kafka.request.fetch_consumer.time.99percentile
(medidor)
Tiempo total en ms para servir la solicitud especificada.
Mostrado como milisegundo
kafka.request.fetch_consumer.time.avg
(medidor)
Tiempo total en ms para servir la solicitud especificada.
Mostrado como milisegundo
kafka.request.fetch_follower.rate
(medidor)
Tasa de solicitudes de seguidores buscadas.
Mostrado como solicitud
kafka.request.fetch_follower.time.99percentile
(medidor)
Tiempo total en ms para servir la solicitud especificada.
Mostrado como milisegundo
kafka.request.fetch_follower.time.avg
(medidor)
Tiempo total en ms para servir la solicitud especificada.
Mostrado como milisegundo
kafka.request.fetch_request_purgatory.size
(medidor)
Número de solicitudes en espera en el purgatorio de productores.
Mostrado como solicitud
kafka.request.handler.avg.idle.pct.rate
(medidor)
Fracción media de tiempo en que los hilos del gestor de solicitudes están inactivos.
Mostrado como fracción
kafka.request.metadata.time.99percentile
(medidor)
Tiempo de solicitudes de metadatos para el percentil 99.
Mostrado en milisegundos
kafka.request.metadata.time.avg
(medidor)
Tiempo medio de solicitud de metadatos.
Mostrado en milisegundos
kafka.request.offsets.time.99percentile
(medidor)
Tiempo de las solicitudes de desplazamiento para el percentil 99.
Mostrado en milisegundos
kafka.request.offsets.time.avg
(medidor)
Tiempo medio para una solicitud de desplazamiento.
Mostrado en milisegundos
kafka.request.produce.failed.rate
(medidor)
Tasa de solicitudes de producción fallidas.
Mostrado como solicitud
kafka.request.produce.rate
(medidor)
Producir tasa de solicitudes.
Mostrado como solicitud
kafka.request.produce.time.99percentile
(medidor)
Tiempo para producir solicitudes para el percentil 99.
Mostrado en milisegundos
kafka.request.produce.time.avg
(medidor)
Tiempo medio de una solicitud de producción.
Mostrado en milisegundos
kafka.request.producer_request_purgatory.size
(medidor)
Número de solicitudes en espera en el purgatorio de productores
Mostrado como solicitud
kafka.request.update_metadata.time.99percentile
(medidor)
Tiempo de actualización de las solicitudes de metadatos para el percentil 99.
Mostrado en milisegundos
kafka.request.update_metadata.time.avg
(medidor)
Tiempo medio para que una solicitud actualice los metadatos.
Mostrado en milisegundos
kafka.server.socket.connection_count
(medidor)
Número de conexiones abiertas actualmente para el agente.
Mostrado como conexión
kafka.session.fetch.count
(medidor)
Número de sesiones de búsqueda.
kafka.session.fetch.eviction
(medidor)
Tasa de expulsión de la sesión de búsqueda.
Mostrado como evento
kafka.session.zookeeper.disconnect.rate
(medidor)
Tasa de desconexión de clientes de Zookeeper.
Mostrado como evento
kafka.session.zookeeper.expire.rate
(medidor)
Tasa de vencimiento de la sesión del cliente de Zookeeper.
Mostrado como evento
kafka.session.zookeeper.readonly.rate
(medidor)
Tasa de sólo lectura del cliente de Zookeeper.
Mostrado como evento
kafka.session.zookeeper.sync.rate
(medidor)
Tasa de sincronización del cliente de Zookeeper.
Mostrado como evento
kafka.topic.messages_in.rate
(medidor)
Tasa de mensajes entrantes por tema
Mostrado como mensaje
kafka.topic.net.bytes_in.rate
(medidor)
Tasa de bytes entrantes por tema.
Mostrado como byte
kafka.topic.net.bytes_out.rate
(medidor)
Tasa de bytes salientes por tema.
Mostrado como byte
kafka.topic.net.bytes_rejected.rate
(medidor)
Tasa de bytes rechazados por tema.
Mostrado como byte

Eventos

El check de Kafka no incluye eventos.

Checks de servicio

kafka.can_connect

Devuelve CRITICAL si el Agent no puede conectarse y recopilar métricas de la instancia de Kafka monitorizada, WARNING si no se recopilan métricas y OK en caso contrario.

Estados: ok, crítico, advertencia

Solucionar problemas

Referencias adicionales