一貫性のある命名スキームをレコーディングルールに適用することで、ルールの意味を簡単に理解できます。また、誤った計算や意味のない計算が目立つようになるため、ミスを防ぐことができます。
このページでは、レコーディングルールの適切な命名規則と集計について説明します。
level:metric:operations
の形式にする必要があります。level
は、ルールの出力の集計レベルとラベルを表します。metric
はメトリック名であり、rate()
またはirate()
を使用する場合に_total
を取り除く以外は変更しないでください。operations
は、メトリックに適用された操作のリストです(最新の操作が最初に来ます)。メトリック名を変更せずに保持することで、メトリックが何かを簡単に知ることができ、コードベース内で簡単に検索できます。
操作を簡潔に保つために、sum()
などの他の操作がある場合は_sum
は省略します。結合的な操作はマージできます(たとえば、min_min
はmin
と同じです)。
使用する明らかな操作がない場合は、sum
を使用します。除算によって比率を取る場合は、_per_
を使用してメトリックを区切り、操作をratio
と呼びます。
比率の平均または平均の平均を取らないでください。統計的に有効ではありません。
サマリーの_count
と_sum
を集計して平均観測サイズを計算する場合、比率として扱うと扱いにくくなります。代わりに、_count
または_sum
サフィックスのないメトリック名を保持し、操作内のrate
をmean
に置き換えます。これは、その期間の平均観測サイズを表します。
常に、集計するラベルを指定したwithout
句を指定します。これにより、job
などの他のすべてのラベルが保持され、競合が回避され、より役立つメトリックとアラートが得られます。
演算子を独自の行でインデントを外したスタイルに注目してください。YAMLでこのスタイルを可能にするために、インデントインジケーター(例:|2
)を使用したブロック引用符を使用します。
path
ラベルを持つ1秒あたりのリクエストを集計する
- record: instance_path:requests:rate5m
expr: rate(requests_total{job="myjob"}[5m])
- record: path:requests:rate5m
expr: sum without (instance)(instance_path:requests:rate5m{job="myjob"})
リクエスト失敗率を計算し、ジョブレベルの失敗率に集計する
- record: instance_path:request_failures:rate5m
expr: rate(request_failures_total{job="myjob"}[5m])
- record: instance_path:request_failures_per_requests:ratio_rate5m
expr: |2
instance_path:request_failures:rate5m{job="myjob"}
/
instance_path:requests:rate5m{job="myjob"}
# Aggregate up numerator and denominator, then divide to get path-level ratio.
- record: path:request_failures_per_requests:ratio_rate5m
expr: |2
sum without (instance)(instance_path:request_failures:rate5m{job="myjob"})
/
sum without (instance)(instance_path:requests:rate5m{job="myjob"})
# No labels left from instrumentation or distinguishing instances,
# so we use 'job' as the level.
- record: job:request_failures_per_requests:ratio_rate5m
expr: |2
sum without (instance, path)(instance_path:request_failures:rate5m{job="myjob"})
/
sum without (instance, path)(instance_path:requests:rate5m{job="myjob"})
サマリーから期間全体の平均遅延を計算する
- record: instance_path:request_latency_seconds_count:rate5m
expr: rate(request_latency_seconds_count{job="myjob"}[5m])
- record: instance_path:request_latency_seconds_sum:rate5m
expr: rate(request_latency_seconds_sum{job="myjob"}[5m])
- record: instance_path:request_latency_seconds:mean5m
expr: |2
instance_path:request_latency_seconds_sum:rate5m{job="myjob"}
/
instance_path:request_latency_seconds_count:rate5m{job="myjob"}
# Aggregate up numerator and denominator, then divide.
- record: path:request_latency_seconds:mean5m
expr: |2
sum without (instance)(instance_path:request_latency_seconds_sum:rate5m{job="myjob"})
/
sum without (instance)(instance_path:request_latency_seconds_count:rate5m{job="myjob"})
avg()
関数を使用して、インスタンスとパスの平均クエリレートを計算します
- record: job:request_latency_seconds_count:avg_rate5m
expr: avg without (instance, path)(instance:request_latency_seconds_count:rate5m{job="myjob"})
集計時に、without
句のラベルは、入力メトリック名と比較して出力メトリック名のレベルから削除されることに注意してください。集計がない場合、レベルは常に一致します。そうでない場合は、ルールに間違いがある可能性があります。
このドキュメントはオープンソースです。問題を報告するかプルリクエストを送信して、改善にご協力ください。