Contents
Docker環境でのPrometheusとGrafanaの導入フロー
DockerでPrometheusとGrafanaを導入する際、正しいイメージ選定とComposeファイルの構成が後の運用に直結します。特にコンテナ間通信の設定ミスはトラブルの元になるため、事前にネットワーク構成を確認することが重要です。以下では、導入フローと必要な準備について詳しく解説します。
必要なDockerイメージの確認
PrometheusやGrafana、AlertManagerの公式イメージを使用することで安定性が確保されます。バージョン選定には信頼性に優れたリポジトリから最新かつ安定したものを選ぶことが推奨されます。以下に代表的なイメージとバージョンを示します:
| サービス | リポジトリ | 推奨バージョン(2026年6月時点) | 信頼性根拠 |
|---|---|---|---|
| Prometheus | prom/prometheus | v2.47.1 | 公式リポジトリで維持されているバージョン |
| Grafana | grafana/grafana | 10.1.5 | 公式ドキュメントに記載された安定版 |
| AlertManager | prom/alertmanager | v0.26.0 | Prometheusプロジェクトで推奨されるバージョン |
注意:公式リポジトリ以外のイメージは信頼性に欠けるため、導入は避けてください。
Docker Composeファイルの作成手順
Docker Composeファイルでは、各サービスのポートマッピングとネットワーク設定を明確に定義します。以下が基本的なテンプレートです:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
version: '3.8' services: prometheus: image: prom/prometheus:v2.47.1 ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml networks: - monitoring-net user: "1000:1000" # ベストプラクティスとして非rootユーザーで実行 grafana: image: grafana/grafana:10.1.5 ports: - "3000:3000" volumes: - grafana_data:/var/lib/grafana networks: - monitoring-net user: "1000:1000" alertmanager: image: prom/alertmanager:v0.26.0 ports: - "9093:9093" volumes: - ./alertmanager.yml:/etc/alertmanager/config.yml networks: - monitoring-net user: "1000:1000" volumes: grafana_data: networks: monitoring-net: |
ポイント:
networksセクションで専用ネットワークを作成することで、コンテナ間通信の安定性が向上します。また、非rootユーザー (user) 設定や読取り専用ボリュームを活用しセキュリティを強化してください。
AlertManagerのローカル環境構築方法
AlertManagerはPrometheusから受信したアラートを処理し、通知を管理するためのツールです。ローカルで動作させるにはDocker Composeファイルに正確な設定が必要です。以下では導入フローとGrafanaとの連携手順を解説します。
Docker Composeでのサービス定義
以下の手順でAlertManagerを構築してください:
- イメージ選定:
prom/alertmanager:v0.26.0を使用 - ポートマッピング:外部アクセス用に
9093:9093を設定 - ネットワーク接続:
monitoring-netとPrometheus/Grafanaを共有
AlertManagerのGrafana連携設定
以下のようにalertmanager.ymlを構成することで、AlertManagerがGrafanaと通信できるようになります:
|
1 2 3 4 5 6 7 8 9 10 11 |
global: resolve_timeout: 5m route: receiver: 'grafana-webhook' receivers: - name: 'grafana-webhook' webhook_configs: - url: http://grafana:3000/api/alertmanager/receivers/notify |
注意:
urlの指定はGrafanaのWebhookエンドポイントに基づいてください。また、Docker Composeファイルでネットワーク設定を統一することで通信が可能になります。
PrometheusによるGrafana監視対象の登録
PrometheusはGrafanaのメトリクスを収集するため、scrape_configsに適切な設定を行う必要があります。以下では具体的な手順と確認方法を解説します。
scrape_configsの設定方法
Prometheusの構成ファイル(prometheus.yml)には以下のようにGrafanaを監視対象として登録します:
|
1 2 3 4 5 |
scrape_configs: - job_name: 'grafana' static_configs: - targets: ['grafana'] |
ポイント:
targetsの値はDocker Composeで定義したGrafanaサービス名(例:grafana)を指定します。
ターゲットホストの確認手順
以下のようにコマンドラインで通信が可能か確認してください:
curl http://localhost:3000/api/healthを実行し、Grafanaが正常に応答するかを確認- PrometheusのWeb UI(
http://localhost:9090/targets)でGrafanaが「UP」状態になっていることを確認
Grafanaダッシュボードでのアラートルール作成
Grafanaでは可視化されたデータに対してアラートを設定できます。ここでは具体的な作業フローと連携方法を解説します。
アラート条件の定義方法
以下の手順でアラートルールを作成してください:
- ダッシュボードを開く:左メニューから任意のグラフを選択
- アラートルールを作成:右上にある「Add alert」ボタンをクリック
- 条件設定:以下のように数値条件を指定します
Value:A > 90For:5m(5分間継続して条件が満たされた場合にアラート)
通知先の設定手順
- Contact Pointsを登録:
Alerting > Contact pointsでWebhook URLなどを指定 - Notification Policyを作成:
Alerting > Notification policiesでルールごとの通知先を定義 - アラートルールと連携:作成したPolicyをアラートルールに割り当て
例: CPU使用率が10%未満で5分間継続すると、LINEに通知する設定など
Docker Composeにおけるコンテナ間通信設定
Docker環境ではサービス名ベースの接続が可能ですが、ミスを防ぐためのベストプラクティスがあります。
サービス名ベースの接続方法
以下の2点に注意してください:
- ネットワークの統一:
networksで全サービスが同じネットワークに所属するように設定 - DNSリゾルバの利用:Dockerはサービス名を自動的にIPアドレスに解決します(例:
http://grafana:3000)
ネットワーク設定の最適化
- カスタムネットワークを作成し、外部アクセスが不要なコンテナは
internalネットワークで分離 - ポートマッピングを最小限に抑える:セキュリティリスクを軽減
外部通知システム(LINE等)との連携
アラート検知後の通知設定では、Webhook URLの取得とカスタムメッセージの作成が不可欠です。
Webhook URLの設定手順
- LINE Notify APIを準備:https://notify-bot.line.me/ でトークンを発行
- Webhook URLを作成:
https://api.notify.line.me/api/v2/bots/<bot_id>/push?access_token=<token>の形式でURLを構築
注意:誤ってPushbulletのURLが記載されていたため、LINE Notify APIに修正しました。
アラートメッセージのカスタマイズ
GrafanaのNotification Policy内で以下の例のようにテンプレートを指定できます:
|
1 2 3 4 5 |
{{ template "alert.default" . }} アラート発生: {{ .Status }} グラフ: {{ .Labels.alertname }} 閾値: {{ .Annotations.summary }} |
ポイント:
AlertmanagerとGrafanaの双方で通知設定を行うことで、複数チャネルへの送信が可能です。
まとめ
Docker環境での導入ではサービス名ベースのネットワーク構成を意識し、セキュリティ設定(非rootユーザーなど)も併せて実施することが重要です。PrometheusはGrafanaを監視対象として登録し、AlertManagerとの連携を確認してください。Grafanaでアラートルールを作成後、LINEなどの外部通知先と連携させることで、アラートの正確な伝達が可能になります。実装後に導入後のアラートテストを行って精度を検証してください。