【実務・中級編】Docker環境でGrafanaとPrometheusをサクッと構築する手順【初心者向けハンズオン】 – 運用監視・オブザーバビリティ活用バイブル

「とりあえず動いた」で満足するな。Grafana + Prometheusを最強の観測基盤に変えるための「実戦的」構築術

こんにちは。現場で泥臭いトラブルシューティングを繰り返してきたエンジニアの皆さんに、一つだけ問いたい。

「君たちの監視基盤は、障害発生時に『今、何が起きているか』を即座に語りかけてくれるか?」

「とりあえずメトリクスが見れればいい」という構築は、一秒を争う障害対応の現場では単なるノイズの山だ。今日は、Docker環境での構築手順をベースにしつつ、明日から君たちの開発スピードを劇的に変える「プロの作法」を伝授する。

—

1. 構築の前に:なぜ「コード」ですべてを管理するのか

監視基盤を構築する際、ブラウザのGUIでポチポチ設定するのは「死への入り口」だ。GUIの設定は再現性がなく、チーム内での共有もできない。

我々は「監視もインフラもすべてコード(IaC)で管理する」。これがオブザーバビリティの第一歩だ。

docker-compose.yml:実務で耐えうる「神」構成

初心者がやりがちな「とりあえずマウント」を排し、永続化と権限管理を意識した構成がこれだ。

version: ‘3.8’

volumes:
prometheus_data: {}
grafana_data: {}

services:
# Prometheus: 時系列データの心臓部
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:

  • ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
  • prometheus_data:/prometheus

command:

  • ‘–config.file=/etc/prometheus/prometheus.yml’
  • ‘–storage.tsdb.retention.time=15d’ # 運用負荷を考慮した15日保持

ports:

  • “9090:9090”

# Grafana: データの可視化と解析の要
grafana:
image: grafana/grafana:latest
container_name: grafana
environment:

  • GF_SECURITY_ADMIN_PASSWORD=admin # 本番では必ず環境変数等で隠蔽すること
  • GF_USERS_ALLOW_SIGN_UP=false # セキュリティの基本:登録は制限する

volumes:

  • grafana_data:/var/lib/grafana

ports:

  • “3000:3000”

depends_on:

  • prometheus

—

2. 起動と「プロの」初期設定

`docker-compose up -d` を叩けば、`localhost:3000` でログイン画面が現れる。

最初のデータソース追加の「罠」

初心者は「URL」に `http://localhost:9090` と入れがちだが、これはDockerコンテナ内部のネットワークを理解していない証拠だ。Docker Composeのサービス名で指定するのが正解だ。

  • URL: `http://prometheus:9090`

これで、Grafanaは同じDockerネットワークを介してPrometheusと通信する。

—

3. 現場を救う「隠れたキーボードショートカット」

Grafanaの操作でマウスを使っている時間は、すべて無駄だ。以下のショートカットを指に覚え込ませろ。

  • `Shift + Space`: コマンドパレットを開く(ここからダッシュボード検索が最強に早い)。
  • `d` + `r`: 直近のデータ範囲をリロード。
  • `d` + `z`: ズームアウト。
  • `d` + `l`: グラフの凡例(Legend)表示の切り替え。

これらを使いこなすだけで、会議室のモニターの前でマウスをカチカチ鳴らす「素人感」を払拭できる。

—

4. 絶対入れるべき「神プラグイン」

Grafanaはプラグインを入れることで、ただのグラフ描画ソフトから「インシデント管理ツール」に進化する。

1. [Clock Panel](https://grafana.com/grafana/plugins/grafana-clock-panel/): UTCとJSTを並べる。時差によるログの突き合わせミスを撲滅する。
2. [Status Panel](https://grafana.com/grafana/plugins/vonage-status-panel/): 「健康状態」を信号機(赤・黄・青)で表示せよ。ダッシュボードを一瞥するだけで異常を察知できる。
3. [Infinity](https://grafana.com/grafana/plugins/grafana-infinity-datasource/): JSONやCSVなどの外部APIを直接叩ける。Prometheus以外の外部ツールとの連携に必須だ。

—

5. チーム開発で生き残るための「共有ルール」

監視基盤で最も悲惨なのは、「俺のダッシュボード」が乱立し、どれが正解か分からなくなることだ。

  • Provisioning機能を使え: ダッシュボードのJSONを `provisioning/dashboards` ディレクトリに配置し、コンテナ起動時に読み込ませろ。GUIで作成したダッシュボードは必ず「Export」してGit管理下に置くこと。
  • 変数を駆使せよ: 環境(dev, stg, prod)やノード名をハードコードするな。`$environment` や `$node` といった「Dashboard Variables」を定義し、一つのダッシュボードですべての環境を切り替えて見るのがプロだ。

—

最後に:オブザーバビリティの本質とは

ツールを導入しただけで満足してはいけない。重要なのは「どのメトリクスがビジネスのKPIに直結しているか」を定義することだ。

CPU使用率が80%になったからアラートを出す? それはただの「監視」だ。
「ユーザーがエラー画面を何回見たか」「トランザクションが何ミリ秒遅延したか」を追うことこそが、「オブザーバビリティ(観測可能性)」である。

この環境を構築した今、君たちは「システムが何を語っているか」を聴く準備ができた。さあ、次はダッシュボードの向こう側にある、ユーザーの体験を観測する旅に出よう。

質問があればいつでも来い。現場の戦友として、いつでも答えを叩き込んでやる。

タイトルとURLをコピーしました