🐱 うさねこ教室 Python と可観測性の教室

ダッシュボード設計

🐱 この章の目次

ダッシュボードの目的

ダッシュボード(Dashboard) は、システムの健全性を一目で把握するための可視化画面です。 優れたダッシュボードは「何かがおかしい」を瞬時に伝え、次に見るべき場所へ誘導します。 目的なくグラフを並べる「壁一面のグラフ(Wall of Graphs)」はアンチパターンであり、誰も見ない装飾になりがちです。

USE メソッド(リソース視点)

USE メソッド は、インフラリソースごとに Utilization(使用率)、Saturation(飽和度)、Errors(エラー数)を表示する手法です。 CPU・メモリ・ディスク・ネットワークのそれぞれに対して 3 指標を並べることで、ボトルネックを体系的に特定できます。

リソースUtilizationSaturationErrors
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(サービス)を組み合わせ、概要から詳細へのドリルダウン構造を設計しましょう。