コンテンツにスキップ

Grafana

出典: フリー教科書『ウィキブックス(Wikibooks)』

Grafanaとは

[編集]

概要

[編集]

Grafanaは、メトリクス、ログ、トレースなどの観測可能性データを可視化・分析するためのオープンソースプラットフォームです。2014年にTorkel Ödegaardによって開発され、現在では監視・可視化分野で最も人気のあるツールの一つとなっています。

主な特徴

[編集]
  • マルチデータソース対応: PrometheusInfluxDBElasticsearchMySQLPostgreSQLSQLiteなど60以上のデータソースに対応
  • 豊富なビジュアライゼーション: グラフ、テーブル、ヒートマップ、ゲージなど多様な表示形式
  • リアルタイム監視: ライブダッシュボードによる即座のデータ更新
  • アラート機能: 閾値ベースのアラート通知
  • 拡張性: プラグインアーキテクチャによる機能拡張
  • コミュニティ: 活発なオープンソースコミュニティ

用途

[編集]
  • インフラストラクチャ監視: サーバー、ネットワーク、アプリケーションの監視
  • アプリケーション監視: APM(Application Performance Monitoring)
  • ビジネスメトリクス: KPI、売上、ユーザー行動の可視化
  • IoTデータ分析: センサーデータの収集・分析
  • ログ分析: 集約されたログデータの可視化

インストールとセットアップ

[編集]

システム要件

[編集]
  • OS: Linux、macOS、Windows
  • メモリ: 最小512MB、推奨2GB以上
  • ストレージ: 最小1GB、推奨10GB以上
  • ネットワーク: インターネット接続(プラグインダウンロード用)

インストール方法

[編集]

Docker(推奨)

[編集]
# 最新版のGrafanaを起動
docker run -d --name=grafana -p 3000:3000 grafana/grafana-enterprise

# 永続化ボリュームを使用
docker run -d \
  --name=grafana \
  -p 3000:3000 \
  -v grafana-storage:/var/lib/grafana \
  grafana/grafana-enterprise

Ubuntu/Debian

[編集]
# GPGキーを追加
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

# リポジトリを追加
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

# インストール
sudo apt-get update
sudo apt-get install grafana

CentOS/RHEL

[編集]
# リポジトリファイルを作成
sudo tee /etc/yum.repos.d/grafana.repo<<EOF
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF

# インストール
sudo yum install grafana

初期設定

[編集]
# サービスの開始
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

# ファイアウォール設定(CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload

初回ログイン

[編集]
  1. ブラウザで http://localhost:3000 にアクセス
  2. デフォルトユーザー名: admin、パスワード: admin
  3. 初回ログイン後、パスワードの変更を求められます

基本概念の理解

[編集]

主要コンポーネント

[編集]

データソース(Data Source)

[編集]

Grafanaがデータを取得する外部システムです。各データソースには固有のクエリ言語があります。

ダッシュボード(Dashboard)

[編集]

複数のパネルを配置してデータを可視化する画面です。組織内で共有可能です。

パネル(Panel)

[編集]

個々のグラフやテーブルなどの可視化要素です。クエリとビジュアライゼーションの組み合わせで構成されます。

クエリ(Query)

[編集]

データソースからデータを取得するための命令です。各データソースの構文に従って記述します。

データフロー

[編集]
データソース → クエリ → パネル → ダッシュボード → ユーザー

組織構造

[編集]
  • Organization: 最上位の管理単位
  • Team: ユーザーグループ
  • User: 個別ユーザー
  • Role: 権限レベル(Admin、Editor、Viewer)

データソースの設定

[編集]

データソースの追加手順

[編集]
  1. 左サイドメニューから「Configuration」→「Data sources」を選択
  2. 「Add data source」をクリック
  3. 使用するデータソースタイプを選択
  4. 接続情報を入力
  5. 「Save & test」で接続確認

主要データソース設定例

[編集]

Prometheus

[編集]
# 設定項目
URL: http://prometheus:9090
Access: Server (default)
Scrape interval: 15s
Query timeout: 60s
HTTP Method: GET

InfluxDB

[編集]
# InfluxDB v1.x
URL: http://influxdb:8086
Database: mydb
User: admin
Password: password

# InfluxDB v2.x
URL: http://influxdb:8086
Organization: myorg
Token: your-token
Default Bucket: mybucket

MySQL/PostgreSQL

[編集]
Host: localhost:3306
Database: grafana_db
User: grafana_user
Password: secure_password
SSL Mode: disable
Max open connections: 100
Max idle connections: 2
Max connection lifetime: 14400

データソース管理のベストプラクティス

[編集]
  • 環境ごとに適切な命名規則を使用
  • 接続プールの設定を最適化
  • セキュリティ認証を適切に設定
  • テスト環境と本番環境のデータソースを分離

