7.5. 添加 Kafka Exporter

Kafka Exporter 是一个开源项目,用于增强对 Apache Kafka 代理和客户端的监控。Kafka Exporter 附带 AMQ Streams 以用于部署 Kafka 集群,以便从 Kafka 代理中提取与偏移、消费者组、消费者滞后和主题相关的额外指标数据。

例如,使用指标数据来帮助识别慢速消费者。

滞后数据作为 Prometheus 指标公开,随后可在 Grafana 中提供以进行分析。

如果您已在使用 Prometheus 和 Grafana 监控内置 Kafka 指标,您可以将 Prometheus 配置为同时提取 Kafka Exporter Prometheus 端点。

AMQ Streams 在 示例/metrics/grafana-dashboards/strimzi-kafka-exporter.json 中包含 Kafka Exporter 仪表板示例。

7.5.1. 监控消费者滞后

消费滞后表明消息的生产和消耗速度不同。具体来说,消费者对给定消费者组的滞后指示分区中最后一条消息与该消费者当前采用的消息之间的延迟。

与分区日志末尾相比,滞后反映了消费者偏移的位置。

生产者和消费者偏移的消费者滞后情况

Consumer lag

这种差别有时被称为制作者偏移和消费者偏移之间的 delta : Kafka 代理主题分区中的读取和写入位置。

假设主题流 100 条消息秒。制作者偏移(主题分区头)和消费者最后的偏移之间有 1000 条消息的滞后意味着 10 秒的延迟。

监控消费者滞后的重要性

对于依赖(near)实时数据处理的应用程序,监控消费者滞后情况对于检查它是否不再太大至关重要。滞后越高,进程距离实时处理目标越高。

例如,消费者的滞后可能是由于消耗过多的陈旧数据而导致的,这些数据尚未清除,或者是通过计划外关机造成的。

减少消费者滞后

降低滞后率的典型操作包括:

  • 通过添加新用户来扩展消费者组
  • 增加消息的保留时间以保留在某个主题中
  • 添加更多磁盘容量来增加消息缓冲

降低消费者滞后问题的操作取决于底层基础架构,而 AMQ Streams 支持用例。例如,适应消费者不太可能从其磁盘缓存服务获取请求的代理中受益。在某些情况下,可以同意在消费者发现信息之前自动丢弃消息。