Kafka のモニタリング¶
Apache Kafka® のブローカーおよびクライアントは多数の内部メトリクスを報告します。デフォルトのレポーターは JMX ですが、任意のプラグ可能なレポーターを追加できます。
すぐに利用できる Kafka クラスターのモニタリング用に Confluent Control Center をデプロイできるので、独自のモニタリングシステムを構築する必要はありません。Control Center を使用すると、Confluent Platform 全体の管理が簡単になります。Control Center は、ユーザーがクラスターを管理でき、事前定義済みのダッシュボードで Kafka の システム正常性 をモニタリングでき、トリガーによってアラートを通知できる、ウェブベースのアプリケーションです。また、Control Center は、すべてのメッセージがプロデューサーからコンシューマーに確実に配信されるようにエンドツーエンドの ストリームモニタリング を報告し、メッセージの配信にかかった時間を測定し、クラスターでの問題の発生源を特定します。
ちなみに
- オンプレミスの 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=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.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.enable
をtrue
に設定します。 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.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 クライアントは現在、アンサンブルから切り離されています。そのクライアントはサーバーへの以前のコネクションを失っていて、現在は再接続を試行しています。このセッションは期限切れになっているとは限りません。
kafka.server:type=SessionExpireListener,name=ZooKeeperExpiresPerSec
ZooKeeper セッションが期限切れになっています。セッションが期限切れになると、リーダーが変更されたり、場合によっては新しいコントローラーになったりすることがあります。Kafka クラスター全体でこのようなイベントの数に注意を払っておくことが重要であり、その総数が大きい場合は、以下を行うことをお勧めします。
- ネットワークの正常性を確認します。
- ガベージコレクションの問題をチェックし、適切に調整します。
- 必要であれば、
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]+)
request-latency-avg
- リクエストのレイテンシの平均値(ミリ秒)。
request-latency-max
- リクエストのレイテンシの最大値(ミリ秒)。
request-rate
- 1 秒あたりに送信されたリクエスト数の平均値。
response-rate
- 1 秒あたりに受信されたレスポンス数の平均値。
incoming-byte-rate
- すべてのサーバーから受信された、1 秒あたりの着信バイト数の平均値。
outgoing-byte-rate
- すべてのサーバーから送信された、1 秒あたりの発信バイト数の平均値。
グローバルコネクションメトリクス¶
MBean: kafka.producer:type=producer-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 スレッドで待機に費やされた時間の割合。
select-rate
- I/O レイヤーで新規 I/O の実行がチェックされた、1 秒あたりの回数。
io-wait-time-ns-avg
- I/O スレッドで、ソケットが読み取りまたは書き込みの準備が整うまで待機した時間の平均値(ナノ秒)。
ブローカーごとのメトリクス¶
MBean: kafka.producer:type=producer-node-metrics,client-id=([-.w]+),node-id=([0-9]+)
グローバルリクエストメトリクス に加えて、以下のメトリクスもブローカーごとに利用可能です。
request-size-max
- ブローカーに対して指定されたウィンドウで送信されたリクエストの最大サイズ。
request-size-avg
- ブローカーに対して指定されたウィンドウで送信されたすべてのリクエストの平均サイズ。
request-rate
- ブローカーに 1 秒あたりに送信されたリクエスト数の平均値。
response-rate
- ブローカーから 1 秒あたりに受信されたレスポンス数の平均値。
incoming-byte-rate
- ブローカーから 1 秒あたりに受信されたバイト数の平均値。
outgoing-byte-rate
- ブローカーに 1 秒あたりに送信されたバイト数の平均値。
トピックごとのメトリクス¶
MBean: kafka.producer:type=producer-topic-metrics,client-id=([-.w]+),topic=([-.w]+)
グローバルリクエストメトリクス に加えて、以下のメトリクスもトピックごとに利用可能です。
byte-rate
- トピックに対して 1 秒あたりに送信されたバイト数の平均値。
record-send-rate
- トピックに対して 1 秒あたりに送信されたレコード数の平均値。
compression-rate
- トピックに対するレコードバッチの平均圧縮レート。
record-retry-rate
- トピックに対して送信が再試行されたレコード数の 1 秒あたりの平均値。
record-error-rate
- トピックに対して送信がエラーになったレコード数の 1 秒あたりの平均値。
監査のメトリクス¶
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=([-.w]+)
records-lag-max
- このウィンドウでの、任意のパーティションに対するラグ(レコード数)の最大値。この値が時間の経過とともに増加している場合は、そのコンシューマーグループがプロデューサーよりも遅れていることを表しています。
fetch-size-avg
- リクエストあたりにフェッチされたバイト数の平均値。
fetch-size-max
- リクエストあたりにフェッチされたバイト数の平均値。
bytes-consumed-rate
- 1 秒あたりに消費されたバイト数の平均値。
records-per-request-avg
- 各リクエスト内のレコード数の平均値。
records-consumed-rate
- 1 秒あたりに消費されたレコード数の平均値。
fetch-rate
- 1 秒あたりのフェッチリクエスト数の平均値。
fetch-latency-avg
- フェッチリクエストの平均所要時間。
fetch-latency-max
- フェッチリクエストの最大所要時間。
fetch-throttle-time-avg
- 平均スロットル時間(ミリ秒)。クォータが有効になっている場合、上限を超えているコンシューマーを抑制するために、ブローカーがフェッチリクエストを遅らせることがあります。このメトリックは、どの程度のスロットル時間がフェッチリクエストに追加されているかを表しています。
fetch-throttle-time-max
- 最大スロットル時間(ミリ秒)。
トピックレベルのフェッチのメトリクス¶
MBean: kafka.consumer:type=consumer-fetch-manager-metrics,client-id=([-.w]+),topic=([-.w]+)
fetch-size-avg
- 特定のトピックに対するリクエストあたりにフェッチされたバイト数の平均値。
fetch-size-max
- 特定のトピックに対するリクエストあたりにフェッチされたバイト数の最大値。
bytes-consumed-rate
- 特定のトピックに対して 1 秒あたりに消費されたバイト数の平均値。
records-per-request-avg
- 特定のトピックに対する各リクエスト内のレコード数の平均値。
records-consumed-rate
- 特定のトピックに対して 1 秒あたりに消費されたレコード数の平均値。
コンシューマーグループのメトリクス¶
MBean: kafka.consumer:type=consumer-coordinator-metrics,client-id=([-.w]+)
assigned-partitions
- このコンシューマーに現在割り当てられているパーティションの数。
commit-latency-avg
- コミットリクエストの平均所要時間。
commit-latency-max
- コミットリクエストの最大所要時間。
commit-rate
- 1 秒あたりの commit コールの数。
join-rate
- 1 秒あたりのグループ結合の数。グループ結合はバランス調整プロトコルの最初の段階です。この値が大きい場合は、そのコンシューマーグループが不安定であり、ラグの増大を伴う可能性があることを表しています。
join-time-avg
- グループ再結合の平均所要時間。この値は、そのコンシューマーに対して構成されているセッションタイムアウトと同程度まで増えることがありますが、通常はさらに小さな値です。
join-time-max
- グループ再結合の最大所要時間。この値は、そのコンシューマーに対して構成されているセッションタイムアウトを大幅に上回ることはありません。
sync-rate
- 1 秒あたりのグループ同期の数。グループ同期はバランス調整プロトコルの 2 番目(最後)の段階です。
join-rate
と同様に、この値が大きい場合は、そのコンシューマーグループが不安定であることを表しています。 sync-time-avg
- グループ同期の平均所要時間。
sync-time-max
- グループ同期の最大所要時間。
heartbeat-rate
- 1 秒あたりのハートビート数の平均値。バランス調整後に、コンシューマーは自身がグループ内でアクティブであり続けるために、コーディネーターにハートビートを送信します。この動作を制御するには、コンシューマーに対して
heartbeat.interval.ms
設定を使用します。処理ループでメッセージバッチの処理に時間がかかっている場合は、構成されているレートより遅くなっていることがあります。通常は、遅くなっていても、結合レートが増加していない限り問題ありません。 heartbeat-response-time-max
- ハートビートリクエストに対するレスポンスを受信するまでの最大所要時間。
last-heartbeat-seconds-ago
- コントローラーのハートビートを最後に受信してからの経過秒数。
グローバルリクエストメトリクス¶
MBean: kafka.consumer:type=consumer-metrics,client-id=([-.w]+)
request-latency-avg
- リクエストのレイテンシの平均値(ミリ秒)。
request-latency-max
- リクエストのレイテンシの最大値(ミリ秒)。
request-rate
- 1 秒あたりに送信されたリクエスト数の平均値。
response-rate
- 1 秒あたりに受信されたレスポンス数の平均値。
incoming-byte-rate
- すべてのサーバーから受信された、1 秒あたりの着信バイト数の平均値。
outgoing-byte-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 スレッドで待機に費やされた時間の割合。
select-rate
- I/O レイヤーで新規 I/O の実行がチェックされた、1 秒あたりの回数。
io-wait-time-ns-avg
- I/O スレッドで、ソケットが読み取りまたは書き込みの準備が整うまで待機した時間の平均値(ナノ秒)。
ブローカーごとのメトリクス¶
MBean: kafka.consumer:type=consumer-node-metrics,client-id=([-.w]+),node-id=([0-9]+)
グローバルリクエストメトリクス に加えて、以下のメトリクスもブローカーごとに利用可能です。
request-size-max
- ブローカーに対して指定されたウィンドウで送信されたリクエストの最大サイズ。
request-size-avg
- ブローカーに対して指定されたウィンドウで送信されたすべてのリクエストの平均サイズ。
request-rate
- ブローカーに 1 秒あたりに送信されたリクエスト数の平均値。
response-rate
- ブローカーから 1 秒あたりに受信されたレスポンス数の平均値。
incoming-byte-rate
- ブローカーから 1 秒あたりに受信されたバイト数の平均値。
outgoing-byte-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]+)
- このコンシューマーによって所有されているパーティションの数。