将 Grafana 信息中心导入 Cloud Monitoring

Cloud Monitoring 提供了一个导入程序,可用于将 Grafana JSON 格式的信息中心文件导入 Cloud Monitoring。本文档介绍如何使用导入程序转换 Grafana 信息中心,并酌情将其上传到您的 Google Cloud 项目。

您可以使用导入程序来转换 Grafana 信息中心,并通过单次操作将其上传到 Cloud Monitoring,也可以单独执行转换和上传步骤。如果要在上传转换后的信息中心之前修改它们,则可以选择此方法。

导入程序将 Grafana 使用的 JSON 格式的信息中心文件转换为 Cloud Monitoring 使用的 JSON 格式。转换后的信息中心可能与原始 Grafana 信息中心不同。如果 Grafana 信息中心使用 Cloud Monitoring 信息中心不提供的功能,则 Grafana 信息中心的这些方面不会加以转换。这些差异列在转换输出中。导入程序仅用于处理使用 PromQL 表达式和 Prometheus 数据源的信息中心。使用其他形式的查询或数据源的信息中心可能无法成功导入。

如需了解如何将 Prometheus 提醒导入 Cloud Monitoring,请参阅从 Prometheus 迁移提醒规则和接收器

准备工作

在安装和运行信息中心导入器之前,您必须执行以下操作:

  1. 使用支持 Bash Shell 脚本的环境。
  2. 拥有或安装 Git
  3. 拥有或安装 Node.js 20.4.1 版或更高版本。
  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 信息中心

通过指定信息中心文件的路径,您可以使用信息中心导入程序一次转换一个或多个信息中心。

  • 您可以指定包含信息中心的目录的路径。系统只会处理目录中扩展名为 .json 的文件。

  • 您可以指定单个 JSON 文件的路径。文件名必须具有 .json 扩展名。

转换后的信息中心和其他信息

导入程序首次运行时,会创建一个 reports 子目录。每次运行导入程序时,您都将获得 reports 目录下按日期和时间命名的新输出目录。输出目录的名称具有以下结构:
reports/YYYY-M-D/HH:MM:SS

对于导入程序的每次调用,输出目录都包含以下内容:

  • 一个或多个与原始 Grafana 信息中心同名的文件,但现在采用 Cloud Monitoring JSON 格式。
  • report.json 文件,记录每个转换的信息中心的以下信息:
    • 已转换的 Grafana 信息中心文件的名称和位置。
    • 转换后的 Monitoring 信息中心文件的名称和位置。
    • 有关 Grafana 信息中心中任何功能在 Cloud Monitoring 中没有对应功能、因此无法包含在转换后的信息中心中的通知。
    • 转换过程中发生的任何错误。

如果您上传了信息中心,则报告目录还包含一个 upload_HH:MM:SS.txt 文件,其中包含信息中心上传到的网址。

导入 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 进行身份验证,请先运行 gcloud auth login 命令,然后再运行 import.sh 脚本。

您可以导入目录中的所有 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
    

信息中心导入程序包含的示例 Grafana 信息中心为 examples/k8s_cluster_example.json。以下命令会将该信息中心导入指定项目:

./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,脚本会上传信息中心并输出新信息中心的网址:

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 进行身份验证,请先运行 gcloud auth login 命令,然后再运行 upload.sh 脚本。

  • 如需上传 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
    

    从目录上传单个信息中心时,脚本运行时不会在上传信息中心之前提示您。

例如,以下命令将存储在 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

问题排查

我们偶尔会为该工具发布小型更新和 bug 修复。在尝试进一步排查问题之前,请先使用 git pull 拉取最新版本的代码库并再次导入,看看是否能解决问题。

如需了解转换后的信息中心的问题(例如图表未显示数据),请参阅导入程序的 README 文件。

后续步骤