Contents
前提条件と環境設定
このセクションでは、ClickHouse と Grafana を安全かつ安定に接続するために必要な バージョン・OS・ネットワーク要件 を確認します。要件を満たすことでプラグインのインストールエラーや接続タイムアウトといった障害を未然に防げます。
バージョン確認
ClickHouse と Grafana の最低バージョンは執筆時点で ClickHouse ≥ 24.5、Grafana ≥ 10.4 です。公式リリースは頻繁に行われるため、将来的なアップデートに備えて常に最新のドキュメントを参照してください。
|
1 2 3 4 5 6 |
# ClickHouse のバージョン取得例 clickhouse-client --version # → 24.5.x 以上か確認 # Grafana のバージョン取得例 grafana-server -v # → 10.4.x 以上か確認 |
⚠️ 注意
本稿のバージョンは2026年2月時点の推奨要件です。新しいメジャーバージョンがリリースされた場合、プラグインの互換性が変わる可能性があります。導入前に公式サイト(ClickHouse Docs / Grafana Docs)で最新情報を確認してください。
OS 要件
| 項目 | 推奨環境 |
|---|---|
| アーキテクチャ | x86_64(ARM64 でも同等のパッケージが提供されていれば可) |
| カーネルバージョン | Linux kernel 4.15 以上 |
| 必要ライブラリ | glibc ≥ 2.28、libssl ≥ 1.1.1 |
| コンテナランタイム | Docker 23 以降、または Podman 相当 |
ネットワーク要件
- Native プロトコル: TCP 9000(TLS 推奨)
- HTTP インターフェイス: TCP 8123(HTTPS 必須)
ファイアウォール例(iptables):
|
1 2 |
iptables -A INPUT -p tcp -m multiport --dports 9000,8123 -j ACCEPT |
🔒 セキュリティ補足
TLS 証明書は自己署名でも構いませんが、社内 PKI や Let’s Encrypt の導入を検討すると管理負荷が低減します。
公式プラグインのインストールと有効化
Grafana に ClickHouse データソースプラグインを追加すれば、SQL クエリを GUI 上で実行できるようになります。ここでは Marketplace と CLI の二つの取得方法を解説し、インストール後に必ず行うべき検証手順も示します。
Marketplace からのインストール
Marketplace はプラグイン依存関係やバージョン互換性を自動で解決してくれるため、最も安全かつ簡単です。
- Grafana に管理者権限でログイン
- 左メニュー Configuration → Plugins を開く
- 検索ボックスに
ClickHouseと入力し、表示されたプラグインの Install ボタンをクリック - インストール完了後に Enable を選択
ポイント
- UI が提供するバージョン情報は常に最新です。
- プラグインが有効になるまでに Grafana の再起動が必要な場合があります。
CLI (grafana-cli) による自動インストール
スクリプトや CI/CD パイプラインでの自動化を前提とする場合は grafana-cli が便利です。
|
1 2 3 4 5 6 |
# プラグイン取得と有効化(Grafana サービスが起動中でも可) grafana-cli plugins install grafana-clickhouse-datasource # 設定反映のために再起動 systemctl restart grafana-server |
注意点
- インターネット接続が必須です。プロキシ環境では
--proxy http://proxy.example.com:8080を付与してください。 - バージョンを固定したい場合は
grafana-cli plugins install grafana-clickhouse-datasource@<version>の形式で指定できます。
インストール後の検証手順
プラグインが正しくロードされたかは、Grafana の Plugins ページで「Enabled」フラグとバージョン番号を確認するだけでなく、以下の簡易テストでも確かめられます。
|
1 2 |
curl -s http://localhost:3000/api/plugins | jq '.[] | select(.id=="grafana-clickhouse-datasource")' |
✅ 成功例
{"id":"grafana-clickhouse-datasource","enabled":true,"version":"2.5.1"}が出力されればインストールは完了です。
データソース定義と接続情報の準備
ClickHouse 側で 読み取り専用ユーザー を作成し、Grafana から安全に接続できるよう設定します。また、認証方式(Native vs HTTP)の特徴を比較した表も併せて掲載しています。
読み取り専用ユーザーの作成例
以下は最小権限でダッシュボード表示だけを許可するユーザーです。パスワード管理は Vault 以外にも選択肢があります(後述)。
|
1 2 3 4 |
CREATE USER grafana_user IDENTIFIED WITH sha256_password BY 'StrongRandomPassword123!'; ALTER USER grafana_user SETTINGS readonly = 1; GRANT SELECT ON mydb.* TO grafana_user; |
ベストプラクティス
| 項目 | 推奨設定 |
|---|---|
| パスワード長 | 32文字以上のランダム文字列 |
| 秘密情報保管 | HashiCorp Vault、Kubernetes Secrets、Docker secrets、または OS のファイルパーミッションで保護した .env ファイル |
| 権限範囲 | 必要最小限(テーブル単位でも可) |
認証方式比較
| 項目 | Native (TCP 9000) | HTTP (TCP 8123) |
|---|---|---|
| 主な認証 | ユーザー名+SHA256 パスワード(TLS 必須) | ユーザー名+パスワード、または JWT |
| 暗号化 | TLS (推奨) | HTTPS (必須) |
| レイテンシ | 同一データセンタで約 15 % 低減 | HTTP オーバーヘッド分が残る |
| 接続プールサポート | クライアント側実装が必要 | Grafana が自動管理 |
⚠️ ベンチマークの信頼性について
本稿で引用している「Native が平均 1.4 倍速」という数値は外部サイト(アプリの達人 – 2026 年版ベンチマーク)から取得しています。環境依存が大きく、実際のパフォーマンスはネットワーク構成・ハードウェアスペックに左右されます。導入前に自社環境でベンチマークを取ることを推奨します。
パスワード管理の代替案
| 方法 | 特徴 | 適用シーン |
|---|---|---|
| HashiCorp Vault | 動的シークレット、ACL が細かく設定可能 | 大規模・マルチテナント環境 |
| Kubernetes Secrets | kubectl で管理、Pod に自動マウント |
K8s 上の Grafana デプロイ |
| Docker secrets | Swarm / Compose のシークレットストア | コンテナ単体で完結する構成 |
| .env ファイル + chmod 600 | 手軽だが人的ミスに注意 | 小規模・開発環境 |
いずれの場合も 平文パスワードをリポジトリにコミットしない、アクセス権は最小化する、といった基本的なセキュリティ原則を守ってください。
YAML プロビジョニングと自動構成
Grafana のデータソースは UI だけでなく YAML ファイル に定義してコードとして管理できます。CI/CD パイプラインに組み込むことで、環境ごとの差異を最小限に抑えられます。
datasource.yaml の書き方
以下は ClickHouse データソースをプロビジョニングする際の基本構造です。インデントはスペース 2 個で統一し、変数置換が必要な箇所は ${...} 形式にしています。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
apiVersion: 1 kind: Datasource metadata: name: clickhouse-prod # 任意の識別子 spec: type: grafana-clickhouse-datasource access: proxy # Grafana がプロキシとして接続 url: ${CH_URL} # 例: tcp://clickhouse.internal:9000 または https://clickhouse.internal:8123 database: mydb user: ${CH_USER} secureJsonData: password: ${CH_PASSWORD} jsonData: defaultDatabase: mydb tlsSkipVerify: false # 本番では true にしないこと |
ポイント
urlは Native と HTTP のどちらでも書けるが、プロトコル (tcp:///https://) が必須。- 環境変数は CI ツール側で展開(例: GitHub Actions の
envsubst)し、リポジトリに平文を残さない。
配置場所とロード手順
Grafana 起動時に自動的に読み込まれるディレクトリは /etc/grafana/provisioning/datasources/ です。
datasource.yamlを作成(上記サンプルをベース)- 所定のディレクトリへコピー
|
1 2 |
cp datasource.yaml /etc/grafana/provisioning/datasources/ |
- Grafana サービスを再起動またはリロード
|
1 2 3 4 |
systemctl reload grafana-server # 設定変更のみの場合 # または systemctl restart grafana-server # 完全再起動 |
設定が正しく反映されると、Grafana の Data Sources ページに「clickhouse‑prod」が表示されます。
CI/CD での変数置換例(GitHub Actions)
|
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 |
name: Deploy Grafana Datasource on: push: branches: [ main ] jobs: provision-datasource: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Render datasource.yaml env: CH_URL: ${{ secrets.CH_URL }} CH_USER: ${{ secrets.CH_USER }} CH_PASSWORD: ${{ secrets.CH_PASSWORD }} run: | envsubst < datasource.template.yaml > datasource.yaml - name: Copy to target host uses: appleboy/scp-action@v0.1.4 with: host: ${{ secrets.GRAFANA_HOST }} username: ${{ secrets.SSH_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} source: datasource.yaml target: /etc/grafana/provisioning/datasources/ - name: Reload Grafana uses: appleboy/ssh-action@v0.1.6 with: host: ${{ secrets.GRAFANA_HOST }} username: ${{ secrets.SSH_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: sudo systemctl reload grafana-server |
このように コード化 したプロビジョニングは、ステージング・本番の差分を Git のコミット履歴で追跡でき、ロールバックも容易です。
ダッシュボード作成とパフォーマンスチューニング
データソースが有効になったら、Grafana の Explorer でクエリ検証 → パネル作成 → ダッシュボード完成の流れになります。ここでは実践的な手順と、ClickHouse 側・Grafana 側それぞれの最適化ポイントを紹介します。
Explorer でのクエリテスト手順
Explorer はインタラクティブに SQL を試せる開発者向けツールです。以下の流れで実行時間と結果の妥当性を確認しましょう。
- 左メニューから Explore を選択
- 作成した ClickHouse データソース(例:
clickhouse-prod)を指定 - 次のようなシンプルクエリを入力
sql
SELECT event_date,
count() AS cnt
FROM mydb.events
WHERE event_date >= now() - INTERVAL 1 DAY
GROUP BY event_date
ORDER BY event_date;
- Run query ボタンで実行し、結果テーブルと右上に表示される「Query time: xxx ms」を確認
成功指標
- クエリ時間が 500 ms 以下 → リアルタイムパネルとして問題なし
- 返却レコード数が多すぎる →
LIMITや__interval変数で粒度を絞る
パネル作成と時間範囲設定
Grafana のビジュアライゼーションは「Time series」や「Bar gauge」など複数種類があります。以下は時系列パネルの基本構築手順です。
- 任意のダッシュボードで Add panel → Time series を選択
- クエリエディタに先ほどのクエリを貼り付け、
GROUP BY event_date, $__intervalに変更
sql
SELECT toStartOfInterval(event_date, $__interval) AS ts,
count() AS cnt
FROM mydb.events
WHERE event_date >= now() - INTERVAL 7 DAY
GROUP BY ts
ORDER BY ts;
- パネル設定で Time range → 「Last 24 hours」や「Custom」から適切な範囲を選択
- 必要に応じて Axes, Legend, Display オプションを調整し、Apply → 保存
コツ
__$intervalは Grafana が自動で計算する時間粒度です。ダッシュボードの表示範囲が広くなるほど粗い粒度に変わります。- データポイントが 1,000 を超える場合は Downsampling(集計)を検討してください。
ベンチマーク結果とプロトコル選択指針
2026 年版ベンチマーク(外部サイト参照)では、同一ハードウェア上で Native が平均 1.4 倍速、スループットは約 30 % 向上すると報告されています。ただし、数値は以下の前提条件に依存します。
- 同一データセンタ内、ネットワークレイテンシ < 2 ms
- CPU: 32 コア / 64 GB RAM のサーバー
- ClickHouse 設定はデフォルト(
max_threads = CPU * 2)
プロトコル選択の指針
| シナリオ | 推奨プロトコル | 理由 |
|---|---|---|
| 1 秒以下の更新頻度が必要 | Native | TLS 経由でも低レイテンシ、接続プールでスループット向上 |
| 社内 VPN の閉域網のみ | Native | ファイアウォール設定が簡素化でき、TLS が必須で安全 |
| 外部 SSO(OAuth / OIDC)連携 | HTTP | Grafana がトークンを扱いやすく、構成がシンプル |
⚠️ 注意
本ベンチマークは第三者サイトの結果です。実運用では自社環境で再計測し、レイテンシ・スループット・コスト を総合的に評価してください。
ClickHouse 設定による最適化ポイント
ClickHouse のサーバーパラメータを調整するだけで、Grafana からのクエリ応答時間が 2 倍以上短縮 できるケースがあります。以下は代表的な設定項目と推奨値です。
| 設定項目 | 推奨値(例) | 効果 |
|---|---|---|
max_threads |
CPU 数 × 2 (例: 16 コア → 32) | クエリ並列度が上がり、集計処理が高速化 |
query_cache_size |
メモリの 10 % 程度(例: 6 GB) | 同一クエリ再実行時にディスク I/O を削減 |
max_memory_usage |
サーバー RAM の 50 % 以下 | OOM 発生を防止しつつメモリ利用効率向上 |
use_uncompressed_cache |
true | 圧縮・解凍コスト削減(CPU が余裕ある場合) |
設定は永続化ファイル(users.xml、config.xml)に記述するか、一時的に SQL で変更できます。
|
1 2 3 |
SET max_threads = 32; SET query_cache_size = 6000000000; -- 約 6 GB |
モニタリング例
Grafana の ClickHouse Metrics ダッシュボード(公式提供)をインポートし、QueryLog と System.Metrics を可視化すると、設定変更前後の差分が一目で把握できます。
よくあるエラーと対処法
| エラー | 主な原因 | 推奨対処 |
|---|---|---|
Authentication failed |
ユーザー名/パスワード不一致、TLS 設定不足 | ClickHouse 側の認証情報と Grafana の secureJsonData.password を再確認。TLS が無効の場合は有効化する |
timeout exceeded |
ファイアウォールでポート遮断、ネットワーク遅延 | iptables -L で 9000/8123 が開放済みか確認。telnet <host> 9000 で接続テスト |
type mismatch |
ClickHouse の Decimal と Grafana の数値型不整合 | クエリ側で toFloat64() 等にキャストし、Grafana が期待する型へ変換 |
query aborted due to memory limit |
max_memory_usage 超過 |
メモリ上限を緩和するか、クエリの集計粒度・フィルタ条件を見直す |
トラブルシューティング手順(チェックリスト)
- ログ確認 – ClickHouse の
clickhouse-server.logと Grafana のgrafana.logにエラーが出力されていないか。 - ネットワーク検証 –
nc -zv <host> 9000/nc -zv <host> 8123が成功することを確認。 - 認証情報再生成 – パスワードを新しいランダム文字列に置き換え、Vault/Secrets に再登録。
- TLS 設定 – 両側で同一 CA を使用し、
tlsSkipVerify: falseが有効か確認。
本番環境への展開手順
実装・テストが完了したら、本番サーバーへ安全にデプロイします。コードベースで管理された YAML プロビジョニング と CI/CD パイプライン を活用すれば、環境ごとの差異を最小限に抑えられます。
デプロイフローの概要
| フェーズ | 主な作業 |
|---|---|
| 1. プラグイン導入 | Marketplace または grafana-cli で公式プラグインをインストールし、Grafana を再起動 |
| 2. シークレット配置 | Vault/K8s Secrets から環境変数(CH_USER, CH_PASSWORD, CH_URL)を取得 |
| 3. datasource.yaml 配備 | CI/CD がテンプレート (datasource.template.yaml) を展開し、/etc/grafana/provisioning/datasources/ に配置 |
| 4. 設定リロード | systemctl reload grafana-server で自動作成を確認 |
| 5. 動作検証 | Explorer でサンプルクエリ実行、ダッシュボードのパネルが正しく表示されることを確認 |
ロールバック手順
datasource.yamlの前バージョンに差し替え- Grafana を再ロード(または再起動)
- プラグインや ClickHouse 側の設定変更があれば、同様に元に戻す
監視ポイント
- Grafana のプラグインステータス – UI の Plugins ページで「Enabled」かつ最新バージョンかを定期的にチェック。
- ClickHouse のクエリ遅延 –
system.query_logを Grafana に可視化し、閾値超過時にアラートを設定。 - シークレット有効期限 – Vault/K8s Secrets の TTL が切れたら自動ローテーションし、Grafana が再読込できるように
systemctl reload grafana-serverをトリガー。
まとめ
本稿では ClickHouse と Grafana の連携手順 を以下の観点から体系的に解説しました。
- 前提条件と環境設定 – バージョン・OS・ネットワーク要件を明示し、将来のアップデートへの注意喚起を追加。
- プラグイン導入 – Marketplace と CLI の両方の手順と、インストール後の検証方法を提示。
- 接続情報と認証方式 – 読み取り専用ユーザー作成例、Native/HTTP の比較表、Vault 以外のシークレット管理オプションを網羅。
- YAML プロビジョニング – datasource.yaml の詳細構造、CI/CD での変数置換例、デプロイ手順を具体化。
- ダッシュボード作成とチューニング – Explorer のテストフロー、パネル作成手順、ベンチマーク結果への注意書き、ClickHouse 設定による高速化策を紹介。
- 本番展開 – デプロイフロー、ロールバック・監視ポイントをチェックリスト形式で整理。
最終的なポイント
- 常に公式ドキュメントと自社環境でのベンチマークを組み合わせる。
- 秘密情報は Vault / K8s Secrets / Docker secrets のいずれかで安全に保管し、平文がコードリポジトリに残らないよう徹底する。
- プロトコル選択は「リアルタイム性」vs「構成の簡易さ」で判断し、必要に応じて両方を併用できるハイブリッド構成も検討する。
これらのベストプラクティスを踏まえて実装すれば、ClickHouse の高速分析と Grafana のリアルタイム可視化がシームレスに統合された堅牢なモニタリング基盤を構築できます。ぜひ本ガイドを手元に置き、段階的に導入作業を進めてください。