Ubuntu で Grafana をインストールして使用する: 完全ガイド

グラファナの設定をマスターしてモニタリングと可視化を実現しましょう

目次

Grafana は、メトリクス、ログ、トレースを視覚的に表現し、アクション可能なインサイトに変換するための、監視および観測性のための主要なオープンソースプラットフォームです。

grafana これはGrafana公式サイトからのスクリーンショットです。

Grafanaとは?

Grafanaは、複数のプラットフォームで動作するオープンソースの分析およびインタラクティブな可視化ウェブアプリケーションです。サポートされているデータソースに接続すると、チャート、グラフ、アラートをウェブで提供します。Grafanaは、DevOpsでインフラストラクチャ、アプリケーション、サービスの監視に広く使用されています。

主な特徴:

  • 汎用ダッシュボード フレキシブルなテンプレートを使用して美しい、動的なダッシュボードを作成
  • 複数のデータソース Prometheus、InfluxDB、Elasticsearch、MySQL、PostgreSQLなど150以上のデータソースに接続可能
  • アラート Slack、PagerDuty、メール、ウェブフックなどの通知チャネルを備えた統合アラートシステム
  • チーム協力 ダッシュボードを共有し、チームを作成し、ユーザーの権限を管理
  • プラグインエコシステム パネル、データソース、アプリで機能を拡張
  • クラウドネイティブ Kubernetes、Docker、クラウド環境に最適

なぜUbuntuでGrafanaなのか?

Ubuntu LTSバージョンは、Grafanaをホストするための安定した、安全な基盤を提供します。新規で始めるか、監視インフラストラクチャのために新しいUbuntu環境をセットアップする必要がある場合は、Ubuntu 24.04のインストール方法と役に立つツールに関する私たちの包括的なガイドを確認してください。

メリットには以下があります:

  • 長期サポートとセキュリティアップデート
  • 大規模なコミュニティと豊富なドキュメント
  • Grafana LabsからのネイティブAPTリポジトリサポート
  • すばらしいDocker互換性
  • 開発環境および本番環境の両方に最適

インストール方法

方法1: APTリポジトリ経由でインストール(推奨)

これは最も簡単な方法で、Ubuntuのパッケージマネージャーを通じて自動更新を提供します。Ubuntuターミナルの使用に初めて触れるか、生産性を向上させたい場合は、Ubuntuキーボードショートカットチートシートを確認してください。

ステップ1: 事前条件のインストール

sudo apt-get install -y apt-transport-https software-properties-common wget

ステップ2: Grafana GPGキーの追加

sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

ステップ3: Grafana APTリポジトリの追加

安定版リリースの場合:

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

ステップ4: 更新およびGrafanaのインストール

sudo apt-get update
sudo apt-get install grafana

ステップ5: Grafanaサービスの起動および有効化

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server.service

ステップ6: インストールの確認

sudo systemctl status grafana-server

Grafanaは現在 http://localhost:3000 で動作しています。

方法2: Dockerを使用してインストール

Dockerはコンテナ化されたデプロイメントのための分離および管理を容易にします。

ステップ1: Dockerのインストール(まだインストールしていない場合)

sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker

ステップ2: Grafanaコンテナの実行

docker run -d \
  --name=grafana \
  -p 3000:3000 \
  -v grafana-storage:/var/lib/grafana \
  grafana/grafana-oss

設定の永続化:

docker run -d \
  --name=grafana \
  -p 3000:3000 \
  -v grafana-storage:/var/lib/grafana \
  -v $(pwd)/grafana.ini:/etc/grafana/grafana.ini \
  -e "GF_SERVER_ROOT_URL=http://your-domain.com" \
  -e "GF_SECURITY_ADMIN_PASSWORD=your-secure-password" \
  grafana/grafana-oss

方法3: Docker Composeを使用してインストール

docker-compose.yml ファイルを作成します:

version: '3.8'

services:
  grafana:
    image: grafana/grafana-oss:latest
    container_name: grafana
    restart: unless-stopped
    ports:
      - '3000:3000'
    volumes:
      - grafana-storage:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=your-secure-password
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_SERVER_ROOT_URL=http://your-domain.com

volumes:
  grafana-storage:

起動には以下を使用します:

docker-compose up -d

初期設定

最初のログイン

  1. http://your-server-ip:3000 にアクセス
  2. デフォルトの資格情報:
    • ユーザー名: admin
    • パスワード: admin
  3. パスワードをすぐに変更するよう促されます(強く推奨されます!)

最初のデータソースの設定

例: Prometheusの追加

  1. 設定(歯車アイコン)→ データソース をクリック
  2. データソースを追加 をクリック
  3. Prometheus を選択
  4. 設定:
    • 名前: Prometheus
    • URL: http://localhost:9090(Prometheusインスタンスに合わせて調整)
    • アクセス: サーバー(デフォルト)
  5. 保存&テスト をクリック

例: InfluxDBの追加

  1. InfluxDB をデータソースとして選択
  2. 設定:
    • クエリ言語: FluxまたはInfluxQL
    • URL: http://localhost:8086
    • データベース: your_database_name
    • ユーザー/パスワード: ご自身の資格情報
  3. 保存&テスト をクリック

