やあ。オブザーバビリティの世界へようこそ。
システムがブラックボックス化し、どこで何が起きているか分からず頭を抱える夜を過ごしたことはあるかい?
これから構築するのは、単なる「監視ツール」ではない。君のプロダクトの「健康状態を可視化する心電図」であり、障害の芽を未然に摘み取るための「千里眼」だ。
今回は、業界標準の鉄板構成である Prometheus(データ収集) と Grafana(可視化) を、Docker Composeを使って最短で立ち上げる。ただ動かすだけじゃない。現場で生き残るための「基礎の急所」を伝授するよ。
—
1. なぜ「Prometheus + Grafana」なのか?
オブザーバビリティの世界には数多のツールがあるが、この組み合わせは「最強の標準」だ。
- Prometheus: システムの「今」を数値(メトリクス)として吸い上げる掃除機。Pull型(自ら取りに行く)なので、負荷分散がしやすい。
- Grafana: Prometheusが溜め込んだ数値を、美しいグラフやダッシュボードに昇華させる魔法のキャンバス。
この2つを覚えるだけで、君のシステムの「透明度」は劇的に向上する。さあ、始めよう。
—
2. 準備するもの
PCに Docker と Docker Compose が入っていることを確認してくれ。
コマンドラインで以下を叩いて、バージョンが表示されれば準備完了だ。
docker –version
docker compose version
もし入っていなければ、[Docker Desktop](https://www.docker.com/products/docker-desktop/) をインストールしてくれ。現代のエンジニアにとって、これは必須のインフラだ。
—
3. 設定ファイル(docker-compose.yml)の極意
適当なフォルダを作り、`docker-compose.yml` を作成しよう。
ここには「どう繋がるか」という設計思想が全て詰まっている。
version: ‘3.8’
services:
# 1. Prometheus: データを溜め込む心臓部
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml # 設定をマウント
ports:
- “9090:9090”
# 2. Grafana: データを愛でるための窓
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- “3000:3000”
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin # 初回ログイン用パスワード
次に、Prometheusに「自分自身を監視せよ」と伝える `prometheus.yml` を同じ場所に作ってくれ。
global:
scrape_interval: 15s # 15秒おきにデータを吸い上げる
scrape_configs:
- job_name: ‘prometheus’
static_configs:
- targets: [‘localhost:9090’] # 自分自身を監視対象にする
—
4. 魔法の起動
準備は整った。ターミナルで以下のコマンドを打て。
docker compose up -d
コンテナが立ち上がったら、ブラウザを開いてみよう。
1. Prometheus: `http://localhost:9090` にアクセス。`Status` > `Targets` を見て、自分のステータスが「UP」なら成功だ。
2. Grafana: `http://localhost:3000` にアクセス。
- ユーザー名: `admin`
- パスワード: `admin` (先ほど設定した値)
—
5. 最初のデータソース追加とHelloWorld
Grafanaにログインしたら、Prometheusを紐付ける。これが「データソース」の設定だ。
1. 左側の歯車アイコン(Connections) > Data sources を選択。
2. Add data source から Prometheus を選択。
3. URLに `http://prometheus:9090` と入力(※Docker環境内でのサービス名解決を使うのがコツだ)。
4. 一番下の Save & test を押す。緑色のチェックが出れば成功!
さあ、ダッシュボードを作ってみよう。
`Dashboards` > `New` > `Add visualization` から、Prometheusを選択し、クエリ欄に `prometheus_http_requests_total` と入力して `Run queries` を押してくれ。
……どうだ? グラフが表示されただろう?
これが、君のシステムが見た「最初の景色」だ。
—
先輩からのアドバイス:この先へ行くために
今、君は「データが見える」状態になった。だが、本当のオブザーバビリティはここから始まる。
- 「何を見るべきか?」を知る: 全てのメトリクスを監視する必要はない。CPUやメモリだけでなく、「ユーザーが快適に操作できているか(リクエストのレイテンシやエラー率)」に焦点を当てるんだ。
- ダッシュボードは「壊す」ためにある: 綺麗に作る必要はない。障害が起きた時に「ここを見れば原因が1秒でわかる」という、自分専用の武器を作っていく感覚で磨き上げてほしい。
このツールを使いこなせば、君は「勘」ではなく「数値」で語れるエンジニアになれる。障害が起きても、慌てず冷静にデータを見て対処できる。そんなエンジニアこそ、現場で最も重宝される存在なんだ。
何かわからないことがあれば、またいつでも聞きに来てくれ。君の健闘を祈る!