Contents
OpenTelemetryとGrafana連携の概要
OpenTelemetryとGrafanaを統合することで、アプリケーションのメトリクスやトレースデータを一元管理できるようになります。2023年現在、Grafana v10.1/OpenTelemetry Collector v0.98で導入可能な機能は、高速な処理と拡張性向上により、特にマイクロサービス環境での導入価値が高いです。本記事では、具体的な手順を解説し、実務で即座に活用できる知識をお伝えします。
最新版の導入意義
2023年現在、OpenTelemetryは業界標準となる観測プロトコルとして広く採用されています。Grafana v10.1では、OTLP(OpenTelemetry Protocol)をサポートするプラグインが公式にリリースされ、データの可視化が簡略化されました。これにより、既存の監視ツールと連携することなく、統一された観測基盤を構築できるようになります。
統合後のメリット
- 多様なデータソースの一元管理:ログ・メトリクス・トレースが同じダッシュボードで可視化可能
- 低コストな導入:オープンソースのため、ライセンス費用を抑えることが可能
- 柔軟な拡張性:コンテナ環境やクラウドネイティブアプリとの連携が容易
OpenTelemetry Collectorのインストール手順
OpenTelemetry Collectorは、データ収集・変換・転送を担うコアとなるコンポーネントです。以下に、Linux環境とDockerでの導入手順を解説します。
Linux環境でのバイナリダウンロード
- 公式サイトから最新版(v0.98)のバイナリファイルを取得
-
下記コマンドで展開し、実行ファイルを作成
bash
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.98.0/otelcol-contrib_0.98.0_linux_amd64.tar.gz
tar -xzf otelcol-contrib_0.98.0_linux_amd64.tar.gz
mv otelcol /usr/local/bin/ -
サービス設定ファイル(
config.yaml)を作成し、起動
bash
sudo systemctl enable otelcol
Dockerによる起動例
Dockerを使うことで、バージョン管理が簡単になります。以下は基本的なコマンドです。
注意: CMDに実行ファイル名を明記しないと正しく動作しません。
|
1 2 3 4 |
FROM open-telemetry/opentelemetry-collector-contrib:0.98.0 COPY config.yaml /etc/otel/config.yaml CMD ["otelcol", "--config", "/etc/otel/config.yaml"] |
起動時に-vオプションでホストの設定ファイルをマウントし、柔軟な設定が可能です。
GrafanaへのOTelプロトコル対応プラグイン導入方法
Grafana v10.1では、OTLPエンドポイントを直接サポートするOpenTelemetry Pluginが含まれています。以下に手順を解説します。
プラグイン検索とインストール手順
Grafanaのダッシュボード画面から「Configuration > Plugins」を開き、検索バーに「OpenTelemetry」を入力して公式プラグインを選択。
- プラグインの検索: 「OpenTelemetry」キーワードでフィルタリング
- 公式プラグインの選択: 開発元が
grafanaであるものを優先 - 導入と有効化: 「Install」ボタンをクリックし、再起動後に動作確認
注意: プラグインのバージョンはGrafana v10.1以上で動作確認済みです。
v10.1での有効化確認
インストール後、以下を実施してください。
- Grafana起動時に「Data Sources > Add data source」を選択
- 「OpenTelemetry Collector」を選択し、OTLPエンドポイントのURLを入力
- サービスが正常に接続されることを確認
OTLPエンドポイントの構成方法
OpenTelemetry CollectorとGrafanaを連携するには、OTLPエンドポイントの設定が不可欠です。以下に具体的な構成例を示します。
Collectorの受信設定例
config.yaml内のreceiversセクションに以下を記述します。
|
1 2 3 4 5 6 |
receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 |
これにより、gRPC経由でデータが送信され、TLS有効化が推奨されます。
プロトコル選択時の注意点
| プロトコル | 通信方式 | 推奨環境 |
|---|---|---|
| gRPC | 高速・信頼性高め | メトリクスが多い大規模なシステム |
| HTTP | 簡単に設定可能 | テスト環境や小規模なプロジェクト |
メトリクス可視化とコンテナ環境対応
メトリクスの可視化には、Grafanaのダッシュボードテンプレートが効果的です。また、コンテナ環境(特にKubernetes)での導入事例も紹介します。
ダッシュボードテンプレート例
以下は、OpenTelemetry Collectorから受信したメトリクスを可視化する基本的な構成です。
- Data Source:OTLPエンドポイントを登録
- Dashboard:「New Dashboard > Graph」を選択
- Query:
otelcol.metrics.*でメトリクスデータを取得 - Visualization:時間軸やスライダーでフィルタリング
Kubernetesでのデプロイ手順
Kubernetes環境では、Helmチャートを利用して簡単に導入可能です。以下は例です。
-
公式リポジトリの追加:
bash
helm repo add grafana https://grafana.github.io/helm-charts -
インストールコマンド実行:
bash
helm install my-grafana grafana/grafana \
--set datasources.opentelemetry.enabled=true \
--set datasources.opentelemetry.url=http://otel-collector:4317
信頼性検証: 本例では
grafana公式Helmチャートを使用しています。カスタムリポジトリはセキュリティリスクが高いため避けましょう。
よくあるトラブルシューティング
導入過程で発生する典型的な問題とその解決策を以下にまとめます。
データ受信失敗時の確認項目
- Collectorのログ確認:
--log-level=debugで詳細情報を取得 - ネットワーク設定:ファイアウォールが4317ポートを開いているか確認
- データ送信元の設定:アプリケーション側に正しいOTLPエンドポイントを指定しているか
プロトコルミスマッチの回避策
| 問題 | 原因 | 対処法 |
|---|---|---|
| 受信失敗 | gRPCとHTTPの混在 | サーバー・クライアントでプロトコルを統一 |
| データが表示されない | TLS設定の不一致 | 両側でTLSの有効化/無効化を揃える |
まとめ
本記事では、OpenTelemetryとGrafana v10.1の連携方法を以下の観点から解説しました。
- OpenTelemetry Collectorの導入手順(Linux・Docker)
- GrafanaへのOTelプラグインの有効化方法
- OTLPエンドポイント構成時のプロトコル選定と設定例
- メトリクス可視化に向けたダッシュボード作成とコンテナ環境対応
- 対処法を含むトラブルシューティングの実際
導入後は、リアルタイムでアプリケーションの動作をモニタリングでき、問題発生時の迅速な対応が可能になります。本記事の設定手順を参考に、自社環境でのOpenTelemetry-Grafana連携を試してみてください。