最初のダッシュボードの作成

  1. 作成(+アイコン)→ ダッシュボード をクリック
  2. 新しいパネルを追加 をクリック
  3. データソースを選択
  4. クエリを記入(Prometheusの例):
rate(http_requests_total[5m])
  1. ビジュアライゼーションのカスタマイズ:
    • パネルタイプ(グラフ、ゲージ、統計、テーブルなど)を選択
    • レジェンド、軸、しきい値を設定
    • 必要に応じて変換を追加
  2. 適用 をクリックしてパネルを保存
  3. ダッシュボードを保存(ディスクアイコン)をクリック

高度な設定

Grafana設定の変更

メイン設定ファイルを編集します:

sudo nano /etc/grafana/grafana.ini

重要な設定:

[server]
# プロトコル(http、https、h2、socket)
protocol = http
http_port = 3000
domain = your-domain.com
root_url = http://your-domain.com

[security]
admin_user = admin
admin_password = your-secure-password
secret_key = your-secret-key

[users]
# ユーザー登録を無効化
allow_sign_up = false
allow_org_create = false

[auth.anonymous]
enabled = false

[smtp]
enabled = true
host = smtp.gmail.com:587
user = your-email@gmail.com
password = your-app-password
from_address = your-email@gmail.com
from_name = Grafana

変更後は再起動します:

sudo systemctl restart grafana-server

リバースプロキシ(Nginx)の設定

Nginxのインストール:

sudo apt install nginx

Nginx設定の作成:

sudo nano /etc/nginx/sites-available/grafana
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

有効化および再起動:

sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Let’s Encryptを使用してHTTPSを有効化

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com

アラートの設定

ステップ1: 通知チャネルの設定

  1. アラート連絡先ポイント に移動
  2. 新しい連絡先ポイント をクリック
  3. タイプを選択(メール、Slack、PagerDuty、ウェブフックなど)
  4. 設定(例: SlackウェブフックURL)
  5. テストおよび保存

ステップ2: アラートルールの作成

  1. ダッシュボードのパネルを編集
  2. アラート タブをクリック
  3. 条件を設定:
    • When: avg()
    • Of: query(A, 5m, now)
    • Is Above: 80
  4. 評価間隔を設定
  5. 通知チャネルを追加
  6. 保存

人気のあるユースケース

インフラストラクチャの監視

スタック: Prometheus + Node Exporter + Grafana

システムメトリクスを監視:

  • CPU、メモリ、ディスク使用量
  • ネットワークトラフィック
  • システム負荷
  • ディスクI/O

NVIDIA GPUの監視については、Grafanaと統合するLinux/Ubuntu用GPU監視アプリを検討してください。

インポートダッシュボードID: 1860(Node Exporter Full)

Kubernetesの監視

スタック: Prometheus + kube-state-metrics + Grafana

K8sクラスタの監視:

  • Podおよびコンテナメトリクス
  • クラスタリソース使用量
  • デプロイメント状態
  • Ingress/サービスの監視

インポートダッシュボードID: 15757(Kubernetes Cluster Monitoring)

アプリケーションパフォーマンスの監視

スタック: Loki + Promtail + Grafana

アプリケーションログおよびメトリクスの監視:

  • リクエストレートおよびレイテンシー
  • エラーレート
  • ログの集約およびフィルタリング
  • 分散トレース

データベースの監視

MySQL、PostgreSQL、MongoDBの監視:

  • クエリパフォーマンス
  • 接続プール
  • 遅いクエリ
  • レプリケーション状態

ダッシュボードのベストプラクティス

  1. 目的別に整理: 異なるチーム/サービス用に別々のダッシュボードを作成
  2. 変数を使用: テンプレート変数を使用して動的なダッシュボードを作成
  3. 適切な時間範囲を設定: 意味のある時間窓をデフォルトに設定
  4. 注釈を追加: デプロイメントおよびインシデントをマーク
  5. フォルダを使用: ダッシュボードを論理的に整理
  6. バージョン管理を有効化: ダッシュボードの変更を追跡
  7. リフレッシュ間隔を設定: リアルタイムの必要性とパフォーマンスのバランスを取る
  8. ドキュメントを追加: メトリクスを説明するためのテキストパネルを使用

一般的な問題のトラブルシューティング

Grafanaサービスが起動しない

# ログを確認
sudo journalctl -u grafana-server -f

# 設定を確認
sudo grafana-cli admin reset-admin-password newpassword

データソース接続問題

  • ネットワーク接続を確認: telnet datasource-host port
  • ファイアウォールルールを確認
  • 資格情報を確認
  • データソースサービスのログを確認

パフォーマンス問題

  • クエリ時間範囲を減らす
  • データソースクエリを最適化
  • サーバーのリソースを増やす
  • 必要に応じてキャッシュを使用
  • クエリ結果キャッシュを考慮

ダッシュボードが読み込まれない

  • ブラウザキャッシュをクリア
  • ブラウザコンソールでエラーを確認
  • ダッシュボードJSONが破損していないか確認
  • Grafanaサーバーログを確認

