Nouvelles annonces sur les technologies sans serveur et réseau ainsi que sur le RUM (Real-User Monitoring) dévoilées à la conférence Dash ! Nouvelles annonces dévoilées à la conférence Dash !

Kafka

Agent Check Check de l'Agent

Supported OS: Linux Mac OS Windows

Dashboard Kafka

Présentation

Associez Kafka à Datadog pour :

  • Visualiser les performances de votre cluster en temps réel
  • Corréler les performances de Kafka avec le reste de vos applications

Ce check prévoit une limite de 350 métriques par instance. Le nombre de métriques renvoyées est indiqué dans la page d’information. Choisissez des métriques pertinentes en modifiant la configuration ci-dessous. Pour découvrir comment modifier la liste des métriques à recueillir, consultez la documentation relative aux checks JMX afin d’obtenir des instructions détaillées.

Pour recueillir les métriques relatives aux consommateurs de Kafka, consultez la section check kafka_consumer.

Implémentation

Installation

Le check Kafka de l’Agent est inclus avec le paquet de l’Agent Datadog : vous n’avez donc rien d’autre à installer sur vos nœuds Kafka.

Le check recueille des métriques via JMX, un JVM est donc nécessaire sur chaque nœud Kafka pour que l’Agent puisse dupliquer jmxfetch. Vous pouvez utiliser le même JVM que Kafka.

Configuration

Modifiez le fichier kafka.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent.

Collecte de métriques

Les instructions suivantes sont destinées aux versions >= 5.0 de l’Agent Datadog. Pour les versions antérieures, consultez l’ancienne documentation.

Les noms des beans de Kafka dépendent de la version précise de Kafka que vous exécutez. Utilisez le fichier d’exemple de configuration fourni avec l’Agent en tant que base, puisqu’il s’agit de la configuration la plus récente. Remarque : la version de l’Agent citée dans l’exemple peut correspondre à une version plus récente que celle que vous avez installée.

Après avoir configuré kafka.yaml, redémarrez l’Agent pour commencer à envoyer vos métriques Kafka à Datadog.

Collecte de logs

Disponible à partir des versions > 6.0 de l’Agent

Kafka utilise l’enregistreur log4j par défaut. Pour activer la journalisation dans un fichier et personnaliser le format, modifiez le fichier log4j.properties :

# Définir le niveau de l'enregistreur racine sur INFO et son seul appender sur 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

Par défaut, notre pipeline d’intégration prend en charge les expressions de conversion suivantes :

  %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

Dupliquez et modifiez le pipeline d’intégration si vous utilisez un autre format.

  • La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml avec :
  logs_enabled: true
  • Ajoutez le bloc de configuration suivant à votre fichier kafka.d/conf.yaml. Modifiez les valeurs des paramètres path et service en fonction de votre environnement. Consultez le fichier d’exemple kafka.d/conf.yaml pour découvrir toutes les options de configuration 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])

Pour en savoir plus sur la collecte de logs, consultez la documentation relative aux logs.

Validation

Lancez la sous-commande « status » de l’Agent et cherchez kafka dans la section JMXFetch :

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

Données collectées

Métriques

