第7章 AMQ Streams のメトリクスおよびダッシュボードの設定

ダッシュボードでキーメトリクスを表示し、特定の条件下でトリガーされるアラートを設定すると、AMQ Streams デプロイメントを監視できます。メトリクスは、Kafka、ZooKeeper、および AMQ Streams の他のコンポーネントで利用できます。

AMQ Streams は、メトリクス情報を提供するために、Prometheus ルールと Grafana ダッシュボードを使用します。

Prometheus に AMQ Streams の各コンポーネントのルールセットが設定されている場合、Prometheus はクラスターで稼働している Pod からキーメトリクスを使用します。次に、Grafana はこれらのメトリクスをダッシュボードで可視化します。AMQ Streams には、デプロイメントに合わせてカスタマイズできる Grafana ダッシュボードのサンプルが含まれています。

OpenShift Container Platform 4.x では、AMQ Streams は ユーザー定義プロジェクトのモニタリング (OpenShift の機能) を使用し、Prometheus の設定プロセスを容易にします。

OpenShift Container Platform 3.11 では、Prometheus および Alertmanager コンポーネントを別々にクラスターにデプロイする必要があります。

OpenShift Container Platform のバージョンに関係なく、AMQ Streams に Prometheus メトリクス設定をデプロイ して開始する必要があります。

次に、OpenShift Container Platform のバージョンに適した手順に従います。

Prometheus および Grafana が設定されると、Grafana ダッシュボードおよびアラートルールのサンプルを使用して Kafka クラスターを監視できます。

追加の監視オプション

Kafka Exporter は、コンシューマーラグに関連する追加の監視を提供する任意のコンポーネントです。AMQ Streams で Kafka Exporter を使用する場合は、「Configure the Kafka resource to deploy Kafka Exporter with your Kafka cluster」を参照してください。

さらに、分散トレーシングを設定してメッセージをエンドツーエンドで追跡するように、デプロイメントを設定することもできます。詳細は、『Using AMQ Streams on OpenShift』の「Distributed tracing」を参照してください。

その他のリソース

7.1. メトリクスファイルの例

Grafana ダッシュボードおよびその他のメトリクス設定のサンプルファイルは、examples/metrics ディレクトリー にあります。以下のリストが示すように、一部のファイルは OpenShift Container Platform 3.11 のみで使用され、OpenShift Container Platform 4.x では使用されません。

AMQ Streams で提供されるサンプルメトリクスファイル

metrics
├── grafana-dashboards 1
│   ├── strimzi-cruise-control.json
│   ├── strimzi-kafka-bridge.json
│   ├── strimzi-kafka-connect.json
│   ├── strimzi-kafka-exporter.json
│   ├── strimzi-kafka-mirror-maker-2.json
│   ├── strimzi-kafka.json
│   ├── strimzi-operators.json
│   └── strimzi-zookeeper.json
├── grafana-install
│   └── grafana.yaml 2
├── prometheus-additional-properties
│   └── prometheus-additional.yaml - OPENSHIFT 3.11 ONLY 3
├── prometheus-alertmanager-config
│   └── alert-manager-config.yaml 4
├── prometheus-install
│    ├── alert-manager.yaml - OPENSHIFT 3.11 ONLY 5
│    ├── prometheus-rules.yaml 6
│    ├── prometheus.yaml - OPENSHIFT 3.11 ONLY 7
│    ├── strimzi-pod-monitor.yaml 8
├── kafka-bridge-metrics.yaml 9
├── kafka-connect-metrics.yaml 10
├── kafka-cruise-control-metrics.yaml 11
├── kafka-metrics.yaml 12
└── kafka-mirror-maker-2-metrics.yaml 13

1
Grafana ダッシュボードのサンプル
2
Grafana イメージのインストールファイル。
3
OPENSHIFT 3.11 のみ該当: CPU、メモリー、およびディスクボリュームの使用状況についてのメトリクスをスクレープする追加の Prometheus 設定。これらのメトリクスは、ノード上の OpenShift cAdvisor エージェントおよび kubelet から直接提供されます。
4
Alertmanager による通知送信のためのフック定義。
5
OPENSHIFT 3.11 のみ該当: Alertmanager をデプロイおよび設定するためのリソース。
6
Prometheus Alertmanager と使用するアラートルールの例。
7
OPENSHIFT 3.11 のみ該当: Prometheus イメージのインストールリソースファイル。
8
Prometheus Operator によって Prometheus サーバーのジョブに変換される PodMonitor の定義。これにより、Pod から直接メトリクスデータをスクレープできます。
9
メトリクスが有効になっている Kafka Bridge リソース。
10
Kafka Connect に対する Prometheus JMX Exporter の再ラベル付けルールを定義するメトリクス設定。
11
Cruise Control に対する Prometheus JMX Exporter の再ラベル付けルールを定義するメトリクス設定。
12
Kafka および ZooKeeper に対する Prometheus JMX Exporter の再ラベル付けルールを定義するメトリクス設定。
13
Kafka Mirror Maker 2.0 に対する Prometheus JMX Exporter の再ラベル付けルールを定義するメトリクス設定。

