metricとは何か? 時系列測定の解説
metricは、システムの何らかの性質の数値測定で、時系列で繰り返し捕捉され、それがどう推移し、急増し、劣化するかを見られるようにします。
metricは、オブザーバビリティのシグナルの中で最も安価で最もスケーラブルです。metricは、イベントのストリームを、密に保存でき高速にクエリできる数値へと縮約します。これはdashboardやアラートが必要とするまさにそのものです。トレードオフは、metricが個々のイベントの詳細を失うことです。
metricとは何か
metricは、名前、値、timestamp、そして通常はそれに次元を与えるラベルのセットです。時系列として保存され、生のイベントを走査することなく「リクエストのレイテンシは過去1時間でどう動いたか」といった問いに答えます。metricは事前に集約されているため、大量であっても保持が安価なままです。
一般的なmetricの型
- counter: 処理したリクエストの総数のように、増加するだけの値。
- gauge: 現在のメモリ使用量のように、増減する値。
- histogram: リクエストの所要時間のように、範囲にバケット化された値の分布。
metricとlogs
metricはレイテンシが上がったことを教え、logは特定の遅いリクエストについて教えます。metricは個々のイベントについては集約的で次元を持たないため、傾向やアラートには理想的ですが、一つの異常なトランザクションを説明するには役立ちません。2つのシグナルは異なる問いに答え、一緒だと最も強力です。
cardinality
metric名とラベル値の一意な組み合わせごとに、別々の時系列になります。user IDのような多様性の高いラベルを追加すると、系列数が倍増し、metricシステムを圧倒しかねません。ラベルを低cardinalityに保つことが、metric設計で最も重要な規律です。
CI/CDにおけるmetric
有用なpipelineのmetricには、buildの所要時間、成功率、キュー時間、テスト数が含まれます。時間経過に沿ったgaugeやcounterとして、それらはpipelineがreleaseごとに遅くなっているかflakyになっているかを明らかにし、変更の前後でアプリケーションのmetricを比較するdeploy後のcheckを支えます。
重要なポイント
- metricは、時系列で追跡される数値測定で、しばしばラベルを伴います。
- 中心的な型はcounter、gauge、histogramです。
- metricは傾向を示し、logsは個々のイベントを説明します。
- 所要時間や成功率といったpipelineのmetricは、時間経過とともにCIの健全性を明らかにします。