kafka.net.bytes_out
(gauge)
Outgoing byte rate.
shown as byte
kafka.net.bytes_in
(gauge)
Incoming byte rate.
shown as byte
kafka.net.bytes_rejected
(gauge)
Rejected byte rate.
shown as byte
kafka.net.processor.avg.idle.pct
(gauge)
Average fraction of time the network processor threads are idle.
shown as fraction
kafka.messages_in
(gauge)
Incoming message rate.
shown as message
kafka.request.channel.queue.size
(gauge)
Number of queued requests.
shown as request
kafka.request.fetch.failed
(gauge)
Number of client fetch request failures.
shown as request
kafka.request.fetch.failed_per_second
(gauge)
Rate of client fetch request failures per second.
shown as request
kafka.request.handler.avg.idle.pct
(gauge)
Average fraction of time the request handler threads are idle.
shown as fraction
kafka.request.produce.time.avg
(gauge)
Average time for a produce request.
shown as millisecond
kafka.request.produce.time.99percentile
(gauge)
Time for produce requests for 99th percentile.
shown as millisecond
kafka.request.produce.failed_per_second
(gauge)
Rate of failed produce requests per second.
shown as request
kafka.request.produce.failed
(gauge)
Number of failed produce requests.
shown as request
kafka.request.fetch.time.avg
(gauge)
Average time per fetch request.
shown as millisecond
kafka.request.fetch.time.99percentile
(gauge)
Time for fetch requests for 99th percentile.
shown as millisecond
kafka.request.update_metadata.time.avg
(gauge)
Average time for a request to update metadata.
shown as millisecond
kafka.request.update_metadata.time.99percentile
(gauge)
Time for update metadata requests for 99th percentile.
shown as millisecond
kafka.request.metadata.time.avg
(gauge)
Average time for metadata request.
shown as millisecond
kafka.request.metadata.time.99percentile
(gauge)
Time for metadata requests for 99th percentile.
shown as millisecond
kafka.request.offsets.time.avg
(gauge)
Average time for an offset request.
shown as millisecond
kafka.request.offsets.time.99percentile
(gauge)
Time for offset requests for 99th percentile.
shown as millisecond
kafka.replication.isr_shrinks
(gauge)
Rate of replicas leaving the ISR pool.
shown as node
kafka.replication.isr_expands
(gauge)
Rate of replicas joining the ISR pool.
shown as node
kafka.replication.leader_elections
(gauge)
Leader election rate.
shown as event
kafka.replication.unclean_leader_elections
(gauge)
Unclean leader election rate.
shown as event
kafka.replication.under_replicated_partitions
(gauge)
Number of unreplicated partitions.
kafka.session.zookeeper.disconnect
(gauge)
Zookeeper client disconnect rate.
shown as event
kafka.session.zookeeper.expire
(gauge)
Zookeeper client session expiration rate.
shown as event
kafka.session.zookeeper.readonly
(gauge)
Zookeeper client readonly rate.
shown as event
kafka.session.zookeeper.sync
(gauge)
Zookeeeper client sync rate.
shown as event
kafka.log.flush_rate
(gauge)
Log flush rate.
shown as flush
kafka.consumer.delayed_requests
(gauge)
Number of delayed consumer requests.
shown as request
kafka.consumer.expires_per_second
(gauge)
Rate of delayed consumer request expiration.
shown as eviction
kafka.expires_sec
(gauge)
Rate of delayed producer request expiration.
shown as eviction
kafka.follower.expires_per_second
(gauge)
Rate of request expiration on followers.
shown as eviction
kafka.producer.available_buffer_bytes
(gauge)
The total amount of buffer memory that is not being used (either unallocated or in the free list)
shown as byte
kafka.producer.batch_size_avg
(gauge)
The average number of bytes sent per partition per-request.
shown as byte
kafka.producer.compression_rate_avg
(rate)
The average compression rate of record batches.
shown as record
kafka.producer.bufferpool_wait_time
(gauge)
The fraction of time an appender waits for space allocation.
kafka.producer.compression_rate
(gauge)
The average compression rate of record batches for a topic
shown as record
kafka.producer.delayed_requests
(gauge)
Number of producer requests delayed.
shown as request
kafka.producer.expires_per_seconds
(gauge)
Rate of producer request expiration.
shown as eviction
kafka.producer.batch_size_max
(gauge)
The max number of bytes sent per partition per-request.
shown as byte
kafka.producer.record_send_rate
(gauge)
The average number of records sent per second for a topic
shown as record
kafka.producer.record_retry_rate
(gauge)
The average per-second number of retried record sends for a topic
shown as record
kafka.producer.record_error_rate
(gauge)
The average per-second number of retried record sends for a topic
shown as error
kafka.producer.records_per_request
(gauge)
The average number of records sent per second.
shown as record
kafka.producer.record_queue_time_avg
(gauge)
The average time in ms record batches spent in the record accumulator.
shown as millisecond
kafka.producer.record_queue_time_max
(gauge)
The maximum time in ms record batches spent in the record accumulator.
shown as millisecond
kafka.producer.record_size_avg
(gauge)
The average record size.
shown as byte
kafka.producer.record_size_max
(gauge)
The maximum record size.
shown as byte
kafka.producer.request_rate
(gauge)
Number of producer requests per second.
shown as request
kafka.producer.response_rate
(gauge)
Number of producer responses per second.
shown as response
kafka.producer.requests_in_flight
(gauge)
The current number of in-flight requests awaiting a response.
shown as request
kafka.producer.request_latency_avg
(gauge)
Producer average request latency.
shown as millisecond
kafka.producer.request_latency_max
(gauge)
The maximum request latency in ms.
shown as millisecond
kafka.producer.bytes_out
(gauge)
Producer bytes out rate.
shown as byte
kafka.producer.metadata_age
(gauge)
The age in seconds of the current producer metadata being used.
shown as second
kafka.producer.message_rate
(gauge)
Producer message rate.
shown as message
kafka.producer.buffer_bytes_total
(gauge)
The maximum amount of buffer memory the client can use (whether or not it is currently used).
shown as byte
kafka.producer.io_wait
(gauge)
Producer I/O wait time.
shown as nanosecond
kafka.producer.throttle_time_avg
(gauge)
The average time in ms a request was throttled by a broker.
shown as millisecond
kafka.producer.throttle_time_max
(gauge)
The maximum time in ms a request was throttled by a broker.
shown as millisecond
kafka.producer.waiting_threads
(gauge)
The number of user threads blocked waiting for buffer memory to enqueue their records.
shown as thread
kafka.consumer.max_lag
(gauge)
Maximum consumer lag.
shown as offset
kafka.consumer.fetch_rate
(gauge)
The minimum rate at which the consumer sends fetch requests to a broker.
shown as request
kafka.consumer.fetch_size_avg
(gauge)
The average number of bytes fetched per request for a specific topic.
shown as request
kafka.consumer.fetch_size_max
(gauge)
The maximum number of bytes fetched per request for a specific topic.
shown as request
kafka.consumer.bytes_consumed
(gauge)
The average number of bytes consumed per second for a specific topic.
shown as byte
kafka.consumer.bytes_in
(gauge)
Consumer bytes in rate.
shown as byte
kafka.consumer.messages_in
(gauge)
Rate of consumer message consumption.
shown as message
kafka.consumer.zookeeper_commits
(gauge)
Rate of offset commits to ZooKeeper.
shown as write
kafka.consumer.kafka_commits
(gauge)
Rate of offset commits to Kafka.
shown as write
kafka.consumer.records_consumed
(gauge)
The average number of records consumed per second for a specific topic.
shown as record
kafka.consumer.records_per_request_avg
(gauge)
The average number of records in each request for a specific topic.
shown as record
kafka.topic.messages_in
(gauge)
Incoming message rate by topic
shown as message
kafka.topic.net.bytes_out
(gauge)
Outgoing byte rate by topic.
shown as byte
kafka.topic.net.bytes_in
(gauge)
Incoming byte rate by topic.
shown as byte
kafka.topic.net.bytes_rejected
(gauge)
Rejected byte rate by topic.
shown as byte

