【メトリクスカーディナリティ】
メトリクスカーディナリティ とは?
最終更新:
💡 ラベルの組み合わせが、監視する時系列の数を決める
メトリクス監視で扱う、異なる時系列の数。Prometheusではメトリクス名とラベルの値の組み合わせで時系列を区別し、組み合わせが増えるほど保存や処理の負担が増える。
📌 このページのポイント
- Prometheusの時系列はメトリクス名とラベルの組み合わせで区別される
- 一つのラベルの値の種類数と、全時系列の数は分けて考える
- ユーザーIDやリクエストIDは、時系列数を増やしやすい
- 必要な切り口を選び、ラベル値の種類数と組み合わせ数を抑える
メトリクスカーディナリティって何なの?
異なる時系列が何本あるかを表すよ。Prometheusでは名前とラベルの組で区別する。一つのメトリクスで、ほかのラベルが同じなら、statusの200・404・500という3種類を観測すると3本になるんだ
ラベルが二つあると?
例えばstatusが3種類、methodがGETとPOSTの2種類なら、全組み合わせを観測すると3×2で6本だよ。実際に出てきた組だけを数えるので、まだ観測していない組まで必ず作られるわけではないんだ
組み合わせが増えると何が困るの?
増えやすいラベルってある?
ユーザーIDやリクエストIDのように、多くの値が次々に現れるものだね。数学的に無限でなくても、監視で扱うには多すぎることがある。利用者が10万人いるだけで10万本になるのではなく、実際に記録するラベルの組で決まるんだ
どうすれば抑えられるの?
目的に必要なラベルを選び、値の種類数も見積もるよ。例えば個別IDを付けず、ステータスを2xx・4xx・5xxなどにまとめる。ただし詳細が失われるので、何を調べたいかに合わせるんだ。料金の計算方法も監視サービスや契約ごとに確認する必要があるね
まとめ:ざっくりこれだけ覚えればOK!
「メトリクスカーディナリティ」って出てきたら「メトリクスの異なる時系列が何本あるか」と思えばだいたいOK!
📖 おまけ:英語の意味
「Metrics Cardinality」 = メトリクスの基数
💬 Cardinalityは要素の数を表す言葉だよ。メトリクス名やラベルによって区別される時系列が、何種類あるかを考えるんだ