ダッシュボードの作成

[編集]

新規ダッシュボード作成

[編集]
  1. 「+」アイコンから「Dashboard」を選択
  2. 「Add new panel」でパネルを追加
  3. クエリとビジュアライゼーションを設定
  4. 「Save dashboard」で保存

ダッシュボード設定

[編集]

基本設定

[編集]
  • Title: ダッシュボード名
  • Description: 説明文
  • Tags: 検索・分類用タグ
  • Timezone: タイムゾーン設定
  • Auto-refresh: 自動更新間隔

レイアウト設定

[編集]
  • Grid: パネルの配置グリッド
  • Repeat: 変数に基づく繰り返し表示
  • Height: パネルの高さ設定

テンプレート変数

[編集]

動的なダッシュボードを作成するための変数機能です。

変数タイプ

[編集]
  • Query: データソースからの動的値取得
  • Custom: 固定値リスト
  • Constant: 定数値
  • Datasource: データソース選択
  • Interval: 時間間隔選択
  • Text box: 自由入力

変数の使用例

[編集]
-- MySQL クエリ例
SELECT value FROM metrics 
WHERE host = '$hostname' 
AND time >= $__timeFrom() 
AND time <= $__timeTo()

パネルとビジュアライゼーション

[編集]

パネルタイプ一覧

[編集]

Time Series(時系列グラフ)

[編集]

最も基本的なグラフ形式です。メトリクスの時系列変化を表示します。

設定項目:
  • Draw style: Line、Bars、Points
  • Line interpolation: Linear、Smooth、Step
  • Fill opacity: 塗りつぶしの透明度
  • Gradient mode: グラデーション効果

Stat(統計値)

[編集]

単一の値や統計情報を大きく表示します。

設定項目:
  • Value: 表示する値の選択
  • Text size: フォントサイズ
  • Color mode: 色の表示方法
  • Orientation: 横向き・縦向き

Table(テーブル)

[編集]

データを表形式で表示します。

設定項目:
  • Columns: 列の設定
  • Sorting: ソート設定
  • Pagination: ページネーション
  • Cell display mode: セルの表示方法

高度なビジュアライゼーション

[編集]

Heatmap(ヒートマップ)

[編集]

時間軸とバケット軸で二次元のデータ分布を表示します。

Gauge(ゲージ)

[編集]

閾値に対する現在値の位置を円形または線形ゲージで表示します。

Bar gauge(棒ゲージ)

[編集]

複数の値を棒グラフ形式で比較表示します。

パネル共通設定

[編集]

Data transformations

[編集]
クエリ結果を加工する機能:
  • Reduce: 集約処理
  • Filter: フィルタリング
  • Organize fields: フィールド整理
  • Add field from calculation: 計算フィールド追加

Field options

[編集]
フィールドごとの表示設定:
  • Display name: 表示名
  • Unit: 単位設定
  • Min/Max: 最小・最大値
  • Decimals: 小数点桁数
  • Color: 色設定

クエリの作成と最適化

[編集]

クエリエディター

[編集]

基本操作

[編集]
  • Query inspector: クエリの詳細確認
  • Query history: クエリ履歴
  • Query cache: クエリキャッシュ
  • Time range: 時間範囲設定

データソース別クエリ例

[編集]

Prometheus

[編集]
# 基本的なメトリクス取得
up

# レート計算
rate(http_requests_total[5m])

# 集約関数
sum(rate(http_requests_total[5m])) by (instance)

# 複雑なクエリ
histogram_quantile(0.95, 
  sum(rate(http_request_duration_seconds_bucket[5m])) by (le)
)

InfluxDB (InfluxQL)

[編集]
-- 基本的なSELECT
SELECT mean("value") FROM "cpu_usage" 
WHERE time >= now() - 1h 
GROUP BY time(5m)

-- 複数のフィールド
SELECT mean("cpu"), mean("memory") FROM "system" 
WHERE "host" = 'server1' 
AND time >= now() - 24h 
GROUP BY time(1h) fill(null)

Elasticsearch

[編集]
{
  "query": {
    "bool": {
      "must": [
        {"range": {"@timestamp": {"gte": "now-1h"}}},
        {"term": {"level": "error"}}
      ]
    }
  },
  "aggs": {
    "error_count": {
      "date_histogram": {
        "field": "@timestamp",
        "interval": "5m"
      }
    }
  }
}

クエリ最適化のポイント

[編集]

パフォーマンス向上

[編集]
  1. 時間範囲の制限: 必要最小限の時間範囲に絞る
  2. 集約の活用: 生データではなく集約データを使用
  3. インデックスの活用: データソース側のインデックス最適化
  4. キャッシュの活用: Grafanaのクエリキャッシュを有効活用

