kafka_exporter
Prometheus的Kafka导出器。有关Kafka的其他指标,请查看JMX导出器。
目录
兼容性
支持Apache Kafka 0.10.1.0版本(及更高版本)。
依赖
下载
可以从发布页面下载二进制文件。
编译
构建二进制文件
make
构建Docker镜像
make docker
Docker Hub镜像
docker pull danielqsj/kafka-exporter:latest
可以直接使用,而无需自己构建镜像。(Docker Hub danielqsj/kafka-exporter)
运行
运行二进制文件
kafka_exporter --kafka.server=kafka:9092 [--kafka.server=another-server ...]
运行Docker镜像
docker run -ti --rm -p 9308:9308 danielqsj/kafka-exporter --kafka.server=kafka:9092 [--kafka.server=another-server ...]
运行Docker Compose
创建一个docker-compose.yml
文件
services:
kafka-exporter:
image: danielqsj/kafka-exporter
command: ["--kafka.server=kafka:9092", "[--kafka.server=another-server ...]"]
ports:
- 9308:9308
然后运行
docker-compose up -d
参数
此镜像可通过不同的参数进行配置
参数名 | 默认值 | 描述 |
---|---|---|
kafka.server | kafka:9092 | Kafka服务器的地址(主机:端口) |
kafka.version | 2.0.0 | Kafka代理版本 |
sasl.enabled | false | 使用SASL/PLAIN连接 |
sasl.handshake | true | 仅当使用非Kafka SASL代理时设置为false |
sasl.username | SASL用户名 | |
sasl.password | SASL用户密码 | |
sasl.mechanism | SASL机制可以是plain、scram-sha512、scram-sha256 | |
sasl.service-name | 使用Kerberos认证时的服务名称 | |
sasl.kerberos-config-path | Kerberos配置路径 | |
sasl.realm | Kerberos领域 | |
sasl.keytab-path | Kerberos keytab文件路径 | |
sasl.kerberos-auth-type | Kerberos认证类型。可以是'keytabAuth'或'userAuth' | |
tls.enabled | false | 使用TLS连接到Kafka |
tls.server-name | 用于验证返回证书上的主机名,除非设置了tls.insecure-skip-tls-verify。应提供Kafka服务器的名称 | |
tls.ca-file | Kafka TLS客户端认证的可选证书颁发机构文件 | |
tls.cert-file | Kafka客户端认证的可选证书文件 | |
tls.key-file | Kafka客户端认证的可选密钥文件 | |
tls.insecure-skip-tls-verify | false | 如果为true,将不检查服务器证书的有效性 |
server.tls.enabled | false | 为Web服务器启用TLS |
server.tls.mutual-auth-enabled | false | 启用TLS客户端相互认证 |
server.tls.ca-file | Web服务器的证书颁发机构文件 | |
server.tls.cert-file | Web服务器的证书文件 | |
server.tls.key-file | Web服务器的密钥文件 | |
topic.filter | .* | 确定要收集哪些主题的正则表达式 |
topic.exclude | ^$ | 确定要排除哪些主题的正则表达式 |
group.filter | .* | 确定要收集哪些消费者组的正则表达式 |
group.exclude | ^$ | 确定要排除哪些消费者组的正则表达式 |
web.listen-address | :9308 | Web界面和遥测的监听地址 |
web.telemetry-path | /metrics | 暴露指标的路径 |
log.enable-sarama | false | 开启Sarama日志记录 |
use.consumelag.zookeeper | false | 如果需要使用来自zookeeper的组 |
zookeeper.server | localhost:2181 | Zookeeper服务器的地址(主机) |
kafka.labels | Kafka集群名称 | |
refresh.metadata | 30s | 元数据刷新间隔 |
offset.show-all | true | 是否显示所有消费者组的偏移量/滞后,否则只显示已连接的消费者组 |
concurrent.enable | false | 如果为true,所有抓取将触发Kafka操作,否则它们将共享结果。警告:在大型集群上应禁用此选项 |
topic.workers | 100 | 主题工作线程数量 |
verbosity | 0 | 日志详细程度 |
注意事项
布尔值由Kingpin进行唯一管理。每个布尔标志都有一个否定补充:
--<name>
和--no-<name>
。
例如:
如果需要禁用sasl.handshake
,可以添加标志--no-sasl.handshake
指标
关于暴露的Prometheus指标的文档。
有关底层指标的详细信息,请参阅Apache Kafka。
代理
指标详情
名称 | 暴露的信息 |
---|---|
kafka_brokers | Kafka集群中的代理数量 |
指标输出示例
# HELP kafka_brokers Kafka集群中的代理数量。
# TYPE kafka_brokers gauge
kafka_brokers 3
主题
指标详情
名称 | 暴露的信息 |
---|---|
kafka_topic_partitions | 该主题的分区数量 |
kafka_topic_partition_current_offset | 主题/分区上代理的当前偏移量 |
kafka_topic_partition_oldest_offset | 主题/分区上代理的最旧偏移量 |
kafka_topic_partition_in_sync_replica | 该主题/分区的同步副本数量 |
kafka_topic_partition_leader | 该主题/分区的领导者代理ID |
kafka_topic_partition_leader_is_preferred | 如果主题/分区使用首选代理则为1 |
kafka_topic_partition_replicas | 该主题/分区的副本数量 |
kafka_topic_partition_under_replicated_partition | 如果主题/分区副本数不足则为1 |
指标输出示例
# HELP kafka_topic_partitions 该主题的分区数量
# TYPE kafka_topic_partitions gauge
kafka_topic_partitions{topic="__consumer_offsets"} 50
# HELP kafka_topic_partition_current_offset 主题/分区上代理的当前偏移量
# TYPE kafka_topic_partition_current_offset gauge
kafka_topic_partition_current_offset{partition="0",topic="__consumer_offsets"} 0
# HELP kafka_topic_partition_oldest_offset 主题/分区上代理的最旧偏移量
# TYPE kafka_topic_partition_oldest_offset gauge
kafka_topic_partition_oldest_offset{partition="0",topic="__consumer_offsets"} 0
# HELP kafka_topic_partition_in_sync_replica 该主题/分区的同步副本数量
# TYPE kafka_topic_partition_in_sync_replica gauge
kafka_topic_partition_in_sync_replica{partition="0",topic="__consumer_offsets"} 3
# HELP kafka_topic_partition_leader 该主题/分区的领导者代理ID
# TYPE kafka_topic_partition_leader gauge
kafka_topic_partition_leader{partition="0",topic="__consumer_offsets"} 0
# HELP kafka_topic_partition_leader_is_preferred 如果主题/分区使用首选代理则为1
# TYPE kafka_topic_partition_leader_is_preferred gauge
kafka_topic_partition_leader_is_preferred{partition="0",topic="__consumer_offsets"} 1
# HELP kafka_topic_partition_replicas 该主题/分区的副本数量
# TYPE kafka_topic_partition_replicas gauge
kafka_topic_partition_replicas{partition="0",topic="__consumer_offsets"} 3
# HELP kafka_topic_partition_under_replicated_partition 如果主题/分区副本数不足则为1
# TYPE kafka_topic_partition_under_replicated_partition gauge
kafka_topic_partition_under_replicated_partition{partition="0",topic="__consumer_offsets"} 0
消费者组
指标详情
名称 | 暴露的信息 |
---|---|
kafka_consumergroup_current_offset | 消费者组在主题/分区上的当前偏移量 |
kafka_consumergroup_lag | 消费者组在主题/分区上的当前大致滞后量 |
kafka_consumergroupzookeeper_lag_zookeeper | 消费者组在主题/分区上的当前大致滞后量(zookeeper) |
重要说明
要收集 kafka_consumergroupzookeeper_lag_zookeeper
指标,你必须设置以下标志:
use.consumelag.zookeeper
: 启用从zookeeper收集消费滞后量zookeeper.server
: 连接zookeeper的地址
指标输出示例
# HELP kafka_consumergroup_current_offset 消费者组在主题/分区上的当前偏移量
# TYPE kafka_consumergroup_current_offset gauge
kafka_consumergroup_current_offset{consumergroup="KMOffsetCache-kafka-manager-3806276532-ml44w",partition="0",topic="__consumer_offsets"} -1
# HELP kafka_consumergroup_lag 消费者组在主题/分区上的当前大致滞后量
# TYPE kafka_consumergroup_lag gauge
kafka_consumergroup_lag{consumergroup="KMOffsetCache-kafka-manager-3806276532-ml44w",partition="0",topic="__consumer_offsets"} 1
Grafana 仪表板
Grafana 仪表板 ID: 7589,名称: Kafka Exporter Overview。
有关仪表板的详细信息,请参阅 Kafka Exporter Overview。
贡献
如果你喜欢 Kafka Exporter,请给我一个星标。这将帮助更多人了解 Kafka Exporter。
请随时向我发送拉取请求。
贡献者 ✨
感谢这些出色的人:
星标 ⭐
捐赠
你的捐赠将鼓励我继续改进 Kafka Exporter。支持支付宝捐赠。
许可证
代码使用 Apache License 2.0 许可。