こんにちは!今日は、システムの状況を観察し、問題を解決するために不可欠なOpenTelemetryの核心、つまりメトリクスについて見ていきたいと思います。🔍
システムの健全性を数値で明確に表現してくれるメトリクス!しかし、いざ使おうとすると、どの種類を選べばいいか迷うことがありますよね。今日のこの記事を通して、OpenTelemetryの標準メトリクスタイプを確実にマスターしましょう!

1. カウンター (Counter) 📈
カウンターは、その名の通り継続的に増加する単調な値を測定するメトリクスです。まるで車の総走行距離計のように、値はひたすら増えるだけで決して減ることはありません。システムが再起動されたときにのみ0に初期化されます。
このような特性から、「累積」される値を記録するのに非常に役立ちます。
✅ こんな場合に利用します!
- ウェブサイトの総ページビュー数 📄
- APIサーバーが処理した総リクエスト数 🚀
- これまでに発生したエラーの総回数 ❌
- 作業キューに追加された総作業数 📥
2. ゲージ (Gauge) 🌡️
ゲージは、特定の時点の値をスナップショットのように測定するメトリクスです。まるで温度計や車の速度計のように、値は自由に上下に変動します。
「現在」のシステムの状況を把握するのに最も適したメトリクスと言えます。
✅ こんな場合に利用します!
- 現在のCPU使用率 💻
- 現在のメモリ使用量 🧠
- 現在のアクティブユーザー数 👥
- キューで待機中の作業の数 ⏳
3. ヒストグラム (Histogram) 📊
ヒストグラムは、特定の期間中に収集された値の統計的な分布を示すメトリクスです。単に一つの値ではなく、観測された値がどの範囲(バケット、bucket)にどれだけ分布しているかを示します。
これにより、平均値だけでなく、中央値、パーセンタイル(例:95%、99%)のような、はるかに深く意味のあるデータを取得できます。「ほとんどのリクエストは速かったが、一部のリクエストは非常に遅かった」といった状況を正確に捉えることができます。
✅ こんな場合に利用します!
- HTTPリクエストの応答時間分布 ⏱️
- データベースクエリ実行時間 💾
- ファイルアップロードサイズ分布 📁
- メッセージキューのメッセージ処理遅延時間 🕰️
💡 ちょっと待って!「時間」はどうやって測定するの?
「では、API応答時間のように『時間(Time)』や『期間(Duration)』を測定するには、どのメトリクスを使えばいいのでしょうか?『Timer』というタイプが別にあるのではないでしょうか?」🤔
非常に良い質問であり、多くの方が混乱する点です!
結論から言うと、OpenTelemetryの公式標準メトリクスタイプには「Timer」は含まれていません。
では、時間関連のデータはどうやって測定するのでしょうか?答えは、上で説明したヒストグラム(Histogram)を使用することです!
ヒストグラムは、特定の作業にかかった時間(duration)を測定し、その値の分布を分析するのに最も理想的なツールです。ヒストグラムを使用すると、「平均応答時間は50msだが、上位1%のリクエストは1000ms以上かかる」といったサービスレベル目標(SLO)を設定し、管理するために不可欠なインサイトを得ることができます。
まとめ ✨
さて、今日はOpenTelemetryの主要メトリクス3種類について詳しく見てきました。
- 🔢 Counter: 継続的に加算される累積値!
- 🌡️ Gauge: 上下する現在のスナップショット値!
- 📊 Histogram: 値の分布を通じて深い分析! (時間測定にも使用!)
これで、皆さんのシステムを監視する際に、測定したいデータの性質に合った正しいメトリクスタイプを自信を持って選択できるようになりますよね? 😉
コメントを残す