この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

高メモリ使用量のデバッグ

Prometheusの各時系列は、その メトリック名と、オプションのキー-バリューのペアである ラベルによって一意に識別されます。

ラベルは時系列データをフィルタリングおよび集約する能力を提供しますが、Prometheusが収集するデータの量も増加させます。

各時系列には定義されたラベルのセットがあり、Prometheusはすべてのユニークなラベルの組み合わせに対して新しい時系列を生成します。メトリックに2つのラベルが付いている場合、そのメトリックに対して2つの時系列が生成されます。ラベルの値を変更すること、ラベルを追加または削除することを含めて、新しい時系列が作成されます。

Prometheusは、シリーズに基づいてインデックス化されたデータを保存するように最適化されています。比較的一定の数の時系列と、時間の経過とともにエクスポーターから収集する必要がある比較的大きな数のサンプルのために設計されています。

逆に、Prometheusは急速に変化する時系列の数に対応するようには最適化されていません。そのため、多くのリソースが作成されては破棄されるクラスターに監視がインストールされると、大きなメモリ使用量のバーストが発生する可能性があります。特にマルチテナントクラスターでは。

メモリバーストの削減

メモリ消費を削減するために、Prometheusは、より少ないメトリックをスクレイピングするか、時系列に付けるラベルを減らすことによって、より少ない時系列を保存するように構成できます。どの時系列が最もメモリを使用しているかを確認するには、Prometheus UIのTSDB(時系列データベース)ステータスページをチェックできます。

分散型のPrometheusソリューション、たとえば ThanosCortexでは、複数の小規模なPrometheusインスタンスがデプロイされる代替アーキテクチャを使用します。Thanosの場合、各Prometheusからのメトリックは共通のThanosデプロイメントに集約され、その後、これらのメトリックはS3などの永続ストアにエクスポートされます。このより堅牢なアーキテクチャは、単一のPrometheusインスタンスに過剰な時系列の負荷がかかるのを防ぐと同時に、グローバルレベルでメトリックを照会する機能を維持します。