Cloud Monitoring には、Grafana JSON 形式のダッシュボード ファイルを Cloud Monitoring にインポートするために使用できるインポータが用意されています。このドキュメントでは、インポータを使用して Grafana ダッシュボードを変換し、必要に応じて Google Cloud プロジェクトにアップロードする方法について説明します。
インポータを使用して、1 回のオペレーションとして Grafana ダッシュボードを変換し、Cloud Monitoring にアップロードすることも、変換ステップとアップロード手順を個別に実行することもできます。アップロードする前に変換後のダッシュボードを編集する場合は、このアプローチを選択できます。
インポータは、Grafana で使用される JSON 形式のダッシュボード ファイルを Cloud Monitoring で使用される JSON 形式に変換します。変換されたダッシュボードは、元の Grafana ダッシュボードとは異なる場合があります。Cloud Monitoring ダッシュボードで利用できない機能を Grafana ダッシュボードで使用する場合、Grafana ダッシュボードのこれらの機能は変換されません。これらの違いは、変換の出力に表示されます。インポータは、PromQL 式と Prometheus データソースを使用するダッシュボードを処理することのみを目的として設計されています。他の形式のクエリまたはデータソースを使用するダッシュボードは、正常にインポートされない場合があります。
Prometheus アラートを Cloud Monitoring にインポートする方法については、Prometheus からアラートルールとレシーバーを移行するをご覧ください。
始める前に
ダッシュボード インポータをインストールして実行する前に、次のことを行う必要があります。
- Bash シェル スクリプトをサポートする環境を使用します。
- Git をインストールします(インストールしていない場合)。
- バージョン 20.4.1 以降の Node.js をインストールします(インストールしていない場合)。
- Google Cloud CLI をインストールします(インストールしていない場合)。すでに gcloud CLI をインストールしている場合は、
gcloud components update
コマンドを実行して最新バージョンであることを確認します。
ダッシュボード インポータを取得する
ダッシュボード インポータは、monitoring-dashboard-samples
GitHub リポジトリに保存されています。インポータを取得するには、次の操作を行います。
リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/monitoring-dashboard-samples
ダッシュボード インポータのディレクトリに移動します。
cd monitoring-dashboard-samples/scripts/dashboard-importer
ダッシュボード インポータには、次のスクリプトが含まれています。
import.sh
、ダッシュボードを変換します。また、必要に応じて、変換されたダッシュボードを Cloud Monitoring にアップロードします。upload.sh
。変換されたダッシュボードまたは Monitoring ダッシュボードを Cloud Monitoring にアップロードします。import.sh
スクリプトがこのスクリプトを呼び出してアップロードを行います。
import.sh
スクリプトを使用する場合は、変換する Grafana ダッシュボードの場所を指定する必要があります。インポータは、変換されたダッシュボードとその他の情報を含むディレクトリを作成します。以降のセクションでは、これらのディレクトリについて説明します。
変換する Grafana ダッシュボード
ダッシュボード インポータを使用してダッシュボード ファイルのパスを指定すると、1 つ以上のダッシュボードを一度に変換できます。
ダッシュボードを含むディレクトリへのパスを指定できます。ディレクトリ内の
.json
拡張子を持つファイルのみが処理されます。単一の JSON ファイルへのパスを指定できます。ファイル名の拡張子は
.json
にする必要があります。
変換されたダッシュボードとその他の情報
インポータを初めて実行する場合は、reports
サブディレクトリが作成されます。インポータを実行するたびに、reports
ディレクトリの下に、名前に日時を含む新しい出力ディレクトリが作成されます。出力ディレクトリの名前は、次の構造になります。
reports/YYYY-M-D/HH:MM:SS
インポータが呼び出されるたびに、出力ディレクトリには次のものが含まれます。
- 元の Grafana ダッシュボードと同じ名前のファイル。ただし、形式は Cloud Monitoring JSON 形式に変換されています。
report.json
ファイル。変換されたダッシュボードごとに次の情報が記録されています。- 変換された Grafana ダッシュボード ファイルの名前と場所。
- 変換されたモニタリング ダッシュボード ファイルの名前と場所。
- Cloud Monitoring に対応する機能がないため、変換されたダッシュボードに含めることができない Grafana ダッシュボードの機能に関する通知。
- 変換で発生したすべてのエラー。
ダッシュボードをアップロードしている場合、レポート ディレクトリに upload_HH:MM:SS.txt
ファイルも含まれます。このファイルには、ダッシュボードのアップロード先となる URL が含まれています。
Grafana ダッシュボードをインポートする
Grafana ダッシュボードを変換して Cloud Monitoring にアップロードするには、import.sh
スクリプトを使用します。
./import.sh PATH_TO_DIRECTORY_OR_FILE PROJECT_ID
このスクリプトは次の処理を行います。
PATH_TO_DIRECTORY_OR_FILE
のダッシュボードを Grafana の JSON 形式から Cloud Monitoring の JSON 形式に変換します。Google Cloud CLI を使用して、変換されたダッシュボードを Google Cloud プロジェクト PROJECT_ID にアップロードします。
gcloud CLI で認証を行っていない場合は、
import.sh
スクリプトを実行する前にgcloud auth login
コマンドを実行します。
すべての Grafana ダッシュボードをディレクトリにインポートすることも、インポートするダッシュボードを指定することもできます。
GRAFANA_DASHBOARDS_DIR
ディレクトリ内のすべてのダッシュボードを PROJECT_ID Google Cloud プロジェクトにインポートするには、スクリプトを呼び出すときに、インポータ ディレクトリからの相対ディレクトリと宛先プロジェクト ID を指定します。./import.sh GRAFANA_DASHBOARDS_DIR PROJECT_ID
GRAFANA_DASHBOARDS_DIR
ディレクトリのMY_GRAFANA_DASHBOARD.json
ダッシュボードのみを変換する場合は、スクリプトを呼び出すときに、インポータ ディレクトリに対する相対的なダッシュボード ファイル名を指定します。./import.sh GRAFANA_DASHBOARDS_DIR/MY_GRAFANA_DASHBOARD.json PROJECT_ID
ダッシュボード インポータには、examples/k8s_cluster_example.json
としてサンプルの Grafana ダッシュボードが含まれています。次のコマンドは、指定されたプロジェクトにダッシュボードをインポートします。
./import.sh examples/k8s_cluster_example.json PROJECT_ID
PROJECT_ID my-project-test-1
で呼び出すと、出力は次のようになります。
Converting: Kubernetes Cluster Overview ✓ Kubernetes Cluster Overview converted successfully Conversion of examples/k8s_cluster_example.json complete. Conversion Report located at: reports/2023-9-28/22:14:57/report.json To upload these dashboard(s) manually, you can run: ./upload.sh reports/2023-9-28/22:14:57/ <PROJECT_ID> Conversion Complete. Proceeding to uploading... Now running: ./upload.sh reports/2023-9-28/22:14:57/ my-project-test-1 Uploading 1 dashboard(s) from a directory with the following args: Directory: reports/2023-9-28/22:14:57/ Project: my-project-test-1 The following are your dashboards: - k8s_cluster_example.json
import.sh
スクリプトが出力ディレクトリを作成してダッシュボードを変換した後、変換後のダッシュボードをプロジェクトにアップロードする前に、確認のプロンプトが表示されます。「y
」と入力します。スクリプトによってダッシュボードがアップロードされ、新しいダッシュボードの URL が出力されます。
Would you like to continue? (y/n) y ✓ k8s_cluster_example.json successfully uploaded: https://console.cloud.google.com/monitoring/dashboards/builder/9c341ef8-cfef-4bdd-98d5-821571c520ef?project=my-project-test-1 Upload log created in reports/2023-9-28/22:14:57/upload_22:14:57.txt Need to troubleshoot? Please visit: https://github.com/GoogleCloudPlatform/monitoring-dashboard-samples/tree/master/scripts/dashboard-importer/README.md#troubleshooting
アップロードせずに Grafana ダッシュボードを変換する
変換されたダッシュボードをアップロードする前に検査または編集する場合は、import.sh
スクリプトを呼び出すときに PROJECT_ID 値を省略します。
./import.sh PATH_TO_DIRECTORY_OR_FILE
インポータは、Grafana ダッシュボードのインポートで説明されているように、ダッシュボードを変換しますが、変換されたダッシュボードは Cloud Monitoring にはアップロードされません。
upload.sh
スクリプトを手動で使用すると、後でアップロード手順を実行できます。
ダッシュボードを手動でアップロードする
Cloud Monitoring JSON 形式でダッシュボードを手動でアップロードするには、upload.sh
スクリプトを使用します。
./upload.sh PATH_TO_DIRECTORY_OR_FILE PROJECT_ID
upload.sh
スクリプトは、Google Cloud CLI を使用して JSON ファイルをアップロードします。gcloud CLI で認証を行っていない場合は、upload.sh
スクリプトを実行する前に gcloud auth login
コマンドを実行します。
reports/YYYY-M-D/HH:MM:SS
ディレクトリ内のすべてのダッシュボードをアップロードするには、スクリプトを呼び出すときに、インポータ ディレクトリからの相対ディレクトリと宛先プロジェクト ID を指定します。./upload.sh
reports/YYYY-M-D/HH:MM:SS
PROJECT_IDディレクトリからすべてのダッシュボードをアップロードする場合は、ダッシュボードをアップロードする前に、スクリプトを続行するかどうかを確認するプロンプトが表示されます。
reports/YYYY-M-D/HH:MM:SS
ディレクトリで特定のダッシュボードをアップロードするには、スクリプトを呼び出すときに、インポータ ディレクトリからの相対ディレクトリと相対ファイル名、宛先プロジェクト ID を指定します。./upload.sh
reports/YYYY-M-D/HH:MM:SS
/MY_MONITORING_DASHBOARD.json PROJECT_IDディレクトリから 1 つのダッシュボードをアップロードする場合は、アップロードの前にプロンプトは表示せずに処理が実行されます。
たとえば、次のコマンドは、reports
サブディレクトリに保存されているダッシュボードを Google Cloud プロジェクト my-project-test-1
にアップロードします。
./upload.sh reports/2023-9-26/22:48:31/k8s_cluster_example.json my-project-test-1 Uploading json file: k8s_cluster_example.json to project: my-project-test-1... ✓ k8s_cluster_example.json successfully uploaded: https://console.cloud.google.com/monitoring/dashboards/builder/25956d9a-93e2-410c-ada1-ec6872cb6665?project=my-project-test-1
トラブルシューティング
このツールの小規模なアップデートやバグ修正が公開されることがあります。さらなるトラブルシューティングを試す前に、まず git pull
を使用して最新バージョンのリポジトリをプルダウンしてから再度インポートし、問題を修正してみてください。
グラフにデータが表示されないなど、変換後のダッシュボードの問題については、インポータの README
ファイルをご覧ください。
次のステップ
- カスタム ダッシュボードの作成と管理
- ソースコードと
README
ファイルの確認(ダッシュボード インポータ) - Prometheus からアラートルールとレシーバーを移行する
- 指標の使用状況の表示と管理