TencentCloud CKafka (Prometheus)¶
腾讯云 CKafka 通过 Prometheus Exporter 采集 Broker、节点和客户端指标,覆盖消息吞吐、请求延迟、连接状态、Topic 读写、资源水位重平衡等维度,用于评估 CKafka 的性能表现与运行稳定性。
配置¶
前置条件¶
需要在腾讯云 CKafka 专业版实例可访问的网络环境中部署 DataKit。建议将 DataKit 部署在与获取 Prometheus 监控目标时选择的 VPC、子网网络互通的 CVM 或自建主机上;如果主机配置了安全组或访问控制策略,需要放通 CKafka 控制台返回的 Exporter IP 和端口。
腾讯云 CKafka 专业版提供基于开源标准 Prometheus Exporter 的接入方式,控制台返回的监控目标通常包含两类:
- Broker JMX Exporter:采集 Kafka Broker JMX 指标,例如请求速率、请求耗时、Topic 读写速率、Controller、Log 等指标。
- Node Exporter:采集 Broker 所在节点的基础指标,例如 CPU、内存、磁盘、网络等指标。
Producer、Consumer、Kafka Streams、Kafka Connect 指标不属于 CKafka Broker 原生 Exporter 暴露范围。如需采集客户端侧指标,需要在对应业务进程中单独挂载 JMX Exporter,并将其 /metrics 地址加入 DataKit Prometheus 采集配置。
获取 Prometheus 监控目标¶
- 登录 CKafka 控制台,进入目标实例详情页。
- 在实例详情页中找到「使用 Prometheus 监控」模块,单击「获取监控目标」,选择需要打通的 VPC 和子网后提交。
- 获取成功后,记录控制台返回的 Broker JMX Exporter 和 Node Exporter 目标地址。
监控目标示例:
| 类型 | 示例地址 | 说明 |
|---|---|---|
| Broker JMX Exporter | <jmx-exporter-ip>:60001、<jmx-exporter-ip>:60003 |
采集 Broker JMX 指标。 |
| Node Exporter | <node-exporter-ip>:60002、<node-exporter-ip>:60004 |
采集 Broker 节点基础指标。 |
如果 CKafka 实例发生迁移、变配或更换可用区,底层 Broker 可能发生变化,需要在控制台重新获取最新的 Exporter IP 和端口。
配置 DataKit¶
- 进入 datakit 安装目录下的
conf.d/samples目录,复制prom.conf.sample并命名为ckafka.conf
cp prom.conf.sample ckafka.conf
- 调整
ckafka.conf
[[inputs.prom]]
urls = [
"http://<jmx-exporter-ip>:60001/metrics",
"http://<jmx-exporter-ip>:60003/metrics",
"http://<jmx-exporter-ip>:60005/metrics",
"http://<jmx-exporter-ip>:60007/metrics",
]
source = "kafka_jmx"
metric_name_filter = ["^kafka_"]
measurement_prefix = ""
keep_exist_metric_name = false
honor_timestamps = true
election = false
disable_host_tag = true
disable_instance_tag = true
disable_info_tag = false
[[inputs.prom.measurements]]
prefix = "kafka_controller_"
name = "kafka_controller"
[[inputs.prom.measurements]]
prefix = "kafka_network_"
name = "kafka_network"
[[inputs.prom.measurements]]
prefix = "kafka_log_"
name = "kafka_log"
[[inputs.prom.measurements]]
prefix = "kafka_server_"
name = "kafka_server"
[inputs.prom.tags]
cloud_provider = "tencentcloud"
service = "ckafka"
region_id = "<region-id>"
cluster_id = "<ckafka-instance-id>"
cluster_name = "<ckafka-instance-name>"
[[inputs.prom]]
urls = [
"http://<node-exporter-ip>:60002/metrics",
"http://<node-exporter-ip>:60004/metrics",
"http://<node-exporter-ip>:60006/metrics",
"http://<node-exporter-ip>:60008/metrics",
]
source = "kafka_node"
metric_name_filter = ["^node_"]
measurement_prefix = ""
keep_exist_metric_name = false
honor_timestamps = true
election = false
disable_host_tag = true
disable_instance_tag = true
disable_info_tag = false
[[inputs.prom.measurements]]
prefix = "node_"
name = "kafka_node"
[inputs.prom.tags]
cloud_provider = "tencentcloud"
service = "ckafka"
region_id = "<region-id>"
cluster_id = "<ckafka-instance-id>"
cluster_name = "<ckafka-instance-name>"
# 可选:采集业务 Producer、Consumer、Kafka Streams、Kafka Connect 等客户端侧 JMX Exporter 指标。
[[inputs.prom]]
urls = [
"http://<producer-client-ip>:7072/metrics",
"http://<consumer-client-ip>:7073/metrics",
"http://<streams-client-ip>:7074/metrics",
"http://<connect-worker-ip>:7075/metrics",
]
source = "kafka_client"
metric_name_filter = ["^kafka_(producer|consumer|stream|connect)_"]
measurement_prefix = ""
keep_exist_metric_name = false
honor_timestamps = true
election = false
disable_host_tag = false
disable_instance_tag = true
disable_info_tag = false
[[inputs.prom.measurements]]
prefix = "kafka_producer_"
name = "kafka_producer"
[[inputs.prom.measurements]]
prefix = "kafka_consumer_"
name = "kafka_consumer"
[[inputs.prom.measurements]]
prefix = "kafka_connect_"
name = "kafka_connect"
[[inputs.prom.measurements]]
prefix = "kafka_stream_"
name = "kafka_stream"
[inputs.prom.tags]
cloud_provider = "tencentcloud"
service = "ckafka"
region_id = "<region-id>"
cluster_id = "<ckafka-instance-id>"
cluster_name = "<ckafka-instance-name>"
- 重启 DataKit
执行以下命令
指标¶
配置好 Prometheus 采集后,推荐指标范围包含以下 9 个指标集、111 个按 measurement、field 和固定语义标签区分的指标上下文。腾讯云 CKafka 控制台返回的监控目标主要提供 Broker JMX 与 Node Exporter 指标;Producer、Consumer、Kafka Streams、Kafka Connect 指标需要在对应客户端进程上单独开启 JMX Exporter。
Controller 指标¶
kafka_controller 指标集包含 4 个推荐指标上下文。
| MetricName | MetricDescribe | Dimensions | Unit |
|---|---|---|---|
KafkaController_Value{name=ActiveControllerCount} |
集群中当前活动的 Controller 数量,正常情况下通常为 1 | cloud_provider, cluster_name, host |
count |
KafkaController_Value{name=GlobalPartitionCount} |
集群当前分区总数;多个 Broker 暴露相同全局值时取最大值 | host |
count |
KafkaController_Value{name=GlobalTopicCount} |
集群当前 Topic 总数;多个 Broker 暴露相同全局值时取最大值 | host |
count |
KafkaController_Value{name=OfflinePartitionsCount} |
集群当前没有 Leader、无法正常读写的分区数量 | cloud_provider, cluster_name, host |
count |
网络请求指标¶
kafka_network 指标集包含 23 个推荐指标上下文。
| MetricName | MetricDescribe | Dimensions | Unit |
|---|---|---|---|
RequestChannel_Value{name=RequestQueueSize} |
Broker 请求队列中当前等待处理的条目数量 | host |
count |
RequestChannel_Value{name=ResponseQueueSize} |
Broker 响应队列中当前等待处理的条目数量 | host |
count |
RequestMetrics_95thPercentile{name=TotalTimeMs;request=FetchConsumer} |
FetchConsumer 请求的端到端P95 处理耗时 | cloud_provider, cluster_name, host |
ms |
RequestMetrics_95thPercentile{name=TotalTimeMs;request=Produce} |
Produce 请求的端到端P95 处理耗时 | cloud_provider, cluster_name, host |
ms |
RequestMetrics_Mean{name=LocalTimeMs;request=FetchConsumer} |
FetchConsumer 请求的本地处理平均耗时 | host |
ms |
RequestMetrics_Mean{name=LocalTimeMs;request=FetchFollower} |
FetchFollower 请求的本地处理平均耗时 | host |
ms |
RequestMetrics_Mean{name=MessageConversionsTimeMs;request=Produce} |
Produce 请求的消息格式转换平均耗时 | host |
ms |
RequestMetrics_Mean{name=RemoteTimeMs;request=FetchConsumer} |
FetchConsumer 请求的远程处理平均耗时 | host |
ms |
RequestMetrics_Mean{name=RemoteTimeMs;request=FetchFollower} |
FetchFollower 请求的远程处理平均耗时 | host |
ms |
RequestMetrics_Mean{name=RemoteTimeMs;request=Produce} |
Produce 请求的远程处理平均耗时 | host |
ms |
RequestMetrics_Mean{name=RequestQueueTimeMs;request=FetchConsumer} |
FetchConsumer 请求的在请求队列中的平均等待时间 | host |
ms |
RequestMetrics_Mean{name=RequestQueueTimeMs;request=Produce} |
Produce 请求的在请求队列中的平均等待时间 | host |
ms |
RequestMetrics_Mean{name=ResponseQueueTimeMs;request=FetchConsumer} |
FetchConsumer 请求的在响应队列中的平均等待时间 | host |
ms |
RequestMetrics_Mean{name=ResponseQueueTimeMs;request=FetchFollower} |
FetchFollower 请求的在响应队列中的平均等待时间 | host |
ms |
RequestMetrics_Mean{name=ResponseQueueTimeMs;request=Produce} |
Produce 请求的在响应队列中的平均等待时间 | host |
ms |
RequestMetrics_Mean{name=ResponseSendTimeMs;request=FetchConsumer} |
FetchConsumer 请求的发送响应的平均耗时 | host |
ms |
RequestMetrics_Mean{name=ResponseSendTimeMs;request=FetchFollower} |
FetchFollower 请求的发送响应的平均耗时 | host |
ms |
RequestMetrics_Mean{name=ResponseSendTimeMs;request=Produce} |
Produce 请求的发送响应的平均耗时 | host |
ms |
RequestMetrics_Mean{name=TotalTimeMs;request=FetchConsumer} |
FetchConsumer 请求的端到端平均处理耗时 | host |
ms |
RequestMetrics_Mean{name=TotalTimeMs;request=Produce} |
Produce 请求的端到端平均处理耗时 | host |
ms |
RequestMetrics_OneMinuteRate{name=RequestsPerSec} |
Broker 最近一分钟的请求速率 | host, request |
ops |
SocketServer_Value{name=MemoryPoolUsed} |
Broker 网络层内存池当前已使用的内存大小 | host |
B |
SocketServer_Value{name=NetworkProcessorAvgIdlePercent} |
Broker 网络处理线程处于空闲状态的时间比率 | host |
percent |
日志指标¶
kafka_log 指标集包含 4 个推荐指标上下文。
| MetricName | MetricDescribe | Dimensions | Unit |
|---|---|---|---|
LogFlushStats_OneMinuteRate{name=LogFlushRateAndTimeMs} |
Broker 每秒执行日志刷盘操作的平均次数 | host |
ops |
Log_Value{name=LogEndOffset} |
所选 Topic 分区当前日志末端偏移量 | host, partition, topic |
offset |
Log_Value{name=LogStartOffset} |
所选 Topic 分区当前最早可读取的日志偏移量 | host, partition, topic |
offset |
Log_Value{name=Size} |
所选 Topic 分区日志占用的磁盘空间 | host, topic |
B |
Broker 服务指标¶
kafka_server 指标集包含 9 个推荐指标上下文。
| MetricName | MetricDescribe | Dimensions | Unit |
|---|---|---|---|
BrokerTopicMetrics_OneMinuteRate{name=BytesInPerSec} |
Broker 或 Topic 每秒接收的生产消息字节数 | host, topic |
B/S |
BrokerTopicMetrics_OneMinuteRate{name=BytesOutPerSec} |
Broker 或 Topic 每秒发送给消费者的字节数 | host, topic |
B/S |
BrokerTopicMetrics_OneMinuteRate{name=FetchMessageConversionsPerSec} |
Broker 每秒执行 Fetch 消息格式转换的次数 | host, topic |
ops |
BrokerTopicMetrics_OneMinuteRate{name=MessagesInPerSec} |
Broker 或 Topic 每秒接收的消息数 | host, topic |
ops |
BrokerTopicMetrics_OneMinuteRate{name=TotalFetchRequestsPerSec} |
Broker 或 Topic 每秒收到的 Fetch 请求数 | host, topic |
ops |
BrokerTopicMetrics_OneMinuteRate{name=TotalProduceRequestsPerSec} |
Broker 或 Topic 每秒收到的 Produce 请求数 | host, topic |
ops |
KafkaRequestHandlerPool_FiveMinuteRate{name=RequestHandlerAvgIdlePercent} |
Broker 请求处理线程最近五分钟的平均空闲比率 | cloud_provider, cluster_name, host |
percent |
ReplicaManager_Value{name=UnderMinIsrPartitionCount} |
同步副本数低于 min.insync.replicas 的分区数量 | cloud_provider, cluster_name |
count |
ReplicaManager_Value{name=UnderReplicatedPartitions} |
副本数低于目标副本因子的分区数量 | cloud_provider, cluster_name |
count |
节点资源指标¶
kafka_node 指标集包含 11 个推荐指标上下文。
| MetricName | MetricDescribe | Dimensions | Unit |
|---|---|---|---|
cpu_seconds_total{mode=idle} |
根据 idle CPU 时间增长率反算的 Broker 节点 CPU 使用率 | host |
percent |
disk_read_bytes_total |
Broker 节点磁盘每秒读取的字节数 | host |
B/S |
disk_reads_completed_total |
Broker 节点磁盘每秒完成的读操作数 | host |
ops |
disk_writes_completed_total |
Broker 节点磁盘每秒完成的写操作数 | host |
ops |
disk_written_bytes_total |
Broker 节点磁盘每秒写入的字节数 | host |
B/S |
load1 |
Broker 节点过去 1 分钟的系统平均负载 | host |
- |
load15 |
Broker 节点过去 15 分钟的系统平均负载 | host |
- |
load5 |
Broker 节点过去 5 分钟的系统平均负载 | host |
- |
memory_MemTotal_bytes |
根据总内存与可用内存计算的 Broker 节点内存使用率 | - | percent |
network_receive_bytes_total{device!=lo} |
Broker 节点非回环网卡每秒接收的字节数 | host |
B/S |
network_transmit_bytes_total{device!=lo} |
Broker 节点非回环网卡每秒发送的字节数 | host |
B/S |
Producer 客户端指标¶
kafka_producer 指标集包含 13 个推荐指标上下文。
| MetricName | MetricDescribe | Dimensions | Unit |
|---|---|---|---|
metrics_buffer_available_bytes |
Producer 当前未使用的缓冲区内存大小 | client_id, host |
B |
metrics_buffer_exhausted |
Producer 因缓冲区耗尽而丢弃的累计记录发送数 | client_id, host |
count |
metrics_buffer_exhausted_rate |
Producer 每秒因缓冲区耗尽而丢弃的记录发送数 | client_id, host |
ops |
metrics_bufferpool_wait_time_ns |
Producer 等待缓冲区空间分配的累计时间 | client_id, host |
ns |
metrics_connection_count |
客户端当前活动连接数 | client_id, host |
count |
metrics_failed_authentication |
客户端认证失败的累计连接数 | client_id, host |
count |
metrics_flush_time_ns |
Producer 执行 flush 操作的累计耗时 | client_id, host |
ns |
metrics_io_wait_time_ns |
Producer I/O 线程等待可读写套接字的累计耗时 | client_id, host |
ns |
metrics_request_rate |
客户端每秒发送的请求数 | client_id, host |
ops |
metrics_requests_in_flight |
Producer 已发送但尚未收到响应的请求数 | client_id, host |
count |
metrics_response_rate |
客户端每秒收到的响应数 | client_id, host |
ops |
metrics_select_rate |
客户端 I/O 线程每秒执行 select 的次数 | client_id, host |
ops |
metrics_txn_commit_time_ns |
Producer 提交事务所花费的累计时间 | client_id, host |
ns |
Consumer 客户端指标¶
kafka_consumer 指标集包含 14 个推荐指标上下文。
| MetricName | MetricDescribe | Dimensions | Unit |
|---|---|---|---|
coordinator_metrics_rebalance_latency |
Consumer Group 最近一次再平衡的总耗时 | client_id, host |
ms |
coordinator_metrics_rebalance_rate_per_hour |
Consumer Group 每小时发生再平衡的平均次数 | client_id, host |
次/小时 |
metrics_connection_close_rate |
Consumer 每秒关闭的连接数 | client_id, host |
ops |
metrics_connection_count |
客户端当前活动连接数 | client_id, host |
count |
metrics_failed_authentication |
客户端认证失败的累计连接数 | client_id, host |
count |
metrics_incoming_byte_rate |
客户端每秒从网络套接字读取的字节数 | client_id, host |
B/S |
metrics_io_time_ns_avg |
Consumer 每次 select 调用执行 I/O 的平均耗时 | client_id, host |
ns |
metrics_io_wait_time_ns_avg |
Consumer I/O 线程等待可读写套接字的平均耗时 | client_id, host |
ns |
metrics_outgoing_byte_rate |
客户端每秒向 Broker 发送的字节数 | client_id, host |
B/S |
metrics_request_rate |
客户端每秒发送的请求数 | client_id, host |
ops |
metrics_request_size_avg |
Consumer 请求的平均大小 | client_id, host |
B |
metrics_response_rate |
客户端每秒收到的响应数 | client_id, host |
ops |
metrics_select_rate |
客户端 I/O 线程每秒执行 select 的次数 | client_id, host |
ops |
metrics_time_between_poll_avg |
Consumer 相邻两次 poll 调用的平均间隔 | client_id, host |
ms |
Kafka Streams 指标¶
kafka_stream 指标集包含 25 个推荐指标上下文。
| MetricName | MetricDescribe | Dimensions | Unit |
|---|---|---|---|
stream_state_metrics_all_rate |
Kafka Streams 状态存储每秒执行的操作数 | host, rocksdb_state_id, thread_id |
ops |
stream_state_metrics_block_cache_capacity |
Kafka Streams RocksDB 块缓存容量 | host, rocksdb_state_id, thread_id |
B |
stream_state_metrics_block_cache_data_hit_ratio |
Kafka Streams RocksDB 块缓存数据命中比率 | host, rocksdb_state_id, thread_id |
percent |
stream_state_metrics_block_cache_filter_hit_ratio |
Kafka Streams RocksDB 块缓存过滤器命中比率 | host, rocksdb_state_id, thread_id |
percent |
stream_state_metrics_block_cache_index_hit_ratio |
Kafka Streams RocksDB 块缓存索引命中比率 | host, rocksdb_state_id, thread_id |
percent |
stream_state_metrics_block_cache_usage |
Kafka Streams RocksDB 块缓存当前使用量 | host, rocksdb_state_id, thread_id |
B |
stream_state_metrics_bytes_read_compaction_rate |
Kafka Streams 状态存储压缩每秒读取的字节数 | host, rocksdb_state_id, thread_id |
B/S |
stream_state_metrics_bytes_read_rate |
Kafka Streams 状态存储每秒读取的字节数 | host, rocksdb_state_id, thread_id |
B/S |
stream_state_metrics_bytes_written_compaction_rate |
Kafka Streams 状态存储压缩每秒写入的字节数 | host, rocksdb_state_id, thread_id |
B/S |
stream_state_metrics_bytes_written_rate |
Kafka Streams 状态存储每秒写入的字节数 | host, rocksdb_state_id, thread_id |
B/S |
stream_task_metrics_active_process_ratio |
Kafka Streams 任务线程用于处理记录的时间比率 | host, task_id, thread_id |
percent |
stream_task_metrics_cache_size_bytes |
Kafka Streams 任务缓存的总大小 | host, task_id, thread_id |
B |
stream_task_metrics_enforced_processing_rate |
Kafka Streams 任务每秒执行强制处理的次数 | host, task_id, thread_id |
ops |
stream_task_metrics_process_rate |
Kafka Streams 任务每秒处理的记录数 | host, task_id, thread_id |
ops |
stream_thread_metrics_blocked_time_ns |
Kafka Streams 线程因等待而阻塞的累计时间 | host, thread_id |
ns |
stream_thread_metrics_commit_rate |
Kafka Streams 线程每秒提交状态的次数 | host, thread_id |
ops |
stream_thread_metrics_poll_latency_avg |
Kafka Streams 线程 poll 调用的平均延迟 | host, thread_id |
ms |
stream_thread_metrics_poll_rate |
Kafka Streams 线程每秒执行 poll 的次数 | host, thread_id |
ops |
stream_thread_metrics_task |
Kafka Streams 线程创建的累计任务数 | host, thread_id |
count |
stream_thread_metrics_task_closed |
Kafka Streams 线程关闭的累计任务数 | host, thread_id |
count |
stream_thread_metrics_thread_start_time |
Kafka Streams 线程启动时间戳 | host, thread_id |
ms |
stream_topic_metrics_bytes_consumed |
Kafka Streams 从 Topic 累计消费的字节数 | host, topic |
B |
stream_topic_metrics_bytes_produced |
Kafka Streams 向 Topic 累计生产的字节数 | host, topic |
B |
stream_topic_metrics_records_consumed |
Kafka Streams 源处理器节点累计消费的记录数 | host, processor_node_id, topic |
count |
stream_topic_metrics_records_produced |
Kafka Streams 接收器处理器节点累计生成的记录数 | host, processor_node_id, topic |
count |
Kafka Connect 指标¶
kafka_connect 指标集包含 8 个推荐指标上下文。
| MetricName | MetricDescribe | Dimensions | Unit |
|---|---|---|---|
worker_connector_count |
Kafka Connect Worker 当前运行的 Connector 数量 | host |
count |
worker_connector_startup_attempts |
Kafka Connect Worker 尝试启动 Connector 的累计次数 | host |
count |
worker_connector_startup_failure_percentage |
Kafka Connect Worker 启动 Connector 失败的比率 | host |
percent |
worker_rebalance_completed_rebalances |
Kafka Connect Worker 已完成的再平衡累计次数 | host |
count |
worker_rebalance_time_since_last_rebalance_ms |
Kafka Connect Worker 距上次再平衡完成的时间 | host |
ms |
worker_task_startup_attempts |
Kafka Connect Worker 尝试启动 Task 的累计次数 | host |
count |
worker_task_startup_failure |
Kafka Connect Worker 启动 Task 失败的累计次数 | host |
count |
worker_task_startup_failure_percentage |
Kafka Connect Worker 启动 Task 失败的比率 | host |
percent |