私はPrometheusにいくつかのメトリクスをエクスポートすることを検討しています。私は何をしようとしているのか心配しています。プロメテウスのハイカーディナリティラベルはどのように危険ですか?
私のシステムはワークフローエンジンで構成されており、ワークフローの各ステップのメトリックをいくつか追跡したいと思います。これは、wfengine_step_duration_seconds
と呼ばれるゲージメトリックによって、妥当と思われます。私の問題は、私のワークフロー全体で何千ものステップがあることです。
ドキュメントhereによれば、私はプログラムで名前の一部を生成するはずがありません。つまり、wfengine_step1_duration_seconds
とwfengine_step2_duration_seconds
のような名前の使用は除外されます。これは、ステップ名がプログラム的である(時々刻々と変化する)ためです。
解決策は、ステップ名のラベルです。ただし、ドキュメントhereとhereは、カーディナリティの高いラベルを使用することを強く警告しているため、これにも問題があります。具体的には、「メトリクスの基数を10以下に」、100以上の基数には「次元数を減らす、または分析を監視から外す」などの代替ソリューションを検討することをお勧めします。
私は、数千(1,000〜10,000)のラベル値を探しています。そうでなければ、メトリックの数が極端に多くなることはないので、これはPrometheusを適切に使用するか、各ステップごとに個別の持続時間ではなく、集計された単一の持続時間など、より一般的なメトリクスに限定すべきですか?
ラベル付きのこれらのレプリカを区別しなかった場合、レプリカの数はどのように多くなりますか? – Mark
私はそれについてもっと考えると、その限界は意味をなさない(または私は何かを誤解している)。たとえば、仮説的なCPU使用率メトリックでは、ホスト名をメトリック名に(プログラムで)入れ、ラベルを使用して(したがって10または100台のサーバーに制限する)、サーバーごとのメトリックをすべて破棄しないでください壊れたサーバーを修正する能力を失う)? – Mark
カーディナリティは、メトリクスまたはラベルのいずれであっても、カーディナリティです。 –