第16章:メトリクスの基本📊(カウント/ゲージ/ヒストグラム)✨
この章のゴール🎯
- 「ログとメトリクス、どっちで何を見る?」をサクッと仕分けできる🧠✨
- カウント / ゲージ / ヒストグラムの違いを、例でパッと説明できる📌
- 「アラート向き」な理由(=集計の強さ)を体感レベルで理解する🚨💡
1) メトリクスって、結局なに?👀
メトリクスは、ざっくり言うと「時間と一緒に記録される数値」だよ📈⏱️ たとえば Web API なら「1秒あたりのリクエスト数」「処理にかかったms」「エラー数」みたいなやつ! これって“健康診断の数値”みたいに、増えた/減った/いつからおかしいがすぐ分かるのが強み💪✨ (メトリクスはアプリの健康監視やアラートでよく使われる、という位置づけが公式にも書かれてるよ) (Microsoft Learn)
2) ログと役割分担しよう🪵📊(ここ超大事!)
- ログ🪵:何が起きたかを詳しく読む(文章・文脈・例外・詳細)
- メトリクス📊:どれくらい起きてるかを俯瞰する(数値・割合・傾向・異常検知)
- トレース🧵:どこで遅い/詰まってるかを辿る(旅の地図)
メトリクスは「細かいストーリー」じゃなくて「全体の異常を最速で見つける」担当だよ🚀✨
3) 3種類を一気に覚えるコツ🧠✨

覚え方はこれでOK👇
- カウント(Counter):どんどん増える“累計”📈(基本戻らない)
- ゲージ(Gauge):いまの値“現在地”🎛️(増えたり減ったり)
- ヒストグラム(Histogram):ばらつき“分布”🎒(遅延の偏りとかを見る)
Prometheusの説明も分かりやすくて、
- Counter は 増えるだけ(リセットは再起動など)
- Gauge は 増減する ってハッキリ書いてあるよ📝 (Prometheus)
4) カウント(Counter)📈✨ 〜「累計の回数」〜
何に向いてる?🙆♀️
- リクエスト総数(累計)🌐
- エラー総数(累計)💥
- ジョブ完了数(累計)✅ こういう「何回起きた?」に超強い!
大事ルール⚠️
Counterは「減るかも?」なものに使っちゃダメ🙅♀️ 例:現在動いてるプロセス数、同時接続数…これは増えたり減ったりするから Gauge! (これもPrometheusが注意書きしてるよ) (Prometheus)
「1秒あたり」を出したいとき⏱️
カウントは累計だから、そのまま見ても「増えてる」しか分からないことが多いのね🙂
なので監視側で「増え方(レート)」を見るのが定番!
Prometheusだと rate() が Counter に使えるよ、って説明があるよ📌 (Prometheus)
5) ゲージ(Gauge)🎛️✨ 〜「いまの値」〜
何に向いてる?🙆♀️
- 同時リクエスト数(現在の混み具合)🚦
- キューの長さ(今どれだけ溜まってる?)📬
- メモリ使用量(いま何MB?)🧠
- CPU使用率(いま何%?)🔥
イメージ🎮
「いまのHP」みたいなもの!増減するのが前提だよ🧡
6) ヒストグラム(Histogram)🎒✨ 〜「分布を見る」〜
何に向いてる?🙆♀️
- レスポンスタイム(ms)のばらつき⏱️
- DBクエリ時間のばらつき🗄️
- ペイロードサイズ(bytes)のばらつき📦
平均だけだと事故ることが多いの…😱 例:平均200msでも、たまに5秒が混ざってるとユーザーはキレる🔥 そこでヒストグラムで「遅いのがどれくらい混ざってる?」を掴む!
OpenTelemetryでも、メトリクスは時系列データとして扱いつつ、ヒストグラム等のモデルで集計して運ぶ設計になってるよ📦 (OpenTelemetry) (.NET側でもヒストグラム用の作成APIが用意されてるよ) (Microsoft Learn)
7) 3種類を、題材アプリで当てはめてみよう🧩✨
「/work」みたいなエンドポイントがあるとして…こんな感じ!
| 見たいこと👀 | おすすめ型 | 例 |
|---|---|---|
| 今日の総リクエスト数は? | Counter📈 | requests_total |
| いま同時に何件処理中? | Gauge🎛️ | inflight_requests |
| どのくらい遅い?(偏り) | Histogram🎒 | request_duration_ms |
| いまキューに何件? | Gauge🎛️ | queue_length |
| 失敗がどれくらい増えてる? | Counter📈 | errors_total |
8) ミニ演習📝✨(仕分け練習)
次の「測りたいもの」を、Counter / Gauge / Histogramに分類してね🎯 (答えは下にあるよ👇)
- APIが受けたリクエストの累計数🌐
- 現在の同時接続数👥
- レスポンス時間のばらつき(95%が知りたい)⏱️
- 現在のメモリ使用量🧠
- 例外の発生回数(累計)💥
- 画像アップロードサイズの分布📦
✅答え合わせ
- Counter📈
- Gauge🎛️
- Histogram🎒
- Gauge🎛️
- Counter📈
- Histogram🎒
いいね!この仕分けができるだけで、設計が一気に事故りにくくなるよ🥳✨
9) “設計の超ミニ”コツ集🧠✨(次章以降がラクになる)
コツ①:単位をつける📏
ms / seconds / bytes / count みたいに、単位があるだけで誤解が減るよ👍 (.NETのメトリクスAPIでも unit を扱える前提で設計されてるよ) (Microsoft Learn)
コツ②:名前は「何の」「どの量」を明確に🏷️
例:
request_duration_ms(何の時間?どの単位?が分かる)errors_total(累計っぽい雰囲気が出る)
コツ③:まずは“少数精鋭”でいい🥲➡️😊
最初から100個作ると、見ない&壊れる&運用できないの三重苦😵💫 まずは「健康診断の最重要3つ」くらいからでOK🙆♀️
10) AI活用🤖✨(この章向けの使い方)
① 仕分け添削(Counter/Gauge/Histogram)
「この候補メトリクス、型の選び方合ってる?」ってAIにチェックさせるのが強い💪
例プロンプト👇
次のメトリクス候補を Counter / Gauge / Histogram に分類して、理由も一言で。
また「その型にすると事故るポイント」があれば警告して。
- リクエスト数
- 同時処理数
- レスポンス時間
- キュー長
② “平均だけでいい?”チェック
「平均だけでOKか、分布(ヒストグラム)が必要か」って判断もAIが得意だよ🧠✨
まとめ🏁✨
- Counter=累計📈(増えるだけ)
- Gauge=現在値🎛️(増減する)
- Histogram=分布🎒(ばらつき、遅延の尾っぽを見る)
- メトリクスは「異常を速攻で見つける係」🚨📊、ログは「深掘りする係」🕵️♀️🪵
次の第17章では、このメトリクスを「何を測れば健康が分かる?」に落とし込むよ🟥🟨🟩✨