Kafka のモニタリング

Apache Kafka® のブローカーおよびクライアントは多数の内部メトリクスを報告します。デフォルトのレポーターは JMX ですが、任意のプラグ可能なレポーターを追加できます。

すぐに利用できる Kafka クラスターのモニタリング用に Confluent Control Center をデプロイできるので、独自のモニタリングシステムを構築する必要はありません。Control Center を使用すると、Confluent Platform 全体の管理が簡単になります。Control Center はウェブベースのアプリケーションであり、ユーザーがクラスターを管理したり、トリガーによってアラートを通知したりすることができます。また、Control Center は、メッセージの配信にかかった時間を測定したり、クラスターでの問題の発生源を特定したりします。

ちなみに

  • Health+: Confluent Health+ を使用して環境のモニタリングと管理を行うことを検討します。Apache Kafka® の考案者が培ったベストプラクティスに基づくインテリジェントなアラート、モニタリング、プロアクティブサポートにより、クラスターの正常性を確保し、ビジネスの中断を最小限に抑えます。
  • オンプレミスの Confluent Platform の場合 : スループット、レイテンシ、耐久性、可用性などのさまざまなサービス目標のための Kafka のデプロイの最適化の実用的なガイド、およびオンプレミスの Kafka クラスターのパフォーマンスとクラスター正常性のモニタリングに役立つメトリクスについては、ホワイトペーパー『 Optimizing Your Apache Kafka Deployment 』を参照してください。
  • Confluent Cloud 内のクラスターの場合: Kafka のクライアントアプリケーションの構成、モニタリング、最適化を行うための実用的なガイドについては、「Confluent Cloud でのクライアントアプリケーションの開発」を参照してください。

参考

Apache Kafka® クライアントアプリケーションおよび Confluent Cloud メトリクスをモニタリングする方法の例と、さまざまな失敗のシナリオが指定したメトリクスにどのように影響するかを確認する手順については、「Confluent Cloud に接続する Apache Kafka® クライアント用の Observability のデモ」を参照してください。

サーバーのメトリクス

ブローカーのメトリクス

Confluent Control Center および Confluent Cloud では、以下のような、ブローカーについてクラスター全体で集計された重要な運用メトリクスのモニタリングが行われます。必要に応じて、ブローカーごとまたはトピックごとに集計されたメトリクスのモニタリングも行われます。Control Center では、それらのメトリクスを表示するための組み込みのダッシュボードが提供されています。少なくとも最初の 3 つのメトリクスに対してはアラートを設定することをお勧めします。

