Kafka のモニター

「 Instana 」の「 Kafka 」センサーを使用することで、 Kafka 環境を監視し、エンドツーエンドの可視性を確保し、パフォーマンスのボトルネックを特定し、パフォーマンスを最適化することができます。 Instana ホストエージェントをインストールすると、エージェントは自動的に Kafka センサーを展開し、リアルタイムのメトリクスを収集します。 Instana のトレーサーは、監視対象プロセスからの Kafka へのメッセージング呼び出しを計測し、メッセージングフロー全体のトレースをキャプチャします。 Instana のUIでは、メトリクスとトレースの両方を確認できます。

Kafka のトレースに関する詳細については、 「サポートされているクライアントサイドのトレース」 を参照してください。 現在、メッセージフローのトレースと Kafka インフラストラクチャとの間の相関関係はサポートされていません。

サポート情報

Kafka センサーが現在の環境と互換性があることを確認するには、以下のサポート情報セクションをご確認ください:

対応バージョンとサポート方針

Instana が収集するすべての Kafka メトリクスは、 Consumerグループの遅延およびConsumer/Producerのバイトレート/スロットリングメトリクスを除き、 Apache Kafka、 Cloudera Kafka、 Confluent Kafka のすべてのバージョンで利用可能です。 オープンソースの Apache Kafka を基盤とする IBM® Event Streams は、 IBM Event Streams 11.0.4 ( IBM Event Streams Operator 3.0.5 )以降のバージョンでサポートされています。

以下の表は、最新のサポート対象バージョンとサポート方針を示しています:

テクノロジー サポート・ポリシー 最新技術バージョン サポートされる最新バージョン
Apache Kafka 45 日間 4.3.1 4.2.0
Cloudera Kafka 45 日間 4.1.x 4.1.x
Confluent Kafka 45 日間 8.3.0 8.1.0
▲IBM Event Stream オンデマンド 13.0 11.6

サポートポリシーに関する詳細については、 「センサーのサポート戦略」 を参照してください。

対応している認証方式

Instana 以下の認証メカニズムで構成された Kafka 環境の監視に対応しています:
  • PLAINTEXT
  • SASL_PLAINTEXT
  • SSL

追加のサポート情報

「コンシューマー・グループ・ラグ」 メトリックは、以下のバージョンで使用可能です。

  • Apache Kafka (Zookeeper 対応) 0.11.x.x から 3.9.0 までのバージョン
  • Apache Kafka (KRaft版) 3.9.0 からのバージョン
  • Cloudera Kafka 3.x.x から 4.1.x までのバージョン
  • Confluent Kafka 3.3.x からのバージョン
  • IBM Event Streams 11.0.4 ( IBM Event Streams Operator 3.0.5 )以降のバージョン

「コンシューマー/プロデューサーのバイトレート/スロットリング」 メトリクスは、 Java Kafka のクライアントのみ、かつ以下のバージョンで利用可能です:

  • Apache Kafka 1.1.x からのバージョン
  • Cloudera Kafka バージョン 4.0.x から 4.1.x
  • Confluent Kafka 4.1.x からのバージョン
  • IBM Event Streams 11.0.4 ( IBM Event Streams Operator v3.0.5 )以降のバージョン

対応している認証プロトコル

Instana 監視およびコンシューマー遅延メトリクスの収集において、以下の Kafka セキュリティプロトコルをサポートしています:

  • プレーンテキスト :認証や暗号化なし(デフォルト)
  • SSL : SSL / TLS オプションでクライアント認証を伴う暗号化接続
  • SASL_PLAINTEXT : プレーンテキスト接続を介したSASL認証(PLAINメカニズム)
重要: SASL_SSL やその他のカスタムプロトコルなどの認証プロトコルは、現在サポートされていません。 Instana の監視およびコンシューマーグループの遅延メトリクスの収集を有効にするには、 Kafka ブローカーがサポートされている認証プロトコルのいずれかを使用するように設定してください。

構成

