第 21 章 为 Apache Kafka 的 Streams 设置指标和仪表板
收集指标对于了解 Kafka 部署的健康状态和性能至关重要。通过监控指标,您可以在问题变得至关重要前主动识别问题,并根据资源分配和容量规划做出明智的决策。如果没有指标,您可能会对 Kafka 部署的行为有有限的可见性,这有助于进行故障排除。设置指标可节省长时间运行的时间和资源,并帮助确保 Kafka 部署的可靠性。
对于 Apache Kafka 的每个组件都提供了指标数据,它可让您了解其独立性能。虽然其他组件需要配置来公开指标暴露,但 Apache Kafka operator 的 Streams 默认自动公开 Prometheus 指标。这些指标包括:
- 协调计数
- 正在处理自定义资源数
- 协调持续时间
- JVM 指标
您还可以通过在 Kafka
资源的监听程序或授权配置中启用 enableMetrics
属性来收集特定于 oauth
身份验证和 opa
或 keycloak
授权的指标。同样,您可以在自定义资源中启用 oauth
身份验证的指标,如 KafkaBridge
,KafkaConnect
,KafkaMirrorMaker
, 和 KafkaMirrorMaker2
。
Apache Kafka 控制台的 Streams 提供了一个用户界面,用于监控 Kafka 集群中的指标。通过将由 Streams for Apache Kafka 管理的 Kafka 集群连接到 Apache Kafka 控制台的 Streams,您可以访问组件(如代理、主题、分区和消费者组)的详细信息。
Apache Kafka 控制台的流当前作为技术预览提供。
您还可以使用 Prometheus 和 Grafana 监控 Apache Kafka 的 Streams。当使用 Prometheus 规则配置时,Prometheus 会消耗集群中正在运行的 pod 的指标。Grafana 在仪表板中视觉化这些指标,为监控提供了一个直观的接口。
为方便指标集成,Apache Kafka 的 Streams 提供了 Apache Kafka 组件的 Streams 的 Prometheus 规则和 Grafana 仪表板示例。您可以自定义 Grafana 仪表板示例,以满足您的特定部署要求。您可以使用规则来定义根据特定指标触发警报的条件。
根据您的监控要求,您可以执行以下操作:
另外,您可以通过设置 分布式追踪,或使用 诊断工具 (report.sh
)来检索故障排除数据,配置部署以跟踪消息端到端。
Apache Kafka 的 Streams 为 Prometheus 和 Grafana 提供了示例安装文件,它们可作为监控 Apache Kafka 部署的 Streams 的起点。如需进一步支持,请尝试与 Prometheus 和 Grafana 开发人员社区互动。
支持指标和监控工具的文档
如需有关指标和监控工具的更多信息,请参阅支持文档:
- Prometheus
- Prometheus 配置
- Kafka Exporter
- Grafana Labs
- Apache Kafka Monitoring 描述了 Apache Kafka 公开的 JMX 指标
- ZooKeeper JMX 描述了 Apache ZooKeeper 公开的 JMX 指标
21.1. 使用 Kafka Exporter 监控消费者滞后
Kafka Exporter 是一个开源项目,用于增强对 Apache Kafka 代理和客户端的监控。您可以配置 Kafka
资源,以使用 Kafka 集群部署 Kafka 导出器。Kafka Exporter 从与偏移、消费者组、消费者滞后和主题相关的 Kafka 代理中提取额外的指标数据。例如,使用指标数据来帮助识别速度较慢的用户。lag 数据作为 Prometheus 指标公开,然后可在 Grafana 中显示这些指标数据进行分析。
Kafka Exporter 从 __consumer_offsets
主题读取,该主题存储消费者组的提交偏移信息。要使 Kafka Exporter 能够正常工作,需要使用消费者组。
Kafka Exporter 的 Grafana 仪表板是 Apache Kafka 的 Streams 提供的多个 Grafana 仪表板示例 之一。
Kafka Exporter 只提供与消费者滞后和消费者偏移相关的额外指标。对于常规 Kafka 指标,您必须在 Kafka 代理 中配置 Prometheus 指标。
消费者滞后表示消息的速度与消息的消耗的差别。具体来说,给定消费者组的消费者滞后指示分区中最后一个消息与当前由该消费者获取的消息之间的延迟。
lag 反映了与分区日志末尾相关的消费者偏移位置。
生成者和消费者偏移之间的消费者滞后
这种差异有时被称为生成者偏移和消费者偏移之间的 delta : Kafka 代理主题分区中的读取和写入位置。
假设主题将 100 个消息流过一秒。生成者偏移(主题分区头)和消费者读取的最后偏移之间的 1000 个消息表示有 10 秒的延迟。
监控消费者滞后的重要性
对于依赖于实时数据的处理的应用程序,监控消费者来判断其是否不会变得太大。整个过程越好,流程从实时处理目标中得到的增长。
例如,消费者滞后可能是消耗太多的旧数据(这些数据尚未被清除)或出现计划外的关闭。
减少消费者滞后
使用 Grafana chart 分析滞后,检查操作是否对受影响的消费者组产生影响。例如,如果对 Kafka 代理进行了调整以减少滞后,仪表板将显示 Lag by consumer group 图表下降,Messages consumed per minute 图表增加。
减少滞后的典型操作包括:
- 通过添加新消费者来扩展消费者组
- 增加消息的保留时间,以保留在主题中
- 添加更多磁盘容量以增加消息缓冲
减少消费者滞后的操作取决于底层基础架构,支持 Apache Kafka 的用例流。例如,分发的消费者不太可能从其磁盘缓存中获取请求的服务从代理服务。在某些情况下,可能可以接受自动丢弃信息,直到消费者发现为止。