Événements

Le check Kafka n’inclut aucun événement.

Checks de service

kafka.can_connect Renvoie CRITICAL si l’Agent n’est pas capable de se connecter à l’instance Kafka qu’il surveille et d’y recueillir des métriques. Si ce n’est pas le cas, renvoie OK.

Dépannage

Pour aller plus loin


Mistake in the docs? Feel free to contribute!

Check de l’Agent : Kafka consumer

Dashboard Kafka

Présentation

Ce check d’Agent recueille uniquement les métriques pour les décalages de messages. Si vous souhaitez recueillir les métriques JMX sur des agents Kafka ou des consommateurs/producteurs basés sur Java, consultez le check Kafka.

Ce check récupère les décalages records des agents Kafka, les décalages des consommateurs qui sont stockés dans Kafka ou Zookeeper (pour ceux qui l’utilisent encore) et le retard des consommateurs calculé (qui correspond à la différence entre le décalage des agents et le celui des consommateurs).

Implémentation

Installation

Le check Kafka consumer de l’Agent est inclus avec le paquet de l’Agent Datadog : vous n’avez donc rien d’autre à installer sur vos nœuds Kafka.

Configuration

Créez un fichier kafka_consumer.yaml en vous inspirant de ce fichier d’exemple. Ensuite, redémarrez l’Agent Datadog pour commencer à envoyer des métriques à Datadog.

Validation

Lancez la sous-commande status de l’Agent et cherchez kafka_consumer dans la section Checks.

Données collectées

Métriques

kafka.broker_offset
(gauge)
Current message offset on broker.
shown as offset
kafka.consumer_lag
(gauge)
Lag in messages between consumer and broker.
shown as offset
kafka.consumer_offset
(gauge)
Current message offset on consumer.
shown as offset

Événements

consumer_lag :

L’Agent Datadog génère un événement lorsque la valeur de la métrique consumer_lag descend en dessous de 0, et lui ajoute les tags topic, partition et consumer_group.

Checks de service

Le check Kafka-consumer n’inclut aucun check de service.

Dépannage

Pour aller plus loin


Mistake in the docs? Feel free to contribute!