Instana エージェントは、実行中の Kafka エージェントを自動的に検出します。 したがって、設定は不要です。

Instana トピック名順に並べられた最初の400 件のトピックを取得します。

トピックをフィルタリングする必要がある場合は、次の例に示すように、 <agent_install_dir>/etc/instana/configuration.yaml エージェントの設定ファイルで設定できます:

com.instana.plugin.kafka:
  poll_rate: 1 # value is in seconds. Default value is 1 second.
  topicsRegex: '<OPTIONAL_REGEX_HERE>'
  brokerPropertiesFilePath: '/path/to/server.properties'
  controllerPropertiesFilePath: '/path/to/controller.properties' # Optional
  collectLagData: '' # true or false. The default value is true
 
  • poll_rate: ポーリング間隔を秒単位で指定します。デフォルト値は 1 です。
  • topicsRegex: 最大 400 個のトピックを名前で選択するためのオプションの正規表現。 値が空の場合、または存在しない場合、 Instana は名前順に並べ替えられた最初の400個のトピックを取得します。
  • brokerPropertiesFilePath: エージェントがブローカーネットワークおよびセキュリティプロトコルの設定情報を取得するために使用する、ブローカー server.properties ファイルへのパス。
  • controllerPropertiesFilePath: (任意) KRaft モードでのデプロイ時に使用する KRaft コントローラー controller.properties ファイルへのパス。
  • collectLagData: ラグデータの収集を有効または無効にするフラグ(デフォルトでは有効)。

ブローカーのプロパティへのパスが指定されていない場合、エージェントは以下の場所を server.properties 検索します:

  • Kafka ブローカー・プロセスの引数
  • KAFKA_SERVER_PROPERTIES環境変数
  • Confluent Kafka の事前定義パス /path_to_kafka_home/config/server.properties または /path_to_kafka_home/etc/kafka/server.properties を使用する。

エージェントは、前述のいずれの方法でもへのパス server.properties が見つからない場合、をデフォルトのパスとして /opt/kafka/config/server.properties 使用します。

コントローラーノードが分離されたKRaftモードでのデプロイの場合、エージェントはデフォルトのパスとして も検索します /opt/kafka/config/controller.properties

ポーリングレートの設定

注:Instana、 Kafka sensor、 1.1.61 以降では、 データ取り込み量を削減するためにポーリングレートを設定できるようになっています。 この機能は、セルフホスト型の Instana バックエンド311以降でサポートされています。

次の例に示すように、agent configuration.yaml ファイル poll_rate 内のパラメータを使用して、 Instana が Kafka からデータやメトリクスを収集するためにポーリングを行う頻度を設定できます

com.instana.plugin.kafka:
  poll_rate: 1 # value is in seconds. Default value is 1 second.

SSL/TLS サポート

Kafka ブローカーインスタンスが SSL セキュリティプロトコルを使用している場合は、以下の例に示すように、 Instana エージェントを設定して <agent_install_dir>/etc/instana/configuration.yaml 、コンシューマーの遅延メトリクスの収集を有効にしてください:

com.instana.plugin.kafka:
  sslTrustStore: '/path/to/truststore.jks'
  sslTrustStorePassword: 'kafkaTsPassword'
  sslKeyStore: '/path/to/sslKeyStoreFile.jks'
  sslKeyStorePassword: 'kafkaKsPassword'
 

SASLのサポート

Kafka ブローカーインスタンスで、PLAIN認証メカニズムを備えたSASL_PLAINTEXT セキュリティプロトコルを使用している場合は、以下の例に示すように、 Instana エージェントを設定して <agent_install_dir>/etc/instana/configuration.yaml 、コンシューマーの遅延メトリクスの収集を有効にしてください:

com.instana.plugin.kafka:
  saslUsername: 'kafkaUser'
  saslPassword: 'kafkaPassword'
 

キーが Java キーストア(JKS)形式であることを確認してください。 keytool を使用して鍵を作成してください。

