跳转至

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 监控目标

  1. 登录 CKafka 控制台,进入目标实例详情页。
  2. 在实例详情页中找到「使用 Prometheus 监控」模块,单击「获取监控目标」,选择需要打通的 VPC 和子网后提交。
  3. 获取成功后,记录控制台返回的 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

执行以下命令

datakit service -R

指标

配置好 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

文档评价

文档内容是否对您有帮助?