
kafka_exporter是一个用于Prometheus的Kafka指标导出器,能够收集Kafka集群的关键指标(如Broker状态、Topic分区信息、消费者组滞后等),并通过HTTP端点暴露给Prometheus进行监控。对于Kafka的其他JMX指标,可结合https://github.com/prometheus/jmx_exporter%E4%BD%BF%E7%94%A8%E3%80%82
支持Apache Kafka 0.10.1.0及更高版本。
适用于需要对Kafka集群进行实时监控的场景,包括:
bash# 拉取最新版本 docker pull danielqsj/kafka-exporter:latest # 拉取指定版本(如1.4.1) docker pull danielqsj/kafka-exporter:1.4.1
基础配置(单Kafka节点)
bashdocker run -d \ --name kafka-exporter \ -p 9308:9308 \ danielqsj/kafka-exporter:latest \ --kafka.server=kafka:9092 \ # Kafka服务器地址 --web.listen-address=:9308 # 监听地址(默认:9308)
高级配置(多Kafka节点+SASL认证)
bashdocker run -d \ --name kafka-exporter \ -p 9308:9308 \ danielqsj/kafka-exporter:latest \ --kafka.server=kafka-1:9092 \ --kafka.server=kafka-2:9092 \ # 配置多个Kafka节点 --sasl.enabled=true \ # 启用SASL认证 --sasl.username=admin \ # SASL用户名 --sasl.password=secret \ # SASL密码 --sasl.mechanism=scram-sha512 # SASL认证机制
yamlversion: '3.8' services: kafka-exporter: image: danielqsj/kafka-exporter:latest container_name: kafka-exporter ports: - "9308:9308" command: - --kafka.server=kafka-1:9092 - --kafka.server=kafka-2:9092 - --web.listen-address=:9308 - --refresh.metadata=60s # 元数据刷新间隔 - --kafka.labels=prod-cluster # 集群标识标签 - --topic.filter=^prod-.* # 仅监控prod前缀的topic restart: unless-stopped networks: - kafka-network networks: kafka-network: external: true
| 参数名称 | 默认值 | 描述 |
|---|---|---|
kafka.server | kafka:9092 | Kafka服务器地址(支持多次指定,配置多个节点) |
kafka.version | 1.0.0 | Kafka broker版本(用于协议适配) |
web.listen-address | :9308 | Web服务监听地址(用于暴露指标) |
web.telemetry-path | /metrics | 指标暴露路径 |
refresh.metadata | 30s | Kafka元数据刷新间隔(如topic列表、分区信息) |
kafka.labels | 空 | Kafka集群名称标签(用于多集群监控区分) |
topic.filter | .* | topic过滤正则表达式(仅匹配的topic会被监控) |
group.filter | .* | 消费者组过滤正则表达式(仅匹配的组会被监控) |
| 参数名称 | 默认值 | 描述 |
|---|---|---|
sasl.enabled | false | 是否启用SASL认证 |
sasl.username | 空 | SASL认证用户名(启用时必填) |
sasl.password | 空 | SASL认证密码(启用时必填) |
sasl.mechanism | 空 | SASL认证机制(支持plain、scram-sha512、scram-sha256) |
sasl.handshake | true | 是否启用SASL握手(非Kafka SASL代理时需禁用) |
tls.enabled | false | 是否启用TLS加密连接 |
tls.ca-file | 空 | TLS根证书文件路径(可选) |
tls.cert-file | 空 | TLS客户端证书文件路径(可选) |
tls.key-file | 空 | TLS客户端密钥文件路径(可选) |
tls.insecure-skip-tls-verify | false | 是否跳过TLS证书验证(测试环境使用,生产环境不建议) |
| 参数名称 | 默认值 | 描述 |
|---|---|---|
use.consumelag.zookeeper | false | 是否从ZooKeeper获取消费者组偏移量(适用于旧版Kafka) |
zookeeper.server | localhost:2181 | ZooKeeper服务器地址(当use.consumelag.zookeeper=true时生效) |
offset.show-all | true | 是否显示所有消费者组的偏移量/滞后量(禁用时仅显示活跃组) |
concurrent.enable | false | 是否启用并发指标采集(大型集群建议禁用,避免性能影响) |
topic.workers | 100 | Topic处理工作线程数 |
log.enable-sarama | false | 是否启用Sarama客户端日志(调试用) |
verbosity | 0 | 日志详细程度(0=默认,数值越高日志越详细) |
布尔值参数:采用--<name>启用和--no-<name>禁用的形式。例如:
--sasl.handshake--no-sasl.handshake多值参数:kafka.server支持多次指定,用于监控多节点集群,如--kafka.server=node1:9092 --kafka.server=node2:9092
| 指标名称 | 描述 | 类型 |
|---|---|---|
kafka_brokers | Kafka集群中的Broker数量 | Gauge |
示例输出:
txt# HELP kafka_brokers Number of Brokers in the Kafka Cluster. # TYPE kafka_brokers gauge kafka_brokers 3
| 指标名称 | 描述 | 类型 |
|---|---|---|
kafka_topic_partitions | Topic的分区数量 | Gauge |
kafka_topic_partition_current_offset | Topic分区当前偏移量 | Gauge |
kafka_topic_partition_oldest_offset | Topic分区最旧偏移量 | Gauge |
kafka_topic_partition_in_sync_replica | Topic分区的同步副本数量 | Gauge |
kafka_topic_partition_leader | Topic分区的Leader Broker ID | Gauge |
kafka_topic_partition_leader_is_preferred | 是否使用首选Leader(1=是,0=否) | Gauge |
kafka_topic_partition_replicas | Topic分区的副本总数 | Gauge |
kafka_topic_partition_under_replicated_partition | 是否为欠复制分区(1=是,0=否) | Gauge |
示例输出:
txt# HELP kafka_topic_partitions Number of partitions for this Topic # TYPE kafka_topic_partitions gauge kafka_topic_partitions{topic="order-events"} 8 # HELP kafka_topic_partition_in_sync_replica Number of In-Sync Replicas for this Topic/Partition # TYPE kafka_topic_partition_in_sync_replica gauge kafka_topic_partition_in_sync_replica{partition="0",topic="order-events"} 3
| 指标名称 | 描述 | 类型 |
|---|---|---|
kafka_consumergroup_current_offset | 消费者组在指定分区的当前偏移量 | Gauge |
kafka_consumergroup_lag | 消费者组在指定分区的滞后量(当前偏移与最新偏移差) | Gauge |
示例输出:
txt# HELP kafka_consumergroup_lag Current Approximate Lag of a ConsumerGroup at Topic/Partition # TYPE kafka_consumergroup_lag gauge kafka_consumergroup_lag{consumergroup="order-service",partition="0",topic="order-events"} 42
官方提供Grafana仪表板模板,支持快速构建可视化监控面板:
使用方法:在Grafana中导入仪表板ID,配置Prometheus数据源即可查看预设监控视图。
本项目基于https://github.com/danielqsj/kafka_exporter/blob/master/LICENSE%E5%BC%80%E6%BA%90%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务