使用 ClickStack 监控 Kafka 指标
本指南介绍如何使用 OpenTelemetry JMX Metric Gatherer 搭配 ClickStack 来监控 Apache Kafka 性能指标。您将了解如何:
- 在 Kafka broker 上启用 JMX,并配置 JMX Metric Gatherer
- 通过 OTLP 将 Kafka 指标发送到 ClickStack
- 使用预构建的仪表板可视化 Kafka 性能(broker 吞吐量、consumer 消费滞后、partition 健康状况、请求延迟)
如果希望在为生产环境 Kafka 集群配置之前先测试集成效果,可以使用包含示例指标的演示数据集。
预计耗时:10–15 分钟
集成现有 Kafka 部署
通过运行 OpenTelemetry JMX Metric Gatherer 容器以收集指标,并通过 OTLP 将其发送到 ClickStack,从而监控现有的 Kafka 部署。
如果希望在不修改现有环境的情况下优先测试此集成,请跳转到演示数据集章节。
先决条件
- 正在运行的 ClickStack 实例
- 已启用 JMX 的现有 Kafka 部署(版本 2.0 或更高)
- ClickStack 与 Kafka 之间的网络连通(JMX 端口 9999,Kafka 端口 9092)
- OpenTelemetry JMX Metric Gatherer JAR 包(下载方法见下文)
获取 ClickStack API 密钥
JMX Metric Gatherer 向 ClickStack 的 OTLP 端点发送数据,该端点需要进行身份验证。
- 通过你的 ClickStack 地址打开 HyperDX(例如 http://localhost:8080)
- 如有需要,创建账号或登录
- 前往 Team Settings → API Keys
- 复制你的 摄取 API key

- 将其设置为环境变量:
使用 Docker Compose 部署 JMX 指标采集器
此示例展示了包含 Kafka、JMX 指标收集器和 ClickStack 的完整配置。请根据您现有的部署调整服务名称和端点:
关键配置参数:
service:jmx:rmi:///jndi/rmi://kafka:9999/jmxrmi- JMX 连接 URL(使用 Kafka 的主机名)otel.jmx.target.system=kafka- 启用 Kafka 特定指标http://clickstack:4318- OTLP HTTP 端点(使用您的 ClickStack 主机名)authorization=\${CLICKSTACK_API_KEY}- 用于身份验证的 API 密钥(必需)service.name=kafka,kafka.broker.id=broker-0- 资源属性,用于过滤10000- 以毫秒为单位的采集间隔(10 秒)
在 HyperDX 中验证指标
登录 HyperDX 并确认指标数据正在流入:
- 转到 Chart Explorer
- 搜索
kafka.message.count或kafka.partition.count - 指标应每 10 秒出现一次
需要验证的关键指标:
kafka.message.count- 处理的消息总数kafka.partition.count- 分区总数kafka.partition.under_replicated- 在健康的集群中该值应为 0kafka.network.io- 网络吞吐量kafka.request.time.*- 请求延迟百分位
生成活动并填充更多指标:
在 Kafka 容器内运行 Kafka 客户端命令(kafka-topics、kafka-console-producer 等)时,需在命令前添加 unset JMX_PORT && 前缀以防止 JMX 端口冲突。
演示数据集
对于希望在配置生产系统之前先测试 Kafka 指标集成的用户,我们提供了一个预生成的数据集,其中包含具有逼真变化模式的 Kafka 指标。
下载示例指标数据集
下载预生成的指标文件(包含 29 小时的 Kafka 指标,具有逼真的变化模式):
该数据集包含单 Broker 的电商 Kafka 集群的逼真指标模式:
- 06:00-08:00:早晨高峰 - 从夜间基线开始的流量陡增
- 10:00-10:15:闪购活动 - 流量剧增至正常水平的 3.5 倍
- 11:30:部署事件 - consumer lag 激增 12 倍,并出现副本不足的分区
- 14:00-15:30:购物高峰期 - 流量持续维持在基线的 2.8 倍
- 17:00-17:30:下班后高峰 - 第二次流量峰值
- 18:45:消费者再平衡 - 再平衡期间 consumer lag 激增 6 倍
- 20:00-22:00:夜间回落 - 流量急剧下降回到夜间水平
在 HyperDX 中验证指标
加载完成后,查看指标的最快方式是通过预先构建好的仪表板。
前往 Dashboards and visualization 部分,导入仪表板并一次性查看所有 Kafka 指标。
HyperDX 会以浏览器本地时区显示时间戳。演示数据时间范围为 2025-11-05 16:00:00 - 2025-11-06 16:00:00 (UTC)。请将时间范围设置为 2025-11-04 16:00:00 - 2025-11-07 16:00:00,以确保无论您身处何地都能看到演示指标。确认看到指标后,可以将时间范围缩小到 24 小时,以获得更清晰的可视化效果。
仪表盘与可视化
为了帮助你开始使用 ClickStack 监控 Kafka,我们提供了 Kafka 指标的关键可视化图表。
导入预构建的仪表盘
- 打开 HyperDX 并导航到 Dashboards 页面
- 点击右上角省略号下的 Import Dashboard

- 上传
kafka-metrics-dashboard.json文件并点击 Finish Import

查看仪表盘
仪表盘会被创建好,并预先配置好所有可视化组件:

对于演示数据集,将时间范围设置为 2025-11-05 16:00:00 - 2025-11-06 16:00:00 (UTC)(可根据本地时区进行调整)。导入的仪表盘默认不会指定时间范围。
问题排查
在 HyperDX 中未看到指标
确认已设置 API 密钥并将其传递给容器:
如果未设置,请设置后重新启动:
确认指标是否已写入 ClickHouse:
如果未看到任何结果,请检查 JMX exporter 日志:
产生 Kafka 活动以填充指标数据:
身份验证错误
如果您看到 Authorization failed 或 401 Unauthorized:
- 在 HyperDX 界面中确认 API key 是否正确(Settings → API Keys → 摄取 API key)
- 重新导出并重启:
使用 Kafka 客户端命令时端口冲突
在 Kafka 容器内运行 Kafka 命令时,你可能会看到:
在所有命令前加上 unset JMX_PORT && 前缀:
网络连接问题
如果 JMX 导出器的日志显示 Connection refused:
请确保所有容器都在同一个 Docker 网络中:
测试连接:
进入生产环境
本指南将指标直接从 JMX Metric Gatherer 发送到 ClickStack 的 OTLP 端点,这种方式适用于测试和小规模部署。
在生产环境中,请部署你自己的 OpenTelemetry Collector 作为代理,从 JMX Exporter 接收指标并转发到 ClickStack。这样可以实现批量处理、更高的弹性以及集中化的配置管理。
有关生产部署模式和 Collector 配置示例,请参阅 使用 OpenTelemetry 进行摄取。