バックアップとメンテナンス

Grafanaデータベースのバックアップ

# Grafanaを停止
sudo systemctl stop grafana-server

# SQLiteデータベースをバックアップ
sudo cp /var/lib/grafana/grafana.db /backup/grafana-$(date +%Y%m%d).db

# 設定をバックアップ
sudo cp /etc/grafana/grafana.ini /backup/grafana-ini-$(date +%Y%m%d).bak

# Grafanaを起動
sudo systemctl start grafana-server

自動バックアップスクリプト

Grafanaバックアップを自動化するbashスクリプトです。bashスクリプト構文とコマンドのためのクイックリファレンスが必要な場合は、Bashチートシートを確認してください。

#!/bin/bash
BACKUP_DIR="/backup/grafana"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)

# データベースをバックアップ
sudo cp /var/lib/grafana/grafana.db $BACKUP_DIR/grafana-$DATE.db

# ダッシュボードをAPI経由でバックアップ
curl -H "Authorization: Bearer YOUR_API_KEY" \
  http://localhost:3000/api/search?type=dash-db | \
  jq -r '.[] | .uid' | \
  xargs -I{} curl -H "Authorization: Bearer YOUR_API_KEY" \
  http://localhost:3000/api/dashboards/uid/{} > $BACKUP_DIR/dashboards-$DATE.json

# 30日前のバックアップを削除
find $BACKUP_DIR -mtime +30 -delete

Grafanaの更新

# APT方法
sudo apt update
sudo apt upgrade grafana

# Docker方法
docker pull grafana/grafana-oss:latest
docker-compose down
docker-compose up -d

セキュリティ強化

  1. デフォルト資格情報をすぐに変更 する
  2. HTTPS と有効な証明書を使用
  3. ファイアウォールの設定:
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
    
  4. 匿名アクセスを無効化 する
  5. 強力な認証(LDAP、OAuth、SAML)を使用
  6. 定期的な更新 Grafanaを最新に保つ
  7. ユーザー権限を制限 ロールベースのアクセス制御を使用
  8. 監査ログを有効化 する
  9. 可能な限り読み取り専用データソースを使用 する
  10. レート制限を実装 する

Grafana自体の監視

Grafanaインスタンスを監視するには:

  1. grafana.ini でメトリクスエンドポイントを有効化:
    [metrics]
    enabled = true
    
  2. GrafanaをPrometheusターゲットとして追加
  3. Grafanaメトリクスダッシュボードをインポート

有用なプラグイン

CLI経由でプラグインをインストール:

sudo grafana-cli plugins install <plugin-id>
sudo systemctl restart grafana-server

推奨プラグイン:

  • grafana-piechart-panel: エンハンスドパイチャート
  • grafana-worldmap-panel: 地理データ可視化
  • grafana-clock-panel: 時間と日付の表示
  • grafana-simple-json-datasource: カスタムJSON APIに接続
  • alexanderzobnin-zabbix-app: Zabbix統合

統合例

Grafana + Prometheus + Node Exporter

完全な監視スタックのセットアップ:

# Node Exporterのインストール
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
sudo useradd -rs /bin/false node_exporter

# systemdサービスの作成
sudo tee /etc/systemd/system/node_exporter.service << EOF
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl start node_exporter
sudo systemctl enable node_exporter

Grafana + InfluxDB + Telegraf

タイムシリーズ監視のセットアップ:

# InfluxDBのインストール
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt update && sudo apt install influxdb
sudo systemctl start influxdb
sudo systemctl enable influxdb

# Telegrafのインストール
sudo apt install telegraf
sudo systemctl start telegraf
sudo systemctl enable telegraf

パフォーマンス最適化

クエリ最適化

  • 適切な時間範囲を使用
  • 戻すデータポイントを制限
  • キャッシュ戦略を使用
  • ソースでデータを集約可能であれば
  • Prometheusでレコードルールを使用

サーバー最適化

[database]
# 最大接続数を増やす
max_open_conn = 300
max_idle_conn = 100

[dataproxy]
# タイムアウト設定
timeout = 30
keep_alive_seconds = 30

[rendering]
# 並列レンダリング制限を有効化
concurrent_render_limit = 10

有用なリンク

結論

Ubuntu上のGrafanaは、監視および観測性のための強力で柔軟なプラットフォームを提供します。単一のサーバーを監視するか、大規模なKubernetesクラスタを監視するかに関係なく、Grafanaの豊富なビジュアライゼーション機能、広範なデータソースサポート、活発なコミュニティにより、DevOpsチームにとって優れた選択肢です。

APTリポジトリ方法を使用して簡単なセットアップから始め、最初のデータソースを接続し、監視機能を段階的に拡張してください。Grafanaのデプロイが成長するにつれて、セキュリティ、定期的なバックアップ、パフォーマンス最適化を優先してください。

適切な設定とベストプラクティスにより、Grafanaは観測性スタックにおいて不可欠なツールとなり、信頼性の高い、パフォーマンスの高いシステムを維持するためのアクション可能なインサイトを提供します。