Share via


Azure Monitor で大規模に Prometheus メトリックをスクレイピングする

この記事では、Prometheus 用の Azure Monitor 管理サービスに関するメトリックを大規模に収集するときに予想されるパフォーマンスに関するガイダンスを提供します。

CPU とメモリ

CPU とメモリの使用量は、各サンプルのバイト数およびスクレイピングされたサンプル数と関連付けられます。 これらのベンチマークは、スクレイピングされた既定のターゲット、スクレイピングされたカスタム メトリックのボリューム、ノードの数、ポッドの数、コンテナーの数に基づいています。 使用量はメトリックあたりの時系列の数とバイト数に応じて大きく異なる可能性があるので、これらの数値は参照用です。

現在、ポッドあたりのボリュームの上限は、サンプルあたりのバイト数に応じて、1 分あたり約 300 万から 350 万までの数のサンプルです。 この制限は、シャーディングが今後追加されるときに対応されます。

エージェントは、メトリックをスクレイピングするための 1 つのレプリカとデーモンセットがある 1 つのデプロイで構成されます。 デーモンセットは、cAdvisor、kubelet、ノード エクスポーターなどのノード レベルのターゲットをスクレイピングします。 静的構成を使用して、カスタム ターゲットをノード レベルでスクレイピングするように構成することもできます。 レプリカセットは、kube-state-metrics や、サービス検出を利用するカスタム スクレーピング ジョブなど、他のすべてをスクレイピングします。

レプリカの場合の小規模クラスターと大規模クラスターの比較

スクレーピングのターゲット 送信されるサンプル数/分 ノード数 ポッド数 Prometheus-Collector の CPU 使用量 (コア数) Prometheus-Collector のメモリ使用量 (バイト数)
既定のターゲット 11,344 3 40 12.9 mc 148 Mi
既定のターゲット 260,000 340 13000 1.10 c 1.70 GB
既定のターゲット
+ カスタム ターゲット
356 万 340 13000 5.13 c 9.52 GB

デーモンセットの場合の小規模クラスターと大規模クラスターの比較

スクレーピングのターゲット 送信されるサンプル数/分の合計 送信されるサンプル数/分/ポッド ノード数 ポッド数 Prometheus-Collector の CPU 使用量の合計 (コア数) Prometheus-Collector のメモリ使用量の合計 (バイト数) Prometheus-Collector の CPU 使用量/ポッド (コア数) Prometheus-Collector のメモリ使用量/ポッド (バイト数)
既定のターゲット 9,858 3,327 3 40 41.9 mc 581 Mi 14.7 mc 189 Mi
既定のターゲット 230 万 14,400 340 13000 805 mc 305.34 GB 2.36 mc 898 Mi

カスタム メトリックがさらに多い場合、カスタム メトリックのボリュームによっては単一ポッドはレプリカ ポッドと同じように動作します。

リソースが多いノードプール上で ama-metrics レプリカ ポッドをスケジュールする

ポッドあたりのメトリックのボリュームが大きい場合は、必要な CPU とメモリの使用量を処理できるだけの大きさのノードが必要です。 十分なリソースがあるノードまたはノードプール上で ama-metrics レプリカ ポッドがスケジュール設定されていない場合は、OOMKilled を取得し続けて CrashLoopBackoff に移行する可能性があります。 この問題を解決するために、(システム ノードプール内に) リソースがより多いクラスター上にノードまたはノードプールがあり、そのノードでレプリカをスケジュール設定する場合は、ノードにラベル azuremonitor/metrics.replica.preferred=true を追加すると、このノードでレプリカ ポッドがスケジュール設定されます。 また、必要に応じて、より大きなノードを使用して追加のシステム プールを作成し、それらのノードまたはノードプールに同じラベルを追加することもできます。 また、ノードではなく、ノードプールにラベルを追加することをお勧めします。これにより、同じプール内の新しいノードも、このラベルがプール内のすべてのノードに適用可能な場合にスケジュール設定に使用できます。

kubectl label nodes <node-name> azuremonitor/metrics.replica.preferred="true"

次の手順