Grafana ダッシュボードを Cloud Monitoring にインポートする

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 からアラートルールとレシーバーを移行するをご覧ください。

始める前に

ダッシュボード インポータをインストールして実行する前に、次のことを行う必要があります。

  1. Bash シェル スクリプトをサポートする環境を使用します。
  2. Git をインストールします(インストールしていない場合)。
  3. バージョン 20.4.1 以降の Node.js をインストールします(インストールしていない場合)。
  4. Google Cloud CLI をインストールします(インストールしていない場合)。すでに gcloud CLI をインストールしている場合は、gcloud components update コマンドを実行して最新バージョンであることを確認します。

ダッシュボード インポータを取得する

ダッシュボード インポータは、monitoring-dashboard-samples GitHub リポジトリに保存されています。インポータを取得するには、次の操作を行います。

  1. リポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/monitoring-dashboard-samples
    
  2. ダッシュボード インポータのディレクトリに移動します。

    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

このスクリプトは次の処理を行います。

  1. PATH_TO_DIRECTORY_OR_FILE のダッシュボードを Grafana の JSON 形式から Cloud Monitoring の JSON 形式に変換します。
  2. 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 ファイルをご覧ください。

次のステップ