将 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 控制台还是导入工具来导入信息中心,都必须拥有足够的授权,并且需要要导入的信息中心。使用导入工具时,还需要满足其他前提条件

授权

如要获得创建和修改自定义信息中心所需的权限,请让您的管理员向您授予项目的 Monitoring Editor (roles/monitoring.editor) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需详细了解角色,请参阅使用 Identity and Access Management 控制访问权限

收集要导入的 Grafana 信息中心

如需导入 Grafana 信息中心,您必须将其以 JSON 格式的文件形式存储在本地。您可能需要专门为这些信息中心文件创建一个目录。

使用 Google Cloud 控制台导入信息中心

您可以从 Google Cloud 控制台中的以下位置将 Grafana 信息中心导入 Cloud Monitoring:

  • 信息中心列表标签页,位于 Monitoring 信息中心页面上。
  • Monitoring 概览页面上的新手入门核对清单的“信息中心”部分。

导入 Grafana 信息中心

如需导入一个或多个 Grafana 信息中心,请执行以下操作:

  1. 前往 Monitoring 中的信息中心概览页面:

    • 在 Google Cloud 控制台中,转到 信息中心页面:

      前往信息中心

      如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

    • 在 Google Cloud 控制台中,转到监控概览页面:

      前往概览页面

      如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 点击  导入 Grafana 信息中心

  3. 点击浏览,导航到您以 JSON 格式存储 Grafana 信息中心的位置,然后选择要导入的信息中心。

    每个 JSON 文件在选中后都会进入分阶段处理;分阶段处理的文件窗格会指明转换过程中是否存在任何问题。

    • 点击 查看已转换的 JSON 可查看转换结果。
    • 点击  移除文件,从导入操作中移除某个信息中心。
  4. 点击 导入Import results 窗格会指明每个信息中心是否已成功导入。

  5. 如需查看已成功导入的信息中心,请点击  查看

查看导入的信息中心

如需查看已导入的信息中心,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在列表中找到您要查看的信息中心。如需过滤信息中心列表,您可以执行以下操作:

    • 选择自定义类别,以仅查看用户定义的信息中心。
    • 选择 cloud-monitoring-dashboard-importer 标签,即可仅查看使用 Google Cloud 控制台导入的 Grafana 信息中心。
    • 使用过滤器栏按名称搜索。

使用导入工具导入信息中心

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

其他前提条件

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

  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

查看已上传的信息中心

如需查看您上传的信息中心,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在列表中找到您要查看的信息中心。如需过滤信息中心列表,您可以执行以下操作:

    • 选择自定义类别,以仅查看用户定义的信息中心。
    • 选择 cloud-ops-grafana-importer 标签可仅查看使用导入工具导入的 Grafana 信息中心。
    • 使用过滤器栏按名称搜索。

问题排查

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

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

后续步骤