クエリデバッグ

[編集]
  • Query inspectorでクエリの実行時間確認
  • データソースのログ確認
  • ネットワーク遅延の調査

アラートの設定

[編集]

アラート機能の概要

[編集]

Grafana 8.0以降では、新しいアラートシステム「Unified Alerting」が導入されています。

アラートルールの作成

[編集]

基本手順

[編集]
  1. 「Alerting」→「Alert rules」を選択
  2. 「New rule」をクリック
  3. クエリとアラート条件を設定
  4. 評価間隔と期間を設定
  5. 通知設定を行う

アラートルール設定例

[編集]
# CPU使用率アラート
Query: avg(cpu_usage) by (instance)
Condition: IS ABOVE 80
Evaluation: every 1m for 5m
Summary: "High CPU usage detected"
Description: "CPU usage is {{ $value }}% on {{ $labels.instance }}"

通知チャンネル設定

[編集]

Slack通知

[編集]
{
  "webhook_url": "https://hooks.slack.com/services/...",
  "channel": "#alerts",
  "username": "Grafana",
  "title": "{{ range .Alerts }}{{ .Annotations.summary }}{{ end }}",
  "text": "{{ range .Alerts }}{{ .Annotations.description }}{{ end }}"
}

Email通知

[編集]
addresses: ["admin@example.com", "team@example.com"]
subject: "Grafana Alert: {{ .GroupLabels.alertname }}"
html_body:
  <h2>Alert Details</h2>
  {{ range .Alerts }}
  <p><strong>{{ .Annotations.summary }}</strong></p>
  <p>{{ .Annotations.description }}</p>
  {{ end }}

アラート管理

[編集]

サイレンス機能

[編集]

メンテナンス時などに一時的にアラートを無効化する機能です。

アラートグループ化

[編集]

関連するアラートをグループ化して通知頻度を調整します。

ユーザー管理と権限

[編集]

ユーザー管理

[編集]

ユーザー作成

[編集]
  1. 「Configuration」→「Users」を選択
  2. 「New user」をクリック
  3. ユーザー情報を入力
  4. 組織とロールを設定

認証方式

[編集]
  • Built-in: Grafana内蔵認証
  • LDAP/AD: Active Directory連携
  • OAuth: Google、GitHub、Azure ADなど
  • SAML: エンタープライズSSO

権限システム

[編集]

組織レベル権限

[編集]
  • Admin: 全ての管理権限
  • Editor: ダッシュボード編集権限
  • Viewer: 閲覧のみ

ダッシュボード権限

[編集]
  • Owner: 所有者権限
  • Editor: 編集権限
  • Viewer: 閲覧権限

フォルダー権限

[編集]

フォルダー単位での権限管理が可能です。

チーム管理

[編集]

関連するユーザーをグループ化してまとめて権限管理できます。

プラグインとカスタマイズ

[編集]

プラグインの種類

[編集]

データソースプラグイン

[編集]

新しいデータソースへの接続を提供します。

パネルプラグイン

[編集]

新しいビジュアライゼーション方式を追加します。

アプリプラグイン

[編集]

Grafana内で動作する独立したアプリケーションです。

プラグインの管理

[編集]

インストール方法

[編集]
# CLIでのインストール
grafana-cli plugins install <plugin-id>

# 手動インストール
wget https://grafana.com/api/plugins/<plugin-id>/versions/<version>/download
unzip <plugin-file> -d /var/lib/grafana/plugins/

おすすめプラグイン

[編集]
  • Pie Chart: 円グラフ表示
  • Worldmap Panel: 世界地図での可視化
  • Clock Panel: 時計表示
  • Text Panel: Markdown/HTMLテキスト表示
  • Diagram Panel: ネットワーク図作成

テーマとカスタマイズ

[編集]

カスタムテーマ

[編集]

CSSを使用してGrafanaの外観をカスタマイズできます。

ブランディング

[編集]

ロゴやフッターのカスタマイズが可能です(Enterprise版)。

パフォーマンス最適化

[編集]

データベース最適化

[編集]

SQLite(デフォルト)

[編集]

小規模環境向けですが、本格運用ではMySQL/PostgreSQLを推奨します。

MySQL/PostgreSQL設定例

[編集]
[database]
type = mysql
host = 127.0.0.1:3306
name = grafana
user = grafana
password = password
max_open_conn = 300
max_idle_conn = 300
conn_max_lifetime = 14400
log_queries = false

キャッシュ設定

[編集]

メモリキャッシュ

[編集]
[caching]
enabled = true

[cache.memory]
gc_interval = 60s

Redis キャッシュ

[編集]
[cache.redis]
enabled = true
address = 127.0.0.1:6379
password = 
db = 0

