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

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

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

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

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

インポートしたダッシュボードの管理の概要については、カスタム ダッシュボードを作成して管理するをご覧ください。

始める前に

ダッシュボードのインポートに Google Cloud コンソールまたはインポータ ツールのいずれを使用するかに関係なく、十分な承認が必要です。また、インポートするダッシュボードが必要です。インポータ ツールを使用する場合は、追加の前提条件があります。

承認

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

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

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

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

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

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

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

  • 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 をインストールしていない場合は、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. 表示するダッシュボードをリストで探します。ダッシュボードのリストをフィルタするには、次の操作を行います。

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

トラブルシューティング

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

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

次のステップ