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 迁移提醒规则和接收器。
须知事项
在安装和运行信息中心导入器之前,您必须执行以下操作:
- 使用支持 Bash Shell 脚本的环境。
- 拥有或安装 Git。
- 拥有或安装 Node.js 20.4.1 版或更高版本。
- 拥有或安装 Google Cloud CLI。如果您已经安装了 gcloud CLI,请运行
gcloud components update
命令以确保您拥有最新版本。
获取信息中心导入程序
信息中心导入程序存储在 monitoring-dashboard-samples
GitHub 代码库中。如需获取导入程序,请执行以下操作:
克隆代码库:
git clone https://github.com/GoogleCloudPlatform/monitoring-dashboard-samples
切换到信息中心导入程序的目录:
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
此脚本会执行以下操作:
- 将
PATH_TO_DIRECTORY_OR_FILE
中的信息中心从 Grafana 使用的 JSON 格式转换为 Cloud Monitoring 使用的 JSON 格式。 使用 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
文件。