注: この操作により、 Instana エージェントが SSL 経由で Kafka ブローカーに接続し、コンシューマーグループの遅延メトリクスを収集できるようになります。

JMX 認証機能

Kafka で「 JMX 」認証が有効になっている場合、次の例に示すように、 JMX を認証 <agent_install_dir>/etc/instana/configuration.yaml するために、 Instana エージェントを設定する必要があります

com.instana.plugin.kafka:
  jmxUsername: ''
  jmxPassword: ''
  jmxPort: '' # default jmx port is 1099
 
注:JMX がセキュリティ保護されていない場合、 Instana はデフォルトの1099番ポート( JMX )に接続して監視を開始します。

Kafka ノード - メトリック収集

Kafka ノードメトリクスの収集機能は、 Kafka クラスタ内の個々のノードのパフォーマンスと健全性に関するデータを収集・分析します。

構成データ

Kafka ノードを設定するには、以下の情報が必要です:

  • バージョン
  • Zookeeper Connects(Zookeeperモードの場合)またはController Quorum Voters(KRaftモードの場合)
  • プロセス ID
  • ノード ID
  • トピック数/パーティション数

パフォーマンス・メトリック

次の表は、パフォーマンス指標の詳細を示しています:

メトリック 説明 粒度
合計生産時間 指定されたリクエストの処理にかかる合計時間(ミリkafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce秒単位)。 1 秒
合計フェッチ・コンシューマー時間 指定されたリクエストの処理にかかる合計時間(ミリkafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchConsumer秒単位)。 1 秒
合計フェッチ・フォロワー時間 指定されたリクエストの処理にかかる合計時間(ミリkafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchFollower秒単位)。 1 秒

ブローカー・トラフィック

次の表は、ブローカーのトラフィックの詳細を示しています:

メトリック 説明 粒度
受信バイトレートを合計し、以下の場所から収集されますkafka.server:type=BrokerTopicMetrics,name=BytesInPerSec 1 秒
アウト 送信バイトレートを合計し、以下の場所から収集されますkafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec 1 秒
拒否 合計拒否バイトレートを算出し、そのデータを収集しますkafka.server:type=BrokerTopicMetrics,name=BytesRejectedPerSec 1 秒

着信ブローカー・メッセージ数

次の表は、ブローカーメッセージの詳細を示しています:

メトリック 説明 粒度
受信メッセージの総数を集計し、そこから収集されますkafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec 1 秒

生成要求数

次の表には、生成されたリクエストの詳細が記載されています:

メトリック 説明 粒度
リクエスト率および収集元kafka.network:type=RequestMetrics,name=RequestsPerSec,request=Produce 1 秒
平均待ち時間 平均レイテンシは、前述の「Count」と、収集された指定されたリクエストの処理にかかる合計時間kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce(ミリ秒単位)との比として算出されます。 1 秒

コンシューマーのフェッチ要求数

次の表には、取得されたコンシューマーリクエストの詳細が記載されています:

メトリック 説明 粒度
リクエスト率および収集元kafka.network:type=RequestMetrics,name=RequestsPerSec,request=FetchConsumer 1 秒
平均待ち時間 平均レイテンシは、前述の「Count」と、収集された指定されたリクエストの処理にかかる合計時間(ミリ秒単位)kafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchConsumerとの比として算出されます。 1 秒

フォロワーのフェッチ要求数

次の表には、取得されたフォロワーリクエストの詳細が記載されています:

メトリック 説明 粒度
リクエスト率および収集元kafka.network:type=RequestMetrics,name=RequestsPerSec,request=FetchFollower 1 秒
平均待ち時間 平均レイテンシは、前述の「Count」と、収集された指定されたリクエストの処理にかかる合計時間(ミリ秒単位)kafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchFollowerとの比として算出されます。 1 秒

平均アイドル時間

次の表は、平均アイドル時間の詳細を示しています:

