ダッシュボード設計
🐱 この章の目次
ダッシュボードの目的
ダッシュボード(Dashboard) は、システムの健全性を一目で把握するための可視化画面です。 優れたダッシュボードは「何かがおかしい」を瞬時に伝え、次に見るべき場所へ誘導します。 目的なくグラフを並べる「壁一面のグラフ(Wall of Graphs)」はアンチパターンであり、誰も見ない装飾になりがちです。
USE メソッド(リソース視点)
USE メソッド は、インフラリソースごとに Utilization(使用率)、Saturation(飽和度)、Errors(エラー数)を表示する手法です。 CPU・メモリ・ディスク・ネットワークのそれぞれに対して 3 指標を並べることで、ボトルネックを体系的に特定できます。
| リソース | Utilization | Saturation | Errors |
|---|---|---|---|
| CPU | 使用率 % | ロードアベレージ / コア数 | マシンチェック例外 |
| メモリ | 使用率 % | スワップイン/アウト | OOM Kill 回数 |
| ディスク | IOPS 使用率 | I/O キュー長 | デバイスエラー |
| ネットワーク | 帯域使用率 | ドロップパケット | CRC エラー |
RED メソッド(サービス視点)
RED メソッド は、サービスごとに Rate(リクエスト率)、Errors(エラー率)、Duration(レイテンシ)を表示する手法です。 USE がインフラ観点であるのに対し、RED はユーザー体験に直結する指標を選びます。 マイクロサービスごとに RED ダッシュボードを用意すると、影響範囲の特定が素早く行えます。
# Grafana ダッシュボード JSON モデル(RED パネル抜粋)
panels:
- title: "Request Rate"
type: graph
targets:
- expr: "sum(rate(http_requests_total[5m])) by (service)"
- title: "Error Rate"
type: graph
targets:
- expr: "sum(rate(http_requests_total{status=~\"5..\"}[5m])) / sum(rate(http_requests_total[5m]))"
- title: "Latency p99"
type: graph
targets:
- expr: "histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))"
Four Golden Signals
Google SRE が提唱する Four Golden Signals は、Latency・Traffic・Errors・Saturation の 4 つです。 RED メソッドと重なる部分が多いですが、Saturation(余力)を含む点が異なります。 サービスのキャパシティプランニングに使う場合は Golden Signals の方が適しています。
Grafana でのベストプラクティス
ダッシュボードはレイヤーごとに分離し、概要→詳細へドリルダウンできる構造にします。 変数(Variables)を活用して、環境・サービス・インスタンスをフィルタリング可能にします。 アノテーション(デプロイ時刻、インシデント開始)を重ねることで、変更との相関を一目で確認できます。
アンチパターンを避ける
| アンチパターン | 問題 | 改善策 |
|---|---|---|
| Wall of Graphs | 情報過多で誰も見ない | 目的別に分割、3〜5 パネルに絞る |
| 平均値だけ表示 | 外れ値が見えない | p50, p95, p99 を並べる |
| 閾値線なし | 正常/異常の判断ができない | SLO ライン、バジェット残量を表示 |
| 色の濫用 | 視認性が下がる | 赤=異常、緑=正常 に限定 |
まとめ
ダッシュボードは「答え」を出す道具ではなく、「次に何を調べるか」を示す道具です。 USE(リソース)と RED(サービス)を組み合わせ、概要から詳細へのドリルダウン構造を設計しましょう。