Docker Compose とプロビジョニングフォルダーで Grafana を実行する
すべての設定をファイルとしてマウントして、compose ファイルから Grafana を起動します。
このガイドでは、Docker Compose を使って、ローカルで Grafana と Prometheus のデータソースを実行します。すべての設定は、ファイルと環境変数で提供されます。何かを設定するために UI を開くことは一度もありません。Compose プラグインを備えた Docker が必要です。
プロジェクトを構成する
grafana-as-code/
├── compose.yaml
├── .env # シークレットとバージョン。commit しない
├── grafana/
│ ├── grafana.ini
│ └── provisioning/
│ ├── datasources/
│ │ └── prometheus.yaml
│ ├── dashboards/
│ │ └── providers.yaml
│ ├── alerting/ # アラートのガイドで追加
│ └── plugins/
├── dashboards/
│ └── overview.json
└── prometheus/
└── prometheus.yml
これを Git に保管します。.env を .gitignore に追加し、代わりに .env.example を commit します。
compose ファイル
compose.yaml:
services:
grafana:
image: grafana/grafana:13.1.0 # テスト済みのバージョンに固定する
ports:
- "3000:3000"
environment:
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD}
GF_USERS_ALLOW_SIGN_UP: "false"
volumes:
- ./grafana/grafana.ini:/etc/grafana/grafana.ini:ro
- ./grafana/provisioning:/etc/grafana/provisioning:ro
- ./dashboards:/var/lib/grafana/dashboards:ro
- grafana-data:/var/lib/grafana
depends_on:
- prometheus
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
volumes:
grafana-data:
重要なマウントは次のとおりです。
/etc/grafana/grafana.iniは、公式イメージ内のサーバー設定ファイルです。/etc/grafana/provisioningは、Grafana がdatasources、dashboards、alerting、pluginsのフォルダーを探す場所です。/var/lib/grafana/dashboardsは、ダッシュボードの JSON のための任意のフォルダーです。パスは、下のダッシュボードプロバイダーで設定するものと一致する必要があります。grafana-dataは、Grafana の SQLite データベースとプラグインのための名前付きボリュームです。これがないと、コンテナが再作成されたときに状態が失われます。
設定のマウントは、意図的に読み取り専用にしています。Grafana はそれらに書き込む必要がないからです。
.env:
GRAFANA_ADMIN_PASSWORD=change-me-before-sharing
GF_SECURITY_ADMIN_PASSWORD は、Grafana が最初にデータベースを作成するときにだけ適用されることに注意してください。後で compose ファイルで変更しても、既存のボリュームには効果がありません。最初からやり直すにはボリュームを削除するか、CLI でパスワードをリセットしてください。
最小限の grafana.ini
[server]
http_port = 3000
[analytics]
reporting_enabled = false
check_for_updates = false
[log]
mode = console
level = info
[auth]
disable_login_form = false
省略したものは、Grafana のデフォルトに戻ります。次のガイドでは、grafana.ini と GF_* の上書きの完全なルールを説明します。
データソースをプロビジョニングする
grafana/provisioning/datasources/prometheus.yaml:
apiVersion: 1
datasources:
- name: Prometheus
uid: prometheus
type: prometheus
access: proxy
url: http://prometheus:9090
isDefault: true
editable: false
uid は、ダッシュボードとアラートルールが参照すべきものなので、安定したものを選んでください。次のガイドで、各フィールドを説明します。
ダッシュボードプロバイダーと 1 つのダッシュボードをプロビジョニングする
grafana/provisioning/dashboards/providers.yaml:
apiVersion: 1
providers:
- name: default
type: file
updateIntervalSeconds: 30
allowUiUpdates: false
options:
path: /var/lib/grafana/dashboards
dashboards/overview.json(最小限のダッシュボード。詳細はダッシュボードのガイドを参照):
{
"uid": "overview",
"title": "Overview",
"schemaVersion": 39,
"panels": [
{
"id": 1,
"type": "timeseries",
"title": "Targets up",
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 },
"datasource": { "type": "prometheus", "uid": "prometheus" },
"targets": [
{ "refId": "A", "expr": "up", "datasource": { "type": "prometheus", "uid": "prometheus" } }
]
}
]
}
そして、表示するデータがあるように、小さな prometheus/prometheus.yml:
global:
scrape_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ["localhost:9090"]
起動して、UI なしで確認する
docker compose up -d
docker compose logs grafana | grep -i provisioning
curl -s http://localhost:3000/api/health
curl -s -u admin:$GRAFANA_ADMIN_PASSWORD http://localhost:3000/api/datasources | jq '.[].name'
curl -s -u admin:$GRAFANA_ADMIN_PASSWORD "http://localhost:3000/api/search?type=dash-db" | jq '.[].title'
ヘルスのエンドポイントは ok を報告し、データソースの一覧には Prometheus が含まれ、検索は Overview を返すはずです。結果を見たければ http://localhost:3000 を開いてください。ただし、ここまで来るために、何もクリックしていません。
何かを変更して、適用されるのを観察する
dashboards/overview.jsonを編集します。updateIntervalSeconds以内に、Grafana は再起動なしで変更を取り込みます。- データソースのファイルを編集して再起動します。
docker compose restart grafana。データソースは起動時に読み込まれます。 - ダッシュボードのファイルを削除します。プロバイダーが
disableDeletion: trueを設定していない限り、ダッシュボードは削除されます。
設定からプラグインをインストールする
プラグインは、環境変数によってコンテナの起動時にインストールできるため、compose ファイルの中に残ります。
environment:
GF_PLUGINS_PREINSTALL: grafana-clock-panel
古いバージョンでは、代わりに GF_INSTALL_PLUGINS を使います。お使いのバージョンのドキュメントを確認してください。また、プロビジョニングは、すでにインストールされているプラグインを設定するだけであることにも注意してください。
クリーンアップ
docker compose down # データボリュームを保持
docker compose down -v # Grafana のデータベースも削除 人気のガイド
-
Grafana をコードとして運用する:全体像 ファイルに置けるもの、API が必要なもの、そしてそれらがどう組み合わさるか。 -
grafana.ini と環境変数で Grafana サーバーを設定する 設定ファイルの場所、上書きの順序、設定を Git に保つ方法を理解します。 -
JSON ファイルからダッシュボードをプロビジョニングする ディスクからダッシュボードを読み込み、ディレクトリからフォルダーを対応付け、変更を失わずに作成します。 -
アラートルール、コンタクトポイント、通知ポリシーをプロビジョニングする アラートのパイプライン全体を YAML で定義し、コードのようにレビューしてバージョン管理します。 -
Helm とプロビジョニングの values で Grafana を Kubernetes にデプロイする データソース、ダッシュボード、設定のすべてが values ファイルから来る、Helm チャートで Grafana を実行します。 -
コマンドラインからプロビジョニングを再読み込み、確認、トラブルシューティングする Grafana が何を読み込んだかを調べ、再起動せずに再読み込みし、よくあるプロビジョニングのエラーを修正します。