TL;DR
実行時に取得したサービスの測定値。システムの状態やリソースの利用状況を統計的に表す。OpenTelemetry では、トレース、ログと並ぶ主要なシグナルの 1 つである。
なぜ必要か
OpenTelemetry のドキュメントによると、メトリクスはアプリケーションの可用性と性能を示す指標になる。カスタムのメトリクスを使えば、それらがユーザやビジネスにどう影響するかも分かる。集めたデータを使って、障害時にアラートを出したり、需要が高いときに自動でスケールしたりできる。
入門 OpenTelemetry によると、メトリクスの登場によって、エラーや例外だけでなく、データそのものに対してアラートを作れるようになった。
仕組み
OpenTelemetry では、計測に使う道具(instrument)を次のように分けている。
- Counter: 増えるだけの値を積み上げる(車の走行距離計のようなもの)
- UpDownCounter: 増減する値を積み上げる(キューの長さなど)
- Gauge: 読み取った時点の値を報告する(燃料計のようなもの)
- Histogram: リクエストのレイテンシなど、値の分布を集計する
それぞれに、エクスポートのたびに 1 回だけ値を集める非同期版もある。大量の測定値は、一定の時間枠ごとに集計(aggregation)されて送られる。