メトリック 説明 粒度
ネットワーク・プロセッサー ネットワークプロセッサのスレッドがアイドル状態にある時間の平均割合。 値は0%(すべてのリソースが使用中)から100%(すべてのリソースが利用可能)の範囲であり、以下の場所から収集されますkafka.network:type=SocketServer,name=NetworkProcessorAvgIdlePercent 1 秒
要求ハンドラー リクエストハンドラスレッドがアイドル状態にある時間の平均割合。 値は0%(すべてのリソースが使用中)から100%(すべてのリソースが利用可能)の範囲であり、以下の場所から収集されますkafka.server:type=KafkaRequestHandlerPool,name=RequestHandlerAvgIdlePercent 1 秒

ブローカー障害数

次の表は、ブローカーの障害に関する詳細を示しています:

メトリック 説明 粒度
フェッチ 失敗したリクエストのフェッチリクエストレート(kafka.server:type=BrokerTopicMetrics,name=FailedFetchRequestsPerSec収集元) 1 秒
生成 失敗したリクエストについて、そのリクエストが送信されたソースからのリクエスト率kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSecを算出する。 1 秒

ブローカー状態メトリック

次の表は、ブローカーの状態メトリクスの詳細を示しています:

メトリック 説明 粒度
レプリカ生成不足パーティションの数 レプリカ数が不足しているパーティション(ISR < すべてのレプリカ)の数が、以下から収集されますkafka.server:type=ReplicaManager,name=UnderReplicatedPartitions 1 秒
オフライン・パーティション アクティブなリーダーが存在せず、したがって書き込みや読み取りができないパーティションの数。kafka.controller:type=KafkaController,name=OfflinePartitionsCountこれらは収集対象となります。 1 秒
リーダー選出数 リーダー選出の頻度とレイテンシ、およびそのデータが収集される場所kafka.controller:type=ControllerStats,name=LeaderElectionRateAndTimeMs 1 秒
不明確なリーダー選出数 不適切なリーダーの選出率、およびそのデータは以下の場所から収集されるkafka.controller:type=ControllerStats,name=UncleanLeaderElectionsPerSec 1 秒
ISR 縮小数 ブローカーがダウンすると、一部のパーティションのISRが減少します。 そのブローカーが再起動すると、レプリカが完全に同期された時点でISRが拡張されます。 それ以外については、ISRの収縮率と膨張率の両方の期待値は0である。 出典kafka.server:type=ReplicaManager,name=IsrShrinksPerSec 1 秒
ISR 拡張数 障害後にブローカーが立ち上がると、リーダーからの読み取りによってキャッチアップを開始します。 キャッチアップ後、ISR に再び追加されます。 出典kafka.server:type=ReplicaManager,name=IsrExpandsPerSec 1 秒
アクティブ・コントローラー数 クラスタ内のアクティブなコントローラの数は、以下から収集されますkafka.controller:type=KafkaController,name=ActiveControllerCount 1 秒

パーティション

次の表にパーティションの詳細を示します:

メトリック 説明 粒度
このブローカー上のパーティションの総数。 これは、すべてのブローカー間でほぼ均等である必要があり、以下から収集されますkafka.server:type=ReplicaManager,name=PartitionCount 1 秒

ログ・フラッシュ

次の表は、ログのフラッシュに関する詳細を示しています:

メトリック 説明 粒度
平均値 ログのフラッシュ頻度と、そのデータが収集される場所kafka.log:type=LogFlushStats,name=LogFlushRateAndTimeMs 1 秒
フラッシュ ログのフラッシュ回数は、どこから収集されるkafka.log:type=LogFlushStats,name=LogFlushRateAndTimeMsのか。 1 秒

トピック

次の表は、 Kafka ノードの詳細に関する項目を示しています:

メトリック 説明 粒度
名前 受信メッセージの総数を集計し、そこから収集されますkafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec 1 秒
パーティション 受信メッセージの総数を集計し、そこから収集されますkafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec 1 秒
着信バイト kafka.server:type=BrokerTopicMetrics,name=BytesInPerSecそのトピックに対する合計受信バイトレート。 1 秒
発信バイト そのトピックからの総送信バイトkafka.server:type=BrokerTopicMetrics,name=BytesOutPerSecレート。 1 秒
拒否されたバイト数 そのトピックから収集された、拒否されたkafka.server:type=BrokerTopicMetrics,name=BytesRejectedPerSecバイト数の合計。 1 秒
着信メッセージ そのトピックに対する受信メッセージの合計レートkafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec 1 秒
in-sync レプリカ数 同期レプリカの数は、以下から収集されますkafka.cluster:type=Partition,name=InSyncReplicasCount 1 秒

Kafka クラスター - メトリック収集

Kafka クラスタメトリクスの収集では、個々のノードではなく、 Apache Kafka クラスタ全体のパフォーマンスと健全性に関するデータを収集・分析します。

構成データ

Kafka クラスタを設定するには、以下の情報が必要です:

  • クラスター名
  • Zookeeper
  • ノード (名前、バージョン)
  • トピック数/パーティション数

パフォーマンス・メトリック

次の表は、パフォーマンス指標の詳細を示しています:

メトリック 説明 粒度
すべての着信ブローカー・メッセージ数 すべてのノードからのメトリックに関するブローカーメッセージの合計。 1 秒
拒否されたトラフィック すべてのノードからの「拒否されたブローカー通信量」メトリクスの合計。 1 秒
合計フェッチ・コンシューマー時間 すべてのノードからの「フェッチ処理時間」メトリクスの合計値。 1 秒
合計フェッチ・フォロワー時間 すべてのノードからの「フェッチフォロワー時間」メトリクスの合計値。 1 秒

平均リクエスト遅延とスループットの関係

次の表は、リクエストの平均レイテンシとスループットの関係を示したものです:

メトリック 説明 粒度
生成スループット すべてのノードからの「プロデュース要求数」メトリクスの合計。 1 秒
コンシューマーのフェッチ・スループット すべてのノードからの「フェッチ・コンシューマー要求数」メトリクスの合計。 1 秒
フォロワーのフェッチ・スループット すべてのノードからのフェッチフォロワー要求数の合計。 1 秒
合計生産時間 すべてのノードからの総処理時間の合計。 1 秒
合計フェッチ・コンシューマー時間 すべてのノードからの合計フェッチ処理時間の合計。 1 秒
合計フェッチ・フォロワー時間 すべてのノードからのフェッチ・フォロワー時間の合計。 1 秒

すべてのブローカー・トラフィック

次の表は、すべてのブローカーのトラフィック詳細を示しています:

メトリック 説明 粒度
すべてのノードからのブローカートラフィックの合計。 1 秒
アウト すべてのノードからのブローカートラフィックの合計。 1 秒
拒否 すべてのノードから拒否されたブローカー通信の合計。 1 秒

すべてのブローカーの失敗数

次の表には、すべてのブローカーの障害に関する詳細が記載されています:

メトリック 説明 粒度
フェッチ すべてのノードから取得したブローカー障害の合計。 1 秒
生成 すべてのノードから生成されるブローカー障害の合計。 1 秒

すべてのブローカーの状態メトリック

次の表には、すべてのブローカーの状態メトリクスの詳細が記載されています:

メトリック 説明 粒度
レプリカ生成不足パーティションの数 すべてのノードにおける、ブローカーの状態メトリクスのうち、レプリケーション数が不足しているパーティションの合計。 1 秒
オフライン・パーティション すべてのノードからのブローカー状態メトリクスのオフラインパーティションの合計。 1 秒
リーダー選出数 すべてのノードにおけるブローカー状態メトリクスのリーダー選出の合計。 1 秒
不明確なリーダー選出数 すべてのノードからのブローカー状態メトリクスとアンクリーンリーダー選出の合計。 1 秒
ISR 縮小数 すべてのノードから、ブローカーの状態メトリクスの合計であるISRが減少する。 1 秒
ISR 拡張数 すべてのノードからのブローカー状態メトリクスのISR拡張の合計。 1 秒
アクティブ・コントローラー数 すべてのノードにおけるブローカー状態メトリクスのアクティブコントローラー数の合計。 1 秒

