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

このドキュメントでは、Grafana JSON 形式のダッシュボード ファイルを Cloud Monitoring にインポートする方法について説明します。Grafana ダッシュボードは次の方法でインポートできます。

インポート プロセスは、Grafana で使用される JSON 形式のダッシュボード ファイルを Cloud Monitoring で使用される JSON 形式に変換します。変換されたダッシュボードは、元の Grafana ダッシュボードとは異なる場合があります。たとえば、Cloud Monitoring ダッシュボードで利用できない機能を Grafana ダッシュボードで使用している場合、Grafana ダッシュボードのこうした機能は変換されません。こうした違いは、インポートの結果に表示されます。

インポートできるのは、PromQL 式と Prometheus データソースを使用するダッシュボードのみです。他の形式のクエリまたはデータソースを使用するダッシュボードは、正常にインポートされない場合があります。

Prometheus アラートを Cloud Monitoring にインポートする方法については、Prometheus からアラートルールとレシーバーを移行するをご覧ください。

インポートしたダッシュボードの管理に関する一般的な情報については、カスタム ダッシュボードの作成と管理をご覧ください。

始める前に

Google Cloud コンソールまたはインポータ ツールを使用してダッシュボードをインポートする場合は、十分な認可が必要です。また、インポートするダッシュボードも必要です。インポータ ツールを使用する場合は、追加の前提条件があります。

認可

カスタム ダッシュボードの作成と変更に必要な権限を取得するには、プロジェクトに対するモニタリング編集者 roles/monitoring.editor)の IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

ロールの詳細については、Identity and Access Management を使用してアクセスを制御するをご覧ください。

インポートする Grafana ダッシュボードを収集する

Grafana ダッシュボードをインポートするには、JSON 形式のファイルとしてローカルに保存しておく必要があります。これらのダッシュボード ファイル専用のディレクトリを作成することをおすすめします。

Google Cloud コンソールを使用してダッシュボードをインポートする

Google Cloud コンソールの次の場所から、Grafana ダッシュボードを Cloud Monitoring にインポートできます。

  • Monitoring の [ダッシュボード] ページの [ダッシュボード リスト] タブ。
  • Monitoring の [概要] ページにあるオンボーディング チェックリストのダッシュボード セクション。

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

1 つ以上の Grafana ダッシュボードをインポートする手順は次のとおりです。

  1. Monitoring の [ダッシュボード] ページまたは [概要] ページに移動します。

    • Google Cloud コンソールで [ダッシュボード] ページに移動します。

      [ダッシュボード] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。

    • Google Cloud コンソールで Monitoring [概要] ページに移動します。

      [概要] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。

  2. [Grafana ダッシュボードをインポートする] をクリックします。

  3. [参照] をクリックして、Grafana ダッシュボードを JSON 形式で保存したディレクトリに移動し、インポートするダッシュボードを選択します。

    各 JSON ファイルは選択後にステージングされます。[ステージング ファイル] ペインには、変換に問題があるかどうかが表示されます。

    • [ 変換後の JSON を表示] をクリックして、変換の結果を確認します。
    • [ファイルを削除] をクリックして、インポート オペレーションからダッシュボードを削除します。
  4. [ インポート] をクリックします。[インポート結果] ペインには、各ダッシュボードが正常にインポートされたかどうかが表示されます。

  5. インポートに成功したダッシュボードを表示するには、 [表示] をクリックします。

インポートしたダッシュボードを表示する

ダッシュボードを表示するには、次のようにします。

  1. Google Cloud コンソールで [ダッシュボード] ページに移動します。

    [ダッシュボード] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。

  2. 表示するダッシュボードをリストで探します。ダッシュボードのリストをフィルタするには、次の操作を行います。

    • [カスタム] カテゴリを選択すると、ユーザー定義のダッシュボードのみが表示されます。
    • cloud-monitoring-dashboard-importer ラベルを選択すると、Google Cloud コンソールを使用してインポートされた Grafana ダッシュボードのみが表示されます。
    • フィルタバーを使用して名前で検索します。

インポート ツールを使用してダッシュボードをインポートする

インポータ ツールを使用して、1 回のオペレーションとして Grafana ダッシュボードを変換し、Cloud Monitoring にアップロードすることも、変換ステップとアップロード手順を個別に実行することもできます。アップロードする前に変換後のダッシュボードを編集する場合は、このアプローチを選択できます。

追加の前提条件

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

  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

アップロードしたダッシュボードを表示する

ダッシュボードを表示するには、次のようにします。

  1. Google Cloud コンソールで [ダッシュボード] ページに移動します。

    [ダッシュボード] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。

  2. 表示するダッシュボードをリストで探します。ダッシュボードのリストをフィルタするには、次の操作を行います。

    • [カスタム] カテゴリを選択すると、ユーザー定義のダッシュボードのみが表示されます。
    • インポータ ツールを使用してインポートされた Grafana ダッシュボードのみを表示するには、cloud-ops-grafana-importer ラベルを選択します。
    • フィルタバーを使用して名前で検索します。

トラブルシューティング

このツールの小規模なアップデートやバグ修正が公開されることがあります。さらなるトラブルシューティングを試す前に、まず git pull を使用して最新バージョンのリポジトリをプルダウンしてから再度インポートし、問題を修正してみてください。

グラフにデータが表示されないなど、変換後のダッシュボードの問題については、インポータの README ファイルをご覧ください。

次のステップ