Prometheus

Grafana インストール・設定からダッシュボード作成まで完全ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


Contents

スポンサードリンク

1. 公式パッケージでのインストール

本節では、OS のパッケージ管理ツールを利用した 安定版 Grafana(最新版の 10 系) の導入手順と、導入後に必ず行うべき基本設定について解説します。パッケージ方式は OS のアップデートと連動できるため、長期運用に向いています。

1‑1. Debian / Ubuntu 系へのインストール

Debian/Ubuntu 系ディストリビューションでは、公式 APT リポジトリを追加した上で grafana パッケージをインストールします。以下の手順は Grafana OSS(オープンソース版) の最新安定版に対応しています。

ポイント
* signed-by オプションでキーの所在を明示すると、APT が不正なリポジトリを受け付けにくくなります。

1‑2. RHEL / CentOS / AlmaLinux 系へのインストール(YUM/DNF)

RHEL 系では rpm.grafana.com の公式リポジトリファイルを直接配置します。従来の yum install https://rpm.grafana.com/grafana.repo という記述は非推奨で、正しい手順は次の通りです。

ポイント
* repo_gpgcheck=1gpgcheck=1 を設定すると、リポジトリ自体と個々の RPM の署名を両方検証でき、供給チェーン攻撃への耐性が向上します。

1‑3. インストール直後の初期設定

インストール完了後は以下の操作で基本的な安全対策を施してください。

作業 コマンド例 / 操作
デフォルト管理者パスワード変更 ブラウザで http://<IP>:3000 にアクセス → admin / admin でログイン → Settings → Change Password
管理者メールアドレス設定 Settings → User > Profile でメールを入力
デフォルト組織名・タイムゾーン変更 Settings → Preferences から編集

2. Docker コンテナでのデプロイ

Docker 環境向けに、公式イメージ grafana/grafana:latest(現在は 10 系) を用いた最小構成と、本番運用時に推奨される追加設定を解説します。コンテナ化はスケールアウトや CI/CD パイプラインとの親和性が高い点がメリットです。

2‑1. 最小構成の起動例

  • GF_SECURITY_ADMIN_PASSWORD で初期 admin パスワードを設定し、起動直後にパスワード変更が不要になるようにしています。
  • GF_SERVER_ROOT_URL はリバースプロキシ経由で HTTPS 化する際の必須項目です(後述)。

2‑2. Docker Compose による本番向けスタック例

ポイント
* restart: unless-stopped により、ホスト再起動時やコンテナクラッシュ時に自動復旧します。


3. Helm Chart を使った Kubernetes デプロイ

Kubernetes クラスタでの統合管理が必要な場合は、公式 Helm チャート grafana/grafana が最も手軽です。本節では Helm v3 を前提に、TLS/HTTPS と永続化設定を組み込んだ例を示します。

3‑1. Helm リポジトリの登録とチャート取得

注意:公式ドキュメントは helm install の前に必ず repo update を実行するよう記載しています。これにより最新の Chart バージョンが取得できます。

3‑2. values.yaml(主要設定)

  • TLS 設定は Ingress が担当するため、grafana.ini.server.protocolhttp のままで構いません。
  • 永続化 (persistence.enabled) により、再デプロイ時でもダッシュボードやプラグインが保持されます。

3‑3. デプロイコマンド

ポイント
* --create-namespace は初回デプロイ時にのみ必要です。既存の名前空間がある場合は省略してください。


4. セキュリティ強化:TLS/HTTPS と認証プロキシ

Grafana の管理画面は機密情報(データソース資格情報やダッシュボードの設定)が含まれるため、必ず暗号化通信で保護し、外部からの直接アクセスを制限 することが推奨されます。本節では代表的な 2 つのパターン(リバースプロキシ経由と内部 TLS)を紹介します。

4‑1. Nginx リバースプロキシで HTTPS を付与

以下は Let’s Encrypt の自動取得に certbot を併用した例です。Grafana 本体は HTTP(ポート 3000)で起動し、Nginx が TLS 終端点となります。

手順サマリー

  1. sudo apt-get install nginx certbot python3-certbot-nginx(Ubuntu)
  2. sudo certbot --nginx -d grafana.example.com で証明書取得と自動設定。
  3. Nginx 設定を保存し、sudo systemctl reload nginx

ポイント
* X-Forwarded-Proto https ヘッダーは Grafana の「外部 URL」判定に必須です。Grafana 側で GF_SERVER_ROOT_URL=https://grafana.example.com を設定しておくと、メール通知やリンクが正しく生成されます。

4‑2. Grafana の組み込み TLS(自己署名証明書)