平均アイドル時間率 (%)

次の表は、平均アイドル時間の割合に関する詳細を示しています:

メトリック 説明 粒度
ネットワーク・プロセッサー すべてのノードにおけるネットワークプロセッサの平均アイドル時間の合計。 1 秒
要求ハンドラー すべてのノードにおけるリクエストハンドラの平均アイドル時間の合計。 1 秒

ログ・フラッシュ

次の表は、ログのフラッシュに関する詳細を示しています:

メトリック 説明 粒度
平均値 すべてのノードからのログフラッシュ平均の合計。 1 秒
フラッシュ すべてのノードからのログフラッシュの合計。 1 秒

クラスター・ノード

次の表は、クラスタノードの詳細を示しています:

メトリック 説明 粒度
コントローラー ノード・コントローラーか? YES または NO。 1 秒
着信メッセージ ブローカー着信メッセージ数のグラフ。 1 秒
着信バイト ブローカー着信バイト数のグラフ。 1 秒
発信バイト ブローカー発信バイト数のグラフ。 1 秒
平均応答時間 ブローカー平均応答時間数のグラフ。 1 秒
正常性 ノードのヘルス・インディケーター。 1 秒

クラスター・トピック

次の表は、クラスタのトピックの詳細を示しています:

メトリック 説明 粒度
パーティション パーティションの合計数。 10 分
着信バイト トピック着信バイト数のグラフ。 1 秒
発信バイト トピック送信バイト数のグラフ。 1 秒
拒否されたバイト数 トピック拒否バイト数のグラフ。 1 秒
着信メッセージ トピック着信メッセージ数のグラフ。 1 秒

コンシューマー・グループのラグ

次の表は、コンシューマーグループのラグに関する詳細を示しています:

メトリック 説明 粒度
ラグ トピックあたりのコンシューマー・グループのラグ。 60 秒

コンシューマー

次の表には、消費者の詳細情報が記載されています:

メトリック 説明 粒度
バイト・レート 1秒あたりに送信された総バイト数。 1 秒
スロットリング スロットル操作の合計平均時間。 1 秒
待ち時間 フェッチの平均レイテンシの合計。 1 秒

プロデューサー数

次の表には、生産者の詳細が記載されています:

メトリック 説明 粒度
バイト・レート 1秒あたりに送信されるバイトの総数。 1 秒
スロットリング スロットル操作の合計平均時間。 1 秒
待ち時間 リクエストの平均総遅延時間。 1 秒
注:Instana エージェントクライアントが Kafka ブローカーに対して遅延関連データを照会できるようにするには、 Kafka ブローカーの設定ファイル内で、 local hostソケット接続用のPLAINTEXTセキュリティプロトコルを追加してください。

正常性シグニチャー

各センサーについて、正常状態のシグネチャをまとめたナレッジベースが、受信したメトリクスに対して継続的に照合され、ユーザーへの影響度に応じて問題やインシデントとして通知されます。

組み込みイベントは、エンティティのヘルスシグネチャに異常が検出されたことを受けて課題やインシデントをトリガーし、 カスタムイベントは、任意のエンティティの個別のメトリクスのしきい値に基づいて課題やインシデントをトリガーします。

Kafka のノードおよびクラスターの組み込みイベントに関する詳細については、 「組み込みイベントのリファレンス」 を参照してください。

トラブルシューティング

SSL が構成されていない

監視対象の種類: kafka_ssl_not_configured

SSL の設定に関する問題を解決し、 Kafka の SSL のトラストストアの保存場所とパスワードを設定するには、 SSL / TLS Support を参照してください。

SSL クライアント認証が構成されていない

監視対象の種類: kafka_ssl_client_not_configured

SSL のクライアント認証に関する問題を解決し、 Kafka の SSL クライアント認証(キーストアの場所とパスワード)を設定するには、 SSL / TLS Support を参照してください。