7.1.1. Grafana ダッシュボードのサンプル

Grafana ダッシュボードのサンプルは、以下のリソースを監視するために提供されます。

AMQ Streams Kafka

以下のメトリクスを表示します。

  • オンラインのブローカーの数
  • クラスター内のアクティブなコントローラーの数
  • 非同期レプリカがリーダーに選択される割合
  • オンラインのレプリカ
  • 複製の数が最低数未満であるパーティションの数
  • 最小の In-Sync レプリカ数にあるパーティション
  • 最小の In-Sync レプリカ数未満のパーティション
  • アクティブなリーダーを持たないため、書き込みや読み取りができないパーティション
  • Kafka ブローカー Pod のメモリー使用量
  • 集約された Kafka ブローカー Pod の CPU 使用率
  • Kafka ブローカー Pod のディスク使用量
  • 使用されている JVM メモリー
  • JVM ガベージコレクションの時間
  • JVM ガベージコレクションの数
  • 受信バイトレートの合計
  • 送信バイトレートの合計
  • 受信メッセージレート
  • 生成要求レートの合計
  • バイトレート
  • 生成要求レート
  • 取得要求レート
  • ネットワークプロセッサーの平均時間アイドル率
  • リクエストハンドラーの平均時間アイドル率
  • ログサイズ
AMQ Streams ZooKeeper

以下のメトリクスを表示します。

  • ZooKeeper アンサンブルのクォーラムサイズ
  • アクティブな 接続の数
  • サーバーのキューに置かれたリクエストの数
  • ウォッチャーの数
  • ZooKeeper Pod のメモリー使用量
  • 集約された ZooKeeper Pod の CPU 使用率
  • ZooKeeper Pod のディスク使用量
  • 使用されている JVM メモリー
  • JVM ガベージコレクションの時間
  • JVM ガベージコレクションの数
  • サーバーがクライアントリクエストに応答するまでの時間 (最大、最小、および平均)
AMQ Streams Kafka Connect

以下のメトリクスを表示します。

  • 受信バイトレートの合計
  • 送信バイトレートの合計
  • ディスク使用量
  • 使用されている JVM メモリー
  • JVM ガベージコレクションの時間
AMQ Streams Kafka MirrorMaker 2

以下のメトリクスを表示します。

  • コネクターの数
  • タスクの数
  • 受信バイトレートの合計
  • 送信バイトレートの合計
  • ディスク使用量
  • 使用されている JVM メモリー
  • JVM ガベージコレクションの時間
AMQ Streams の Operator

以下のメトリクスを表示します。

  • カスタムリソース
  • 1 時間あたりの成功したカスタムリソース調整の数
  • 1 時間あたりの失敗したカスタムリソース調整の数
  • 1 時間あたりのロックなしの調整の数
  • 1 時間あたりの開始された調整の数
  • 1 時間あたりの定期的な調整の数
  • 最大の調整時間
  • 平均の調整時間
  • 使用されている JVM メモリー
  • JVM ガベージコレクションの時間
  • JVM ガベージコレクションの数

ダッシュボードは、AMQ Streams の Kafka Bridge および Cruise Control コンポーネントにも提供されます。

すべてのダッシュボードは、JVM メトリクスの他に、各コンポーネントに固有のメトリクスを提供します。たとえば、Operator ダッシュボードは、処理中の調整またはカスタムリソースの数に関する情報を提供します。

7.1.2. Prometheus メトリクス設定の例

AMQ Streams は、Prometheus JMX Exporter を使用して、Prometheus によってスクレープされる HTTP エンドポイントを使用して JMX メトリクスを公開します。

Grafana ダッシュボードが依存する Prometheus JMX Exporter の再ラベル付けルールは、カスタムリソース設定として AMQ Streams コンポーネントに対して定義されます。

ラベルは名前と値のペアです。再ラベル付けは、ラベルを動的に書き込むプロセスです。たとえば、ラベルの値は Kafka サーバーおよびクライアント ID の名前から派生されることがあります。

AMQ Streams では、再ラベル付けルールがすでに定義されたカスタムリソース設定 YAML ファイルのサンプルが提供されます。Prometheus メトリクス設定をデプロイする場合、カスタムリソースのサンプルをデプロイすることや、メトリクス設定を独自のカスタムリソース定義にコピーすることができます。

表7.1 メトリクス設定を含むカスタムリソースの例

コンポーネントカスタムリソースサンプル YAML ファイル

Kafka および ZooKeeper

Kafka

kafka-metrics.yaml

Kafka Connect

KafkaConnect および KafkaConnectS2I

kafka-connect-metrics.yaml

Kafka MirrorMaker 2.0

KafkaMirrorMaker2

kafka-mirror-maker-2-metrics.yaml

Kafka Bridge

KafkaBridge

kafka-bridge-metrics.yaml

Cruise Control

Kafka

kafka-cruise-control-metrics.yaml

関連情報