内部ネットワークだけで完結する構成の場合は、Grafana が直接 TLS 証明書を提供できます。以下は自己署名証明書の作成例です。

注意
* 自己署名証明書はブラウザで警告が出ます。内部ユーザーだけが利用する場合に限定してください。

4‑3. 認証プロキシ(Auth Proxy)によるシングルサインオン

企業環境では Keycloak、Okta、Azure AD などの IdP と連携し、Grafana の認証を外部に委譲することが一般的です。設定例は以下の通りです。

リバースプロキシ側(例:Nginx)で IdP の認証結果を X-Forwarded-User ヘッダーとして転送します。これにより、Grafana 内部のパスワード管理が不要になり、SSO が実現 します。


5. Prometheus データソースの登録と接続確認

この章では、Grafana に Prometheus をデータソースとして追加する手順と、TLS/Basic Auth が有効な環境での注意点を詳述します。接続失敗時に役立つトラブルシューティング表も掲載しています。

5‑1. UI からの基本設定

  1. 左メニュー → Settings → Data Sources を開く
  2. 「Add data source」→「Prometheus」を選択
  3. 必要項目を入力(以下はサンプル)
項目 推奨値 補足
URL http://prometheus.monitoring.svc:9090 (K8s 内)
https://prometheus.example.com:443(外部)
HTTP の場合は内部ネットワークだけに限定。HTTPS を利用するときは証明書の検証設定が必要です
Access Server (default) Grafana サーバから直接アクセス
TLS/SSL 「Skip TLS Verify」→false、CA 証明書を「Certificate file」に指定 社内 CA の場合はファイルパス(例: /etc/grafana/certs/ca.crt
Basic Auth 必要に応じて有効化し、ユーザー名・パスワードを入力 Prometheus が basic auth を提供しているケースのみ

設定が完了したら Save & test ボタンで接続確認します。

5‑2. 接続エラーと対処法

エラーメッセージ 主な原因 推奨対策
Failed to fetch (status 0) ネットワーク遮断、Prometheus が停止中 Grafana サーバ上で curl http://<prom-host>:9090/metrics を実行し応答を確認
TLS handshake timeout 証明書不一致・自己署名証明書が未設定 CA 証明書を正しく配置し、Skip TLS Verify は本番では 使用しない
401 Unauthorized Basic Auth 資格情報が誤っている、もしくは認可ポリシー不備 Prometheus 側の auth 設定と Grafana の入力内容を再確認
connection refused ポート番号ミス、ファイアウォールブロック ファイアウォールや Security Group で 9090/TCP が許可されているか検証

接続が成功したら Query Inspector(パネル編集画面右上の歯車アイコン)で up クエリを実行し、少なくとも 1 件以上の 1 が返ってくれば正常です。


6. ダッシュボード作成と基本パネル設定

Prometheus データが取得できたら、次は 可視化 です。本節では Grafana 10 の UI に合わせた新規ダッシュボードの作り方と、代表的なビジュアライゼーションごとの PromQL サンプルを紹介します。

6‑1. ダッシュボード作成フロー

  1. 左メニュー → Dashboards → NewDashboard をクリック
  2. 表示された空白画面の右上にある Add new panel ボタンでパネル編集へ遷移
  3. データソースとして先ほど登録した Prometheus を選択し、クエリエディタに PromQL を入力

ポイント:Grafana 10 では「Panel edit」サイドバーが常に表示され、クエリ変更時にリアルタイムでプレビューが更新されます。

6‑2. ビジュアライゼーション別プロンプト例

ビジュアル PromQL サンプル 解説
Graph(時間系列) rate(cpu_usage_seconds_total{job="node_exporter"}[5m]) CPU 使用率の 5 分平均を折れ線グラフで表示
Stat(単一数値) sum(http_requests_total{status=~"2.."}) 成功した HTTP リクエスト総数を大きく表示
Table(表形式) topk(5, avg by (instance) (node_memory_MemAvailable_bytes)) メモリ空き容量上位 5 インスタンスのテーブル
Bar gauge histogram_quantile(0.95, sum(rate(request_duration_seconds_bucket[5m])) by (le)) 95 パーセンタイルのレスポンスタイムをゲージ表示

各パネルでは Axes, Thresholds, Field overrides を活用して単位変換や色分けが可能です。設定はサイドバー下部にある Overrides タブで行います。


7. 変数・テンプレートで汎用的なダッシュボード設計

複数の環境(prod / staging / dev)やサービス間で共通化したい場合は、Dashboard Variables を使ってクエリを動的に切り替えます。本章では変数作成手順と実践的な活用例を示します。

7‑1. 変数の作成方法

  1. ダッシュボード右上の Settings → Variables をクリック
  2. Add variable ボタンで新規変数を追加し、TypeQuery を選択
  3. Prometheus のラベル取得クエリ例:

これにより $job という変数が生成され、全ジョブ名の一覧がドロップダウンとして表示されます。

7‑2. 変数を使った動的クエリ例

シナリオ 変数定義 クエリ例
ジョブ別 CPU 使用率 $job(上記) rate(cpu_usage_seconds_total{job="$job"}[5m])
インスタンス単位のメモリ使用量 $instance (label_values(instance)) node_memory_Active_bytes{instance=~"$instance"}
複数選択可能な環境切替 $envprod|staging|dev http_requests_total{environment=~"$env"}

変数の Multi‑valueInclude All option を有効にすると、複数ジョブ同時表示や「All」選択で正規表現 .* に自動展開されます。Refresh 設定を「On Dashboard Load」にしておくと、ラベルが変化した際にも最新情報が取得できます。


8. ダッシュボードの保存・エクスポート・インポート、アラート設定、運用ベストプラクティス

作成したダッシュボードは組織全体で共有し、変更履歴やバックアップを管理する必要があります。また、監視だけでなく アラート も同時に設計するとインシデント対応が迅速になります。

8‑1. JSON エクスポートとインポート手順

手順 操作内容
エクスポート ダッシュボード上部メニュー → ShareExport タブ → Download JSON
インポート 別環境の Grafana で Dashboards → Import を選択し、先ほどダウンロードした dashboard.json をアップロード。変数マッピングが必要な場合は画面指示に従う

ポイント:Grafana 10 ではインポート時にバージョン互換性チェックが自動で行われます。古い環境へ持ち込む際は、grafana-cli admin reset-admin-password などで管理者権限を確保してから実施してください。

8‑2. 基本的なアラートルール作成と通知チャネル連携

  1. 任意のパネル → Alert タブ → Create Alert Rule
  2. 条件式例(CPU 使用率が 80 % 超過したら)

  1. Notifications に Slack または Email のチャネルを追加
チャネル 設定項目
Slack Webhook URL(例:https://hooks.slack.com/services/XXX/YYY/ZZZ
Email SMTP サーバ、送信元アドレス、受信者リスト
  1. Alerting → Notification policies で優先度や抑止時間(silence)を設定し、ノーティフィケーションのフローを統一管理。

8‑3. 権限管理・フォルダ構成・バックアップ推奨設定

項目 推奨内容
フォルダ階層 Monitoring/Infra, Monitoring/Application, Team/DevOps のように機能別/チーム別に分割し、フォルダ単位で RBAC を適用
RBAC Grafana 組み込みロール(Admin, Editor, Viewer)+外部 IdP(Keycloak/OIDC)でカスタムロールを作成。例:team:devops-editor だけが DevOps フォルダへ書き込み可能
バックアップ - データベース(SQLite → /var/lib/grafana/grafana.db、PostgreSQL → pg_dump)
- ダッシュボード JSON の定期エクスポート (grafana-cli admin backup)
- PVC スナップショット(K8s デプロイ時)を 24 時間ごとに S3 バケットへ保存
監査ログ grafana.ini[auth] セクションで log_auth_success = truelog_auth_failure = true を有効化し、syslog に転送

ベストプラクティスまとめ
1. TLS + Auth Proxy で外部からの直接アクセスを遮断する。
2. 永続化 PVC定期バックアップ を組み合わせて障害時のリカバリを自動化。
3. アラートは 閾値だけでなく for 条件や 通知ポリシー でノイズを削減し、運用負荷を低減する。


まとめ

  • 公式パッケージ(APT/YUM)・DockerHelm のいずれの方法でも、最新の Grafana 10 系を安全に導入できる。
  • TLS/HTTPS認証プロキシ によって管理画面への不正アクセスリスクを最小化し、企業向け SSO へ統合することが推奨される。
  • Prometheus データソースは TLS 設定や Basic Auth を正しく構成すれば、接続失敗のトラブルも容易に切り分けられる。
  • ダッシュボードは 変数テンプレート で汎用化し、JSON エクスポート/インポートとバックアップ戦略で運用上の安全性を確保する。
  • アラート設定は 通知チャネルポリシー を併用し、インシデント検知から対応までのフローを自動化すべきである。

以上の手順とベストプラクティスに従えば、Grafana を中心とした可視化基盤を 高速に構築・安全に運用 できるはずです。質問や環境固有の課題があれば、公式ドキュメントおよびコミュニティフォーラムも併せて参照してください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Prometheus