コンテンツにスキップ

テンセントクラウド CKafka (Prometheus)

テンセントクラウド CKafka は Prometheus Exporter を通じて Broker、ノード、クライアントのメトリクスを収集し、メッセージスループット、リクエスト遅延、接続状態、Topic の読み書き、リソース水位、リバランスなどの観点を網羅して、CKafka の性能と運用安定性を評価するために使用します。

設定

前提条件

テンセントクラウド CKafka 専用版インスタンスにアクセスできるネットワーク環境に DataKit を配置する必要があります。DataKit は、Prometheus 監視対象を取得するときに選択した VPC とサブネットと疎通できる CVM または自前のホストに配置することを推奨します。ホストにセキュリティグループやアクセス制御ポリシーが設定されている場合は、CKafka コンソールが返す Exporter の IP とポートを許可してください。

テンセントクラウド CKafka 専用版は、オープンソース標準の Prometheus Exporter に基づく接続方式を提供しており、コンソールが返す監視対象は通常次の 2 種類です。

  • 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 個の推奨メトリクスコンテキストが含まれます。

メトリクス名 説明 ディメンション 単位
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 個の推奨メトリクスコンテキストが含まれます。

メトリクス名 説明 ディメンション 単位
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 の直近 1 分間のリクエストレート host, request ops
SocketServer_Value{name=MemoryPoolUsed} Broker ネットワーク層のメモリプールで現在使用中のメモリ量 host B
SocketServer_Value{name=NetworkProcessorAvgIdlePercent} Broker のネットワーク処理スレッドがアイドル状態にある時間比率 host percent

ログメトリクス

kafka_log メトリクスセットには 4 個の推奨メトリクスコンテキストが含まれます。

メトリクス名 説明 ディメンション 単位
LogFlushStats_OneMinuteRate{name=LogFlushRateAndTimeMs} Broker が 1 秒あたりに実行するログフラッシュ操作の平均回数 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 個の推奨メトリクスコンテキストが含まれます。

メトリクス名 説明 ディメンション 単位
BrokerTopicMetrics_OneMinuteRate{name=BytesInPerSec} Broker または Topic が 1 秒あたりに受信するプロデュースメッセージのバイト数 host, topic B/S
BrokerTopicMetrics_OneMinuteRate{name=BytesOutPerSec} Broker または Topic が 1 秒あたりにコンシューマへ送信するバイト数 host, topic B/S
BrokerTopicMetrics_OneMinuteRate{name=FetchMessageConversionsPerSec} Broker が 1 秒あたりに実行する Fetch メッセージ形式変換の回数 host, topic ops
BrokerTopicMetrics_OneMinuteRate{name=MessagesInPerSec} Broker または Topic が 1 秒あたりに受信するメッセージ数 host, topic ops
BrokerTopicMetrics_OneMinuteRate{name=TotalFetchRequestsPerSec} Broker または Topic が 1 秒あたりに受信する Fetch リクエスト数 host, topic ops
BrokerTopicMetrics_OneMinuteRate{name=TotalProduceRequestsPerSec} Broker または Topic が 1 秒あたりに受信する Produce リクエスト数 host, topic ops
KafkaRequestHandlerPool_FiveMinuteRate{name=RequestHandlerAvgIdlePercent} Broker のリクエスト処理スレッドの直近 5 分間の平均アイドル率 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 個の推奨メトリクスコンテキストが含まれます。

メトリクス名 説明 ディメンション 単位
cpu_seconds_total{mode=idle} idle CPU 時間の増加率から逆算した Broker ノードの CPU 使用率 host percent
disk_read_bytes_total Broker ノードのディスクが 1 秒あたりに読み取るバイト数 host B/S
disk_reads_completed_total Broker ノードのディスクで 1 秒あたりに完了した読み取り操作数 host ops
disk_writes_completed_total Broker ノードのディスクで 1 秒あたりに完了した書き込み操作数 host ops
disk_written_bytes_total Broker ノードのディスクが 1 秒あたりに書き込むバイト数 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 ノードのループバック以外の NIC が 1 秒あたりに受信するバイト数 host B/S
network_transmit_bytes_total{device!=lo} Broker ノードのループバック以外の NIC が 1 秒あたりに送信するバイト数 host B/S

