第7章 モニタリング
モニタリングデータでは、AMQ Streams のパフォーマンスおよびヘルスを監視できます。分析および通知のメトリクスデータを取得するようにデプロイメントを設定できます。
メトリクスデータは、接続性およびデータ配信の問題を調査するときに役立ちます。たとえば、メトリクスデータを使用すると、更新されていないパーティションや、メッセージの消費速度を特定できます。アラートルールでは、指定した通信チャネルを使用して、このようなメトリクスに関するタイムクリティカルな通知を送信できます。モニタリングの視覚化では、デプロイメントの設定更新のタイミングと方法を判別できるように、リアルタイムのメトリクスデータを表示します。メトリクス設定ファイルのサンプルは AMQ Streams に同梱されています。
分散トレースは、AMQ Streams でメッセージのエンドツーエンドのトレース機能を提供することで、メトリクスデータの収集を補完します。
Cruise Control は、ワークロードのデータを基づく Kafka クラスターのリバランスをサポートします。
メトリクスおよびモニタリングツール
AMQ Streams では、メトリクスおよびモニタリングに以下のツールを使用できます。
- Prometheus は、Kafka、ZooKeeper、および Kafka Connect クラスターからメトリクスをプルします。Prometheus の Alertmanager プラグインはアラートを処理して、そのアラートを通知サービスにルーティングします。
- Kafka Exporter は、さらに Prometheus メトリクスを追加します。
- Grafana は、ダッシュボードで Prometheus メトリクスを視覚化できます。
- Jaeger は、分散トレースをサポートし、アプリケーション間のトランザクションをトレースします。
- Cruise Control は、Kafka クラスター全体に渡るデータを分散します。
7.1. Prometheus
Prometheus は、Kafka コンポーネントおよび AMQ Streams Operator からメトリクスデータを抽出できます。
Prometheus を使用してメトリクスデータを取得し、アラートを発行するには、Prometheus および Prometheus Alertmanager プラグインをデプロイする必要があります。メトリクスデータを公開するには、Kafka リソースもメトリクス設定でデプロイまたは再デプロイする必要があります。
Prometheus は、公開されたメトリクスデータをモニタリング用に収集します。Alertmanager は、事前に定義されたアラートルールをもとに、条件が問題発生の可能性を示した場合に、アラートを発行します。
メトリクスおよびアラートルール設定ファイルのサンプルは AMQ Streams に同梱されています。AMQ Streams に含まれるアラートメカニズムのサンプルは、通知を Slack チャネルに送信するように設定されています。
7.2. Grafana
Grafana は Prometheus によって公開されるメトリクスデータを使用して、モニタリングできるように、ダッシュボードを視覚化して表示します。
データソースとして Prometheus を追加している場合には、Grafana のデプロイメントが必要です。ダッシュボードの例 (AMQ Streams JSON ファイルとして提供) は、モニタリングデータを表示するために、Grafana インターフェースを使用してインポートされます。
7.3. Kafka Exporter
Kafka Exporter は、Apache Kafka ブローカーおよびクライアントのモニタリングを強化するオープンソースプロジェクトです。Kafka Exporter は、Kafka クラスターとともにデプロイされ、オフセット、コンシューマーグループ、コンシューマーラグ、およびトピックに関連する Kafka ブローカーからの Prometheus メトリクスデータを追加で抽出します。提供される Grafana ダッシュボードを使用して、Prometheus が Kafka Exporter から収集したデータを可視化することができます。
サンプル設定ファイル、アラートルール、および Kafka Exporter の Grafana ダッシュボードは AMQ Streams で提供されます。
7.4. 分散トレース
Kafka デプロイメントでは、以下に対して、Jaeger を使用した分散トレースがサポートされます。
- ソースクラスターからターゲットクラスターへのメッセージをトレースする MirrorMaker
- Kafka Connect が使用して生成したメッセージをトレースする Kafka Connect
- Kafka Bridge が使用して生成したメッセージと、クライアントアプリケーションからの HTTP 要求をトレースする Kafka Bridge
テンプレート設定プロパティーは、Kafka リソース用に設定され、環境変数のトレースを記述します。
Kafka クライアントのトレース
Kafka プロデューサーやコンシューマーなどのクライアントアプリケーションも、トランザクションをモニタリングするように設定できます。クライアントはトレースプロファイルで設定され、トレーサーはクライアントアプリケーションが使用するように初期化されます。
7.5. Cruise Control
Cruise Control は、Kafka クラスター全体に渡るデータの監視および分散を単純化するオープンソースプロジェクトです。Cruise Control は Kafka クラスターと共にデプロイされ、そのトラフィックを監視し、よりバランスの取れたパーティション割り当てを提案し、その提案をもとにしたパーティション再割り当てのトリガーになります。
Control はリソースの使用状況に関する情報を収集し、Kafka クラスターのワークロードをモデル化および分析します。定義済みの 最適化ゴール を基にして、Cruise Control はクラスターを効果的にリバランスする方法に関する 最適化プロポーザル を生成します。最適化プロポーザル が承認されると、Cruise Control はプロポーザルに示されるリバランスを適用します。
Prometheus は、Cruise Control のメトリクスデータを抽出できます。これには、最適化プロポーザルおよびリバランス操作に関連するデータが含まれます。サンプル設定ファイルおよび Cruise Control の Grafana ダッシュボードは、AMQ Streams で提供されます。