8.2. Cruise Control 操作の監視
Cruise Control は、ブローカー、トピック、およびパーティションの使用状況を追跡するために Kafka ブローカーを監視します。Cruise Control は、独自のパフォーマンスを監視するためのメトリクスのセットも提供します。
Cruise Control メトリクスレポーターは、Kafka ブローカーから未加工のメトリクスデータを収集します。データは、Cruise Control によって自動的に作成されるトピックに生成されます。メトリクスは、Kafka クラスターの最適化提案の生成 に使用されます。
Cruise Control メトリクスは、Cruise Control 操作のリアルタイム監視で利用できます。たとえば、Cruise Control メトリクスを使用して、実行中のリバランス操作のステータスを監視したり、操作のパフォーマンスで検出された異常についてアラートを提供したりできます。
Cruise Control 設定で Prometheus JMX Exporter を有効にして Cruise Control メトリクスを公開します。
センサー として知られる利用可能な Cruise Control メトリクスの完全なリストは、Cruise Control のドキュメントを 参照してください。
8.2.1. Cruise Control メトリクスの公開 リンクのコピーリンクがクリップボードにコピーされました!
Cruise Control 操作でメトリクスを公開する場合は、Kafka リソースを設定して、Cruise Control をデプロイし、デプロイメントで Prometheus メトリクスを有効にします。独自の設定を使用するか、AMQ Streams によって提供される kafka-cruise-control-metrics.yaml ファイルのサンプルを使用できます。
設定を Kafka リソースの CruiseControl プロパティーの metricsConfig に追加します。この設定により、Prometheus JMX Exporter が有効化され、HTTP エンドポイント経由で Cruise Control メトリクスが公開されます。HTTP エンドポイントは Prometheus サーバーによってスクレープされます。
Cruise Control のメトリクス設定例
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
Spec:
# ...
cruiseControl:
# ...
metricsConfig:
type: jmxPrometheusExporter
valueFrom:
configMapKeyRef:
name: cruise-control-metrics
key: metrics-config.yml
---
kind: ConfigMap
apiVersion: v1
metadata:
name: cruise-control-metrics
labels:
app: strimzi
data:
metrics-config.yml: |
# metrics configuration...
8.2.2. Cruise Control メトリクスの表示 リンクのコピーリンクがクリップボードにコピーされました!
Cruise Control メトリクスを公開したら、Prometheus または別の適切なモニタリングシステムを使用して、メトリクスデータの情報を表示できます。Streams for Apache Kafka は、Cruise Control メトリクスの視覚化を表示する Grafana ダッシュボードのサンプル を提供します。ダッシュボードは strimzi-cruise-control.json という名前の JSON ファイルです。公開されるメトリクスは、Grafana ダッシュボードを有効にする 際に監視データを提供します。
8.2.2.1. 分散スコアの監視 リンクのコピーリンクがクリップボードにコピーされました!
Cruise Control メトリクスには、分散スコアが含まれます。分散度は、Kafka クラスター内でワークロードがどの程度均等に分散されているかを示す尺度です。
分散スコア (balancedness-score) の Cruise Control メトリクスは、KafkaRebalance リソースの分散スコアとは異なる可能性があります。Cruise Control は anomaly.detection.goals を使用して各スコアを計算します。これは、KafkaRebalance リソースで使用される default.goals と同じでない可能性があります。anomaly.detection.goals は、Kafka カスタムリソースの spec.cruiseControl.config に指定されます。
KafkaRebalance リソースを更新すると、最適化プロポーザルをフェッチします。以下の条件のいずれかが適用されると、キャッシュされた最新の最適化プロポーザルがフェッチされます。
-
KafkaRebalance
goalsは、Kafkaリソースのdefault.goalsセクションに設定されたゴールと一致する。 -
KafkaRebalance
goalsは指定されていない。
これ以外の場合は、Cruise Control は KafkaRebalance goals に基づいて、新しい最適化プロポーザルを生成します。更新ごとに新しいプロポーザルが生成されると、パフォーマンスの監視に影響を及ぼす可能性があります。
8.2.2.2. 異常検出へのアラート リンクのコピーリンクがクリップボードにコピーされました!
Cruise Control の 異常検出 は、ブローカーの障害などの最適化ゴールの生成をブロックする条件のメトリクスデータを提供します。可視性を高める場合は、異常検出器が提供するメトリックを使用して、アラートを設定し、通知を送信できます。Cruise Control の 異常通知機能 を設定して、指定された通知チャネルを介してこれらのメトリクスに基づいてアラートをルーティングできます。または、Prometheus を設定して、異常検出器によって提供されるメトリクスデータをスクレープし、アラートを生成することもできます。その後、Prometheus Alertmanager は Prometheus で生成されるアラートをルーティングできます。
Cruise Control ドキュメント には、AnomalyDetector メトリクスおよび異常通知機能に関する情報が記載されています。