Producer クライアントメトリクス

kafka_producer メトリクスセットには 13 個の推奨メトリクスコンテキストが含まれます。

メトリクス名 説明 ディメンション 単位
metrics_buffer_available_bytes Producer が現在未使用のバッファメモリ量 client_id, host B
metrics_buffer_exhausted Producer がバッファ枯渇により破棄した累計レコード送信数 client_id, host count
metrics_buffer_exhausted_rate Producer が 1 秒あたりにバッファ枯渇により破棄したレコード送信数 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 クライアントが 1 秒あたりに送信するリクエスト数 client_id, host ops
metrics_requests_in_flight Producer が送信済みで、まだ応答を受信していないリクエスト数 client_id, host count
metrics_response_rate クライアントが 1 秒あたりに受信するレスポンス数 client_id, host ops
metrics_select_rate クライアントの I/O スレッドが 1 秒あたりに select を実行する回数 client_id, host ops
metrics_txn_commit_time_ns Producer がトランザクションをコミットするのに要した累計時間 client_id, host ns

Consumer クライアントメトリクス

kafka_consumer メトリクスセットには 14 個の推奨メトリクスコンテキストが含まれます。

メトリクス名 説明 ディメンション 単位
coordinator_metrics_rebalance_latency Consumer Group の直近 1 回のリバランス総所要時間 client_id, host ms
coordinator_metrics_rebalance_rate_per_hour Consumer Group で 1 時間あたりに発生するリバランスの平均回数 client_id, host 回/時
metrics_connection_close_rate Consumer が 1 秒あたりに閉じる接続数 client_id, host ops
metrics_connection_count クライアントの現在のアクティブ接続数 client_id, host count
metrics_failed_authentication クライアント認証失敗の累計接続数 client_id, host count
metrics_incoming_byte_rate クライアントが 1 秒あたりにネットワークソケットから読み取るバイト数 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 クライアントが 1 秒あたりに Broker へ送信するバイト数 client_id, host B/S
metrics_request_rate クライアントが 1 秒あたりに送信するリクエスト数 client_id, host ops
metrics_request_size_avg Consumer リクエストの平均サイズ client_id, host B
metrics_response_rate クライアントが 1 秒あたりに受信するレスポンス数 client_id, host ops
metrics_select_rate クライアントの I/O スレッドが 1 秒あたりに select を実行する回数 client_id, host ops
metrics_time_between_poll_avg Consumer の連続する 2 回の poll 呼び出し間の平均間隔 client_id, host ms

Kafka Streams メトリクス

kafka_stream メトリクスセットには 25 個の推奨メトリクスコンテキストが含まれます。

メトリクス名 説明 ディメンション 単位
stream_state_metrics_all_rate Kafka Streams の状態ストアが 1 秒あたりに実行する操作数 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 の状態ストア圧縮で 1 秒あたりに読み取るバイト数 host, rocksdb_state_id, thread_id B/S
stream_state_metrics_bytes_read_rate Kafka Streams の状態ストアが 1 秒あたりに読み取るバイト数 host, rocksdb_state_id, thread_id B/S
stream_state_metrics_bytes_written_compaction_rate Kafka Streams の状態ストア圧縮で 1 秒あたりに書き込むバイト数 host, rocksdb_state_id, thread_id B/S
stream_state_metrics_bytes_written_rate Kafka Streams の状態ストアが 1 秒あたりに書き込むバイト数 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 のタスクが 1 秒あたりに強制処理を実行する回数 host, task_id, thread_id ops
stream_task_metrics_process_rate Kafka Streams のタスクが 1 秒あたりに処理するレコード数 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 スレッドが 1 秒あたりに状態をコミットする回数 host, thread_id ops
stream_thread_metrics_poll_latency_avg Kafka Streams スレッドの poll 呼び出しの平均遅延 host, thread_id ms
stream_thread_metrics_poll_rate Kafka Streams スレッドが 1 秒あたりに 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 個の推奨メトリクスコンテキストが含まれます。

メトリクス名 説明 ディメンション 単位
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

フィードバック

このページは役に立ちましたか?