kafka.server:type=KafkaServer,name=TotalDiskReadBytes
ブローカープロセスによって読み取られる合計のバイト数(すべてのディスクからの読み取りが含まれます)。合計には、ページキャッシュからの読み取りは含まれません。
kafka.server:type=KafkaServer,name=TotalDiskWriteBytes
ブローカープロセスによって書き込まれる合計のバイト数(すべてのディスクの書き込みが含まれます)。
kafka.server:type=ReplicaManager,name=UnderMinIsrPartitionCount
同期状態のレプリカ数が minIsr より少ないパーティションの数。
kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions
レプリケーション数が不足しているパーティションの数(| ISR | < | 現在のレプリカ数 |)。再割り当ての一環として追加されているレプリカ数は、この値には反映されません。この値が 0 より大きければアラートが通知されます。
kafka.server:type=ReplicaManager,name=ReassigningPartitions
再割り当てされているパーティションの数。
kafka.cluster:type=Partition,topic={topic},name=UnderMinIsr,partition={partition}
同期状態のレプリカ数が minIsr より少ないパーティションの数。これらのパーティションは、acks=all を使用しているプロデューサーでは利用できません。
kafka.controller:type=KafkaController,name=OfflinePartitionsCount
アクティブなリーダーが存在しないために書き込みも読み取りもできないパーティションの数。この値が 0 より大きければアラートが通知されます。
kafka.controller:type=KafkaController,name=ActiveControllerCount
クラスター内のアクティブなコントローラーの数。クラスターあたり厳密に 1 つのコントローラーが存在する必要があるため、クラスター内のすべてのブローカーでの総計が 1 以外の値であればアラートが通知されます。
kafka.controller:type=KafkaController,name=GlobalPartitionCount
クラスター内のすべてのトピックでのパーティションの総数。
kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec
クライアントからの入力バイトレート。
kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec
クライアントからの出力バイトレート。
kafka.server:type=BrokerTopicMetrics,name=ReplicationBytesInPerSec
他のブローカーからの入力バイトレート。
kafka.server:type=BrokerTopicMetrics,name=ReplicationBytesOutPerSec
他のブローカーへの出力バイトレート。
kafka.network:type=RequestMetrics,name=RequestsPerSec,request={Produce|FetchConsumer|FetchFollower}
リクエストレート。
kafka.server:type=BrokerTopicMetrics,name=TotalProduceRequestsPerSec
プロデューサーのリクエストレート。
kafka.server:type=BrokerTopicMetrics,name=TotalFetchRequestsPerSec
フェッチのリクエストレート。
kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSec
失敗したリクエストに対するプロデューサーのリクエストレート。
kafka.server:type=BrokerTopicMetrics,name=FailedFetchRequestsPerSec
失敗したリクエストに対するフェッチのリクエストレート。
kafka.server:type=BrokerTopicMetrics,name=ReassignmentBytesInPerSec
再割り当てトラフィックに対する着信バイトレート。
kafka.server:type=BrokerTopicMetrics,name=ReassignmentBytesOutPerSec
再割り当てトラフィックに対する発信バイトレート。
kafka.controller:type=ControllerStats,name=LeaderElectionRateAndTimeMs
リーダー選出のレートおよびレイテンシ。
kafka.controller:type=ControllerStats,name=UncleanLeaderElectionsPerSec
クリーンでないリーダー選出のレート。
kafka.server:type=ReplicaManager,name=PartitionCount
このブローカー上のパーティションの数。ほとんどの場合、この値はすべてのブローカーで同一です。
kafka.server:type=ReplicaManager,name=LeaderCount
このブローカー上のリーダーの数。ほとんどの場合、この値はすべてのブローカーで同一です。同一でない場合は、クラスター内のすべてのブローカーで auto.leader.rebalance.enabletrue に設定します。
kafka.server:type=KafkaRequestHandlerPool,name=RequestHandlerAvgIdlePercent
リクエストハンドラースレッドがアイドル状態であった時間の割合の平均値。この値は、0 (すべてのリソースが使用されていた)と 1 (すべてのリソースが使用可能であった)の間の数値です。
kafka.server:type=Produce,name=DelayQueueSize
現在スロットルが適用されているプロデューサークライアントの数。この値は 0 以上の任意の値を取ります。
kafka.network:type=SocketServer,name=NetworkProcessorAvgIdlePercent
ネットワークプロセッサースレッドがアイドル状態であった時間の割合の平均値。この値は、0 (すべてのリソースが使用されていた)と 1 (すべてのリソースが使用可能であった)の間の数値です。
kafka.network:type=RequestChannel,name=RequestQueueSize
リクエストキューのサイズ。輻輳が発生しているリクエストキューでは、着信リクエストも発信リクエストも処理できません。
kafka.network:type=RequestChannel,name=ResponseQueueSize
レスポンスキューのサイズ。レスポンスキューは無制限です。レスポンスキューで輻輳が発生している場合は、ブローカーでレスポンスタイムの増大やメモリー圧迫につながることがあります。
kafka.server:type=socket-server-metrics,listener={listener_name},networkProcessor={#},name=connection-count
ブローカーに対して現在オープンしているコネクションの数。
kafka.server:type=socket-server-metrics,listener={listener_name},networkProcessor={#},name=connection-creation-rate
1 秒あたりの新規コネクション確立の数。
kafka.network:type=RequestMetrics,name=TotalTimeMs,request={Produce|FetchConsumer|FetchFollower}
指定されたリクエストに対する処理の合計時間(ミリ秒)。
kafka.network:type=RequestMetrics,name=RequestQueueTimeMs,request={Produce|FetchConsumer|FetchFollower}
指定されたリクエストがリクエストキューで待機していた時間(ミリ秒)。
kafka.network:type=RequestMetrics,name=LocalTimeMs,request={Produce|FetchConsumer|FetchFollower}
指定されたリクエストがリーダーで処理された時間(ミリ秒)。
kafka.network:type=RequestMetrics,name=RemoteTimeMs,request={Produce|FetchConsumer|FetchFollower}
指定されたリクエストがフォロワーを待機していた時間(ミリ秒)。プロデューサーで acks=all が使用されている場合、生成リクエストのこの値はゼロ以外の値です。
kafka.network:type=RequestMetrics,name=ResponseQueueTimeMs,request={Produce|FetchConsumer|FetchFollower}
指定されたリクエストがレスポンスキューで待機していた時間(ミリ秒)。
kafka.network:type=RequestMetrics,name=ResponseSendTimeMs,request={Produce|FetchConsumer|FetchFollower}
指定されたリクエストに対するレスポンスが送信されるまでの時間(ミリ秒)。

以下のメトリクスは Kafka ブローカーで任意指定で観察可能です。

kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
着信メッセージレートの総計。
kafka.log:type=LogFlushStats,name=LogFlushRateAndTimeMs
ログフラッシュのレートおよび時間(ミリ秒)。
kafka.server:type=ReplicaManager,name=IsrShrinksPerSec
ブローカーが停止している場合、一部のパーティションの ISR は縮小されます。そのブローカーが再開した場合、レプリカに完全に追い付くと ISR は拡張されます。それ以外の場合、ISR の縮小レートと拡張レートの想定される値は共に 0 です。
kafka.server:type=ReplicaManager,name=IsrExpandsPerSec
ブローカーが障害発生後に再開すると、リーダーから読み取ることによって追い付こうとします。ブローカーが追い付くと、ISR に戻されます。
kafka.server:type=FetcherLagMetrics,name=ConsumerLag,clientId=([-.\w]+),topic=([-.\w]+),partition=([0-9]+)

フォロワーレプリカあたりのラグ(メッセージ数)。これはレプリカが低速化しているかどうかや、リーダーからのレプリケートが停止しているかどうか、また、関連付けられているブローカーを同期レプリカリストから除去する必要があるかどうかを知りたい場合に役立ちます。

重要

これはクラスター内のメトリックであり、Kafka クライアントアプリケーションのコンシューマーラグを表すものではありません。

kafka.server:type=DelayedOperationPurgatory,delayedOperation=Produce,name=PurgatorySize
プロデューサーの Purgatory で待機しているリクエストの数。そのプロデューサーで acks=all が使用されている場合、この値はゼロ以外の値です。
kafka.server:type=DelayedOperationPurgatory,delayedOperation=Fetch,name=PurgatorySize
フェッチの Purgatory で待機しているリクエストの数。コンシューマーで fetch.wait.max.ms に大きな値が使用されている場合、この値は大きくなります。

ZooKeeper のメトリクス

Confluent Control Center は、運用されているブローカーの ZooKeeper に関連する重要なメトリクスをモニタリングします。ZooKeeper のステート遷移の回数を公開します。これは、ZooKeeper に対するブローカーセッションの問題などの発見に役立ちます。このメトリクスは、現時点では、考えられるステートのそれぞれに対する 1 秒あたりの遷移レートを示しています。公開されるカウンターの一覧を示しています。ZooKeeper クライアントの考えられるステートそれぞれに対して 1 つのカウンターがあります。

kafka.server:type=SessionExpireListener,name=ZooKeeperDisconnectsPerSec
ZooKeeper クライアントは現在、アンサンブルから切り離されています。そのクライアントはサーバーへの以前のコネクションを失っていて、現在は再接続を試行しています。このセッションは期限切れになっているとは限りません。このメトリックは、ブローカーが切断しているかどうかを示していることに注意してください。ZooKeeper が停止しているかどうかを示すものではありません。システム正常性をチェックしている場合、この停止状態を判断には ZooKeeperExpiresPerSec が適切なメトリックとなります。
kafka.server:type=SessionExpireListener,name=ZooKeeperExpiresPerSec

ZooKeeper セッションが期限切れになっています。セッションが期限切れになると、リーダーが変更されたり、場合によっては新しいコントローラーになったりすることがあります。Kafka クラスター全体でこのようなイベントの数に注意を払っておくことが重要であり、その総数が大きい場合は、以下を行うことをお勧めします。

  1. ネットワークの正常性を確認します。
  2. ガベージコレクションの問題をチェックし、適切に調整します。
  3. 必要であれば、zookeeper.session.timeout.ms の値を設定してセッション時間を長くします。

以下の ZooKeeper のメトリクスは Kafka ブローカーで任意指定で観察可能です。

kafka.server:type=SessionExpireListener,name=ZooKeeperSyncConnectsPerSec
ZooKeeper クライアントはアンサンブルに接続されていて、操作を実行する準備ができています。
kafka.server:type=SessionExpireListener,name=ZooKeeperAuthFailuresPerSec
クライアントが提供した認証情報が正しくなかったために、アンサンブルへの接続の試行が失敗しました。
kafka.server:type=SessionExpireListener,name=ZooKeeperReadOnlyConnectsPerSec
クライアントの接続先のサーバーの現在のステートは LOOKING であり、FOLLOWING でも LEADING でもありません。したがって、クライアントは ZooKeeper のステートを読み取ることはできますが、変更(znode のデータの作成、削除、設定)を行うことはできません。
kafka.server:type=SessionExpireListener,name=ZooKeeperSaslAuthenticationsPerSec
クライアントは正常に認証されています。
kafka.server:type=SessionExpireListener,name=SessionState
ブローカーの ZooKeeper セッションのコネクションステータス。想定される値は CONNECTED です。

プロデューサーのメトリクス

バージョン 0.8.2 以降のプロデューサーは以下のメトリクスを公開します。

グローバルリクエストメトリクス

MBean: kafka.producer:type=producer-metrics,client-id=([-.w]+)

batch-size-avg
1 つのリクエストについて、パーティションごとに送信されたバイト数の平均値。
batch-size-max
1 つのリクエストについて、パーティションごとに送信された最大バイト数。
batch-split-rate
バッチ分割の 1 秒あたりの平均数。
batch-split-total
バッチ分割の合計数。
compression-rate-avg
レコードバッチの平均圧縮レート。非圧縮サイズに対する圧縮バッチサイズの平均比率として定義されます。
incoming-byte-rate
すべてのサーバーから受信された、1 秒あたりの着信バイト数の平均値。
metadata-age
使用されている現在のプロデューサーメタデータの経過時間(秒)。
outgoing-byte-rate
すべてのサーバーから送信された、1 秒あたりの発信バイト数の平均値。
produce-throttle-time-avg
リクエストがブローカーによってスロットリングされた平均時間(ミリ秒)。
produce-throttle-time-max
リクエストがブローカーによってスロットリングされた最長時間(ミリ秒)。
record-error-rate
送信がエラーになったレコード数の 1 秒あたりの平均値。
record-error-total
送信がエラーになったレコードの合計数。
record-queue-time-avg
レコードバッチが送信バッファに配置されていた平均時間(ミリ秒)。
record-queue-time-max
レコードバッチが送信バッファに配置されていた最長時間(ミリ秒)。
record-retry-rate
送信が再試行されたレコード数の 1 秒あたりの平均値。
record-retry-total
送信が再試行されたレコードの合計数。
record-send-rate
1 秒あたりに送信されたレコード数の平均値。
record-send-total
送信されたレコードの合計数。
record-size-avg
レコードの平均サイズ。
record-size-max
レコードの最大サイズ。
records-per-request-avg
各リクエスト内のレコード数の平均値。
request-rate
1 秒あたりに送信されたリクエスト数の平均値。
requests-in-flight
応答を待機している現在の送信リクエストの数。

グローバルコネクションメトリクス

MBean: kafka.producer:type=producer-metrics,client-id=([-.w]+)

connection-close-rate
指定されたウィンドウでの、1 秒あたりのコネクション終了の数。
connection-count
現在アクティブなコネクションの数。
connection-creation-rate
指定されたウィンドウでの、1 秒あたりの新規コネクション確立の数。
io-ratio
I/O スレッドで I/O 処理に費やされた時間の割合。
io-time-ns-avg
select コールあたりの I/O の所要時間の平均値(ナノ秒)。
io-wait-ratio
I/O スレッドで待機に費やされた時間の割合。
io-wait-time-ns-avg
I/O スレッドで、ソケットが読み取りまたは書き込みの準備が整うまで待機した時間の平均値(ナノ秒)。
select-rate
I/O レイヤーで新規 I/O の実行がチェックされた、1 秒あたりの回数。

ブローカーごとのメトリクス

MBean: kafka.producer:type=producer-node-metrics,client-id=([-.w]+),node-id=([0-9]+)

プロデューサーのグローバルリクエストメトリクスに加えて、各ブローカーで以下のメトリクスも利用できます。

incoming-byte-rate
ブローカーから 1 秒あたりに受信されたバイト数の平均値。
outgoing-byte-rate
ブローカーに 1 秒あたりに送信されたバイト数の平均値。
request-size-avg
ブローカーに対して指定されたウィンドウで送信されたすべてのリクエストの平均サイズ。
request-size-max
ブローカーに対して指定されたウィンドウで送信されたリクエストの最大サイズ。
request-rate
ブローカーに 1 秒あたりに送信されたリクエスト数の平均値。
response-rate
ブローカーから 1 秒あたりに受信されたレスポンス数の平均値。

トピックごとのメトリクス

MBean: kafka.producer:type=producer-topic-metrics,client-id="{client-id}",topic="{topic}"

プロデューサーのグローバルリクエストメトリクスに加えて、各トピックで以下のメトリクスも利用できます。

byte-rate
トピックに対して 1 秒あたりに送信されたバイト数の平均値。
byte-total
トピックに対して送信されたバイト数の合計。
compression-rate
トピックのレコードバッチの平均圧縮レート。圧縮バッチサイズを非圧縮サイズで除算した平均比率として定義されます。
record-error-rate
トピックに対して送信がエラーになったレコード数の 1 秒あたりの平均値。
record-error-total
トピックに対して送信がエラーになったレコードの合計数。
record-retry-rate
トピックに対して送信が再試行されたレコード数の 1 秒あたりの平均値。
record-retry-total
トピックに対して送信が再試行されたレコードの合計数。
record-send-rate
トピックに対して 1 秒あたりに送信されたレコード数の平均値。
record-send-total
トピックに対して送信されたレコードの合計数。

監査のメトリクス

confluent-audit-metrics:name=audit-log-rate-per-minute
作成された監査ログの 1 分ごとの数。このメトリックは、作成された監査ログの数を知る必要がある場合に役立ちます。
confluent-audit-metrics:name=fallback-rate-per-minute
監査ログのフォールバックの 1 分ごとのレート。このメトリックは、監査ログのフォールバックレートを知る必要がある場合に役立ちます。

オーソライザーのメトリクス

confluent-authorizer-metrics:name=authorization-request-rate-per-minute
1 分あたりの認可リクエストの数。このメトリックは、1 分あたりの認可リクエストの正確な数を知る必要がある場合に役立ちます。
confluent-authorizer-metrics:name=authorization-allowed-rate-per-minute
1 分あたりの許可された認可リクエストの数。このメトリックは、1 分あたりの許可された認可リクエストのレートを知る必要がある場合に役立ちます。
confluent-authorizer-metrics:name=authorization-denied-rate-per-minute
1 分あたりの拒否された認可リクエストの数。このメトリックは、1 分あたりの拒否された認可リクエストのレートを知る必要がある場合に役立ちます。

RBAC および LDAP の正常性のメトリクス

confluent.metadata:type=LdapGroupManager,name=failure-start-seconds-ago
LDAP サーバーからのメタデータの処理の試行が最後に失敗してからの経過秒数。この値は、その後にメタデータリフレッシュが成功するとゼロにリセットされます。このメトリックは、LDAP グループベースの認可が有効になっている場合に、メタデータクラスター内のブローカーで利用できます。この値が 0 より大きければアラートが通知されます。
confluent.metadata:type=KafkaAuthStore,name=writer-failure-start-seconds-ago
メタデータクラスター内のトピックに対して認証または認可のメタデータをアップデートするライターが最後に失敗してからの経過秒数。この値は、その後にメタデータアップデートが成功するとゼロにリセットされます。このメトリックは、メタデータクラスター内のブローカーで利用できます。この値が 0 より大きければアラートが通知されます。
confluent.metadata:type=KafkaAuthStore,name=reader-failure-start-seconds-ago
メタデータクラスター内のトピックからの認証または認可のメタデータを処理するコンシューマーが最後に失敗してからの経過秒数。この値は、その後にメタデータリフレッシュが成功するとゼロにリセットされます。このメトリックは、RBAC を使用するように構成されているすべてのブローカーで利用できます。この値が 0 より大きければアラートが通知されます。
confluent.metadata:type=KafkaAuthStore,name=remote-failure-start-seconds-ago
メタデータサービスでの最後の失敗(LDAP のリフレッシュが長時間失敗している場合など)からの経過秒数。この値は、メタデータサービスからのリフレッシュの成功の通知が処理されるとゼロにリセットされます。このメトリックは、RBAC を使用するように構成されているすべてのブローカーで利用できます。この値が 0 より大きければアラートが通知されます。
confluent.metadata:type=KafkaAuthStore,name=active-writer-count
メタデータクラスター内のアクティブなライターの数。メタデータクラスター内にはライターが 1 つだけ存在する必要があるため、この値が 1 以外であればアラートが通知されます。
confluent.metadata:type=KafkaAuthStore,name=metadata-status,topic=([-.\w]+),partition=([0-9]+)
メタデータトピックの各パーティション上のメタデータの現在のステータス。この値は UNKNOWN、INITIALIZING、INITIALIZED、FAILED のいずれかです。
confluent.metadata:type=KafkaAuthStore,name=record-send-rate,topic=([-.\w]+),partition=([0-9]+)
メタデータトピックのパーティションに送信されたレコードの 1 秒あたりの数の平均値。
confluent.metadata:type=KafkaAuthStore,name=record-error-rate,topic=([-.\w]+),partition=([0-9]+)
メタデータトピックのパーティションへの送信の試行が失敗したレコードの 1 秒あたりの数の平均値。
confluent-auth-store-metrics:name=rbac-role-bindings-count
定義されているロールバインディングの数。このメトリックは、存在するロールバインディングの正確な数を知る必要がある場合に役立ちます。
confluent-auth-store-metrics:name=rbac-access-rules-count
定義されている RBAC アクセスルールの数。このメトリックは、存在する RBAC アクセスルールの正確な数を知る必要がある場合に役立ちます。アクセスルールによって、特定のスコープ内の特定のリソースへのアクセスが許可または拒否されます。特定のプリンシパルへの特定のリソースに対して RBAC ロールが割り当てられる、ロールバインディングとは異なります。
confluent-auth-store-metrics:name=acl-access-rules-count
定義されている ACL アクセスルールの数。このメトリックは、存在する ACL の正確な数を知る必要がある場合に役立ちます。

コンシューマーのメトリクス

Kafka 0.9.0.0 以降のコンシューマーは以下のメトリクスを公開します。

フェッチのメトリクス

MBean: kafka.consumer:type=consumer-fetch-manager-metrics,client-id="{client-id}"

bytes-consumed-rate
1 秒あたりに消費されたバイト数の平均値。
bytes-consumed-total
消費されたバイト数の合計。
fetch-latency-avg
フェッチリクエストの平均所要時間。
fetch-latency-max
フェッチリクエストの最大所要時間。
fetch-rate
1 秒あたりのフェッチリクエスト数の平均値。
fetch-size-avg
リクエストあたりにフェッチされたバイト数の平均値。
fetch-size-max
リクエストごとにフェッチされたバイト数の最大値。
fetch-throttle-time-avg
平均スロットル時間(ミリ秒)。クォータが有効になっている場合、上限を超えているコンシューマーを抑制するために、ブローカーがフェッチリクエストを遅らせることがあります。このメトリックは、どの程度のスロットル時間がフェッチリクエストに追加されているかを表しています。
fetch-throttle-time-max
最大スロットル時間(ミリ秒)。
fetch-total
フェッチリクエストの合計数。
records-consumed-rate
1 秒あたりに消費されたレコード数の平均値。
records-consumed-total
消費されたレコードの合計数。
records-lag-max
このウィンドウでの、任意のパーティションに対するラグ(レコード数)の最大値。この値が時間の経過とともに増加している場合は、そのコンシューマーグループがプロデューサーよりも遅れていることを表しています。
records-lead-min
このウィンドウでの、任意のパーティションに対するラグ(レコード数)の最小値。
records-per-request-avg
各リクエスト内のレコード数の平均値。

トピックレベルのフェッチのメトリクス

MBean: kafka.consumer:type=consumer-fetch-manager-metrics,client-id="{client-id}",topic="{topic}"

bytes-consumed-rate
特定のトピックに対して 1 秒あたりに消費されたバイト数の平均値。
bytes-consumed-total
特定のトピックに対して消費されたバイト数の合計。
fetch-size-avg
特定のトピックに対するリクエストあたりにフェッチされたバイト数の平均値。
fetch-size-max
特定のトピックに対するリクエストあたりにフェッチされたバイト数の最大値。
records-consumed-rate
特定のトピックに対して 1 秒あたりに消費されたレコード数の平均値。
records-consumed-total
特定のトピックに対して消費されたレコードの合計数。
records-per-request-avg
特定のトピックに対する各リクエスト内のレコード数の平均値。

パーティションレベルのフェッチのメトリクス

MBean: kafka.consumer:type=consumer-fetch-manager-metrics,partition="{partition}",topic="{topic}",client-id="{client-id}

preferred-read-replica
パーティションの現在の読み取りレプリカ、またはリーダーから読み取っている場合は -1
records-lag
パーティションの最新ラグ。
records-lag-avg
パーティションの平均ラグ。
records-lag-max
パーティションの最大ラグ。
records-lead
パーティションの最新リード。
records-lead-avg
パーティションの平均リード。
records-lead-min
パーティションの最小リード。

コンシューマーグループのメトリクス

MBean: kafka.consumer:type=consumer-coordinator-metrics,client-id=([-.w]+)

assigned-partitions
このコンシューマーに現在割り当てられているパーティションの数。
commit-latency-avg
コミットリクエストの平均所要時間。
commit-latency-max
コミットリクエストの最大所要時間。
commit-rate
1 秒あたりの commit コールの数。
heartbeat-rate
1 秒あたりのハートビート数の平均値。バランス調整後に、コンシューマーは自身がグループ内でアクティブであり続けるために、コーディネーターにハートビートを送信します。この動作を制御するには、コンシューマーに対して heartbeat.interval.ms 設定を使用します。処理ループでメッセージバッチの処理に時間がかかっている場合は、構成されているレートより遅くなっていることがあります。通常は、遅くなっていても、結合レートが増加していない限り問題ありません。
heartbeat-response-time-max
ハートビートリクエストに対するレスポンスを受信するまでの最大所要時間。
join-rate
1 秒あたりのグループ結合の数。グループ結合はバランス調整プロトコルの最初の段階です。この値が大きい場合は、そのコンシューマーグループが不安定であり、ラグの増大を伴う可能性があることを表しています。
join-time-avg
グループ再結合の平均所要時間。この値は、そのコンシューマーに対して構成されているセッションタイムアウトと同程度まで増えることがありますが、通常はさらに小さな値です。
join-time-max
グループ再結合の最大所要時間。この値は、そのコンシューマーに対して構成されているセッションタイムアウトを大幅に上回ることはありません。
last-heartbeat-seconds-ago
コントローラーのハートビートを最後に受信してからの経過秒数。
sync-rate
1 秒あたりのグループ同期の数。グループ同期はバランス調整プロトコルの 2 番目(最後)の段階です。join-rate と同様に、この値が大きい場合は、そのコンシューマーグループが不安定であることを表しています。
sync-time-avg
グループ同期の平均所要時間。
sync-time-max
グループ同期の最大所要時間。

グローバルリクエストメトリクス

MBean: kafka.consumer:type=consumer-metrics,client-id=([-.w]+)

incoming-byte-rate
すべてのサーバーから受信された、1 秒あたりの着信バイト数の平均値。
outgoing-byte-rate
すべてのサーバーから送信された、1 秒あたりの発信バイト数の平均値。
request-latency-avg
リクエストのレイテンシの平均値(ミリ秒)。
request-latency-max
リクエストのレイテンシの最大値(ミリ秒)。
request-rate
1 秒あたりに送信されたリクエスト数の平均値。
response-rate
1 秒あたりに受信されたレスポンス数の平均値。

グローバルコネクションメトリクス

MBean: kafka.consumer:type=consumer-metrics,client-id=([-.w]+)

connection-count
現在アクティブなコネクションの数。
connection-creation-rate
指定されたウィンドウでの、1 秒あたりの新規コネクション確立の数。
connection-close-rate
指定されたウィンドウでの、1 秒あたりのコネクション終了の数。
io-ratio
I/O スレッドで I/O 処理に費やされた時間の割合。
io-time-ns-avg
select コールあたりの I/O の所要時間の平均値(ナノ秒)。
io-wait-ratio
I/O スレッドで待機に費やされた時間の割合。
io-wait-time-ns-avg
I/O スレッドで、ソケットが読み取りまたは書き込みの準備が整うまで待機した時間の平均値(ナノ秒)。
select-rate
I/O レイヤーで新規 I/O の実行がチェックされた、1 秒あたりの回数。

ブローカーごとのメトリクス

MBean: kafka.consumer:type=consumer-node-metrics,client-id=([-.w]+),node-id=([0-9]+)

グローバルリクエストメトリクス に加えて、以下のメトリクスもブローカーごとに利用可能です。

incoming-byte-rate
ブローカーから 1 秒あたりに受信されたバイト数の平均値。
outgoing-byte-rate
ブローカーに 1 秒あたりに送信されたバイト数の平均値。
request-size-avg
ブローカーに対して指定されたウィンドウで送信されたすべてのリクエストの平均サイズ。
request-size-max
ブローカーに対して指定されたウィンドウで送信されたリクエストの最大サイズ。
request-rate
ブローカーに 1 秒あたりに送信されたリクエスト数の平均値。
response-rate
ブローカーから 1 秒あたりに受信されたレスポンス数の平均値。

旧式のコンシューマーのメトリクス

kafka.consumer:type=ConsumerFetcherManager,name=MaxLag,clientId=([-.\w]+)
コンシューマーがプロデューサーより処理が遅れているメッセージの数。
kafka.consumer:type=ConsumerFetcherManager,name=MinFetchRate,clientId=([-.\w]+)
コンシューマーがブローカーにフェッチリクエストを送信する最小レート。コンシューマーが機能停止状態である場合、この値はほぼ 0 まで低下します。
kafka.consumer:type=ConsumerTopicMetrics,name=MessagesPerSec,clientId=([-.\w]+)
1 秒あたりのスループット(メッセージ数)。
kafka.consumer:type=ConsumerTopicMetrics,name=MessagesPerSec,clientId=([-.\w]+)
1 秒あたりのスループット(バイト数)。

以下のメトリクスは上位のコンシューマーでのみ利用できます。

kafka.consumer:type=ZookeeperConsumerConnector,name=KafkaCommitsPerSec,clientId=([-.\w]+)
このコンシューマーが Kafka にオフセットをコミットするレート。この値に意味があるのは offsets.storage=kafka である場合のみです。
kafka.consumer:type=ZookeeperConsumerConnector,name=ZooKeeperCommitsPerSec,clientId=([-.\w]+)
このコンシューマーが ZooKeeper にオフセットをコミットするレート。この値に意味があるのは offsets.storage=zookeeper である場合のみです。書き込み負荷が高いために ZooKeeper クラスターのパフォーマンスが低下している場合は、この値をモニタリングします。
kafka.consumer:type=ZookeeperConsumerConnector,name=RebalanceRateAndTime,clientId=([-.\w]+)
このコンシューマーでのバランス調整操作のレートとレイテンシ。
kafka.consumer:type=ZookeeperConsumerConnector,name=OwnedPartitionsCount,clientId=([-.\w]+),groupId=([-.\w]+)
このコンシューマーによって所有されているパーティションの数。