パフォーマンス監視

[編集]

メトリクス収集

[編集]

Grafana自体のメトリクスを監視することが重要です。

主要メトリクス

[編集]
  • Response time: レスポンス時間
  • Query duration: クエリ実行時間
  • Memory usage: メモリ使用量
  • Database connections: DB接続数

運用とメンテナンス

[編集]

バックアップ

[編集]

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

[編集]
# SQLite
cp /var/lib/grafana/grafana.db /backup/grafana_$(date +%Y%m%d).db

# MySQL
mysqldump -u grafana -p grafana > grafana_backup_$(date +%Y%m%d).sql

# PostgreSQL
pg_dump -U grafana grafana > grafana_backup_$(date +%Y%m%d).sql

設定ファイルバックアップ

[編集]
# 設定ファイル
cp /etc/grafana/grafana.ini /backup/

# プラグイン
tar -czf /backup/plugins_$(date +%Y%m%d).tar.gz /var/lib/grafana/plugins/

ログ管理

[編集]

ログ設定

[編集]
[log]
mode = console file
level = info
filters = rendering:debug

[log.console]
level = info
format = console

[log.file]
level = info
format = text
log_rotate = true
max_lines = 1000000
max_size_shift = 28
daily_rotate = true
max_days = 7

アップデート手順

[編集]

事前準備

[編集]
  1. 現在の設定とデータをバックアップ
  2. アップデート内容の確認
  3. テスト環境での検証

アップデート実行

[編集]
# パッケージ更新(Ubuntu/Debian)
sudo apt-get update
sudo apt-get install grafana

# サービス再起動
sudo systemctl restart grafana-server

トラブルシューティング

[編集]

よくある問題と解決方法

[編集]

起動しない場合

[編集]
  1. ログファイルの確認
  2. ポート競合の確認
  3. データベース接続の確認
  4. 権限設定の確認

パフォーマンスが悪い場合

[編集]
  1. クエリの最適化
  2. データソースの負荷確認
  3. メモリ使用量の確認
  4. ネットワーク遅延の調査

データが表示されない場合

[編集]
  1. データソース接続の確認
  2. クエリ構文の確認
  3. 時間範囲の確認
  4. 権限設定の確認

ログ分析

[編集]

重要なログパターン

[編集]
# 接続エラー
database connection failed

# クエリエラー
query execution error

# メモリ不足
out of memory

# 認証エラー
authentication failed

デバッグ手法

[編集]

Query Inspector の活用

[編集]
  • クエリの実行時間確認
  • 実際のクエリ内容確認
  • レスポンスデータの確認

ブラウザ開発者ツール

[編集]
  • ネットワークタブでAPI呼び出し確認
  • コンソールでJavaScriptエラー確認

ベストプラクティス

[編集]

ダッシュボード設計

[編集]

設計原則

[編集]
  1. 目的の明確化: 何を監視したいかを明確にする
  2. 情報の階層化: 重要な情報を上部に配置
  3. 一貫性の保持: 色やフォントの統一
  4. レスポンシブ対応: 様々な画面サイズに対応

推奨レイアウト

[編集]
Overview Stats Key Metrics
Main Time Series Chart
Detailed Metrics Error Logs

パフォーマンス最適化

[編集]

クエリ最適化

[編集]
  1. 時間範囲の適切な設定
  2. 集約クエリの活用
  3. 不要なデータの除外
  4. キャッシュの活用

リソース管理

[編集]
  1. メモリ使用量の監視
  2. CPU使用率の最適化
  3. ディスク容量の管理
  4. ネットワーク帯域の考慮

セキュリティ

[編集]

認証・認可

[編集]
  1. 強力なパスワードポリシー
  2. 多要素認証の導入
  3. 適切な権限設定
  4. 定期的な権限見直し

ネットワークセキュリティ

[編集]
  1. HTTPS の使用
  2. ファイアウォール設定
  3. VPN経由でのアクセス
  4. IPアドレス制限

運用体制

[編集]

監視体制

[編集]
  1. 24時間監視体制の構築
  2. エスカレーション手順の明文化
  3. 定期的な訓練の実施
  4. 改善点の継続的な検討

ドキュメント管理

[編集]
  1. 運用手順書の作成
  2. トラブルシューティングガイド
  3. 設定変更履歴の管理
  4. ナレッジベースの構築

まとめ

[編集]

Grafanaは強力で柔軟な可視化プラットフォームですが、その機能を最大限活用するには適切な設計と運用が重要です。このハンドブックを参考に、段階的に導入を進め、組織のニーズに合わせてカスタマイズしていくことをお勧めします。

継続的な学習と改善により、より効果的な監視・可視化システムを構築できるでしょう。

参考リンク

[編集]