跳转到主要内容

使用Grafana HTTP API导出和导入Grafana仪表板。

项目描述

Grafana导入工具

使用 Grafana HTTP APIgrafana-client 导出和导入 Grafana 仪表盘。

功能

  • 将仪表盘导出为 JSON 格式。
  • 将仪表盘导入 Grafana,支持原生 JSON 格式或仪表盘构建器生成的格式,支持仪表盘代码工作流程。
    • 支持的构建器包括 Grafonnetgrafana-dashboardgrafanalib 以及任何其他在标准输出上生成 Grafana 仪表盘 JSON 的可执行程序。
    • 导入操作保留仪表盘的版本历史。
  • 看门狗:为了最大程度地提高编写和编辑效率,看门狗监控磁盘上输入仪表盘的变化,并在发生变化时将其重新上传到 Grafana API。
  • 删除仪表盘。

安装

pip install --upgrade 'grafana-import[builder] @ git+https://github.com/grafana-toolbox/grafana-import.git'

目前,PyPI 上没有最新版本,因此我们建议直接从仓库安装。上面概述的命令描述了 grafana-import 的完整安装,包括对仪表盘构建器的支持,即仪表盘代码。

即席使用

您可以在没有配置文件的情况下以即席模式使用 grafana-import

入门

为了进行一些方向飞行,请使用 Podman 或 Docker 启动一个 Grafana 实例。

docker run --rm -it --name=grafana --publish=3000:3000 \
  --env='GF_SECURITY_ADMIN_PASSWORD=admin' grafana/grafana:latest

如果您没有 Grafana 仪表盘表示,可以从 grafana-import 仓库中的 examples 目录获取一些,如下所示。

wget https://github.com/grafana-toolbox/grafana-snippets/raw/main/dashboard/native-play-influxdb.json
wget https://github.com/grafana-toolbox/grafana-snippets/raw/main/dashboard/gd-prometheus.py

定义 Grafana 端点。

export GRAFANA_URL=http://admin:admin@localhost:3000

从 JSON 导入

从 JSON 文件导入仪表盘。

grafana-import import -i native-play-influxdb.json

使用构建器导入

导入由仪表盘构建器生成的仪表盘,如果同一文件夹中已存在同名仪表盘,则将其覆盖。

grafana-import import --overwrite -i gd-prometheus.py

使用重新加载导入

监控输入仪表盘在磁盘上的变化,并在发生变化时重新上传。

grafana-import import --overwrite --reload -i gd-prometheus.py

导出

将名为 my-first-dashboard 的仪表盘导出到默认导出目录。

grafana-import export --pretty -d "my-first-dashboard"

删除

Applications 文件夹中删除名为 my-first-dashboard 的仪表盘。

grafana-import remove -f Applications -d "my-first-dashboard"

使用配置文件使用

您还可以使用配置文件使用 grafana-import。这样,您可以管理并使用不同的 Grafana 连接配置文件,还可以使用预置来应用全局配置设置。

配置存储在 YAML 文件中。为了最佳使用,构建如下目录结构

grafana-import/
- conf/grafana-import.yml
  Path to your main configuration file.
- exports/
  Path where exported dashboards will be stored.
- imports/
  Path where dashboards are imported from.

然后,进入您的目录,并输入您的命令。

配置文件使用两个部分,generalgrafana

general 部分

配置程序目录。

  • debug:启用详细(调试)跟踪(仅限开发使用...)
  • export_suffix:导出仪表盘时,将后缀附加到文件名。后缀可以包含纯文本和由 strftime 命令翻译的模式。
  • export_path:存储导出仪表盘的位置。
  • import_path:在将仪表盘导入到 Grafana 服务器之前,加载仪表盘的位置。

grafana 部分

Grafana 认证设置。您可以使用不同的 api_key 或 Grafana 服务器 URL 设置定义多个 Grafana 访问配置部分。

  • label:引用此 Grafana 服务器的一个标签,例如 default
    • protocolhostport:用于构建访问 URL
    • verify_ssl:检查 SSL 证书或不检查
    • token:Grafana 的具有管理员权限的 APIKEY 以访问 REST API。
    • search_api_limit:在 API 搜索中检索的最大元素数。

示例

---

  general:
    debug: false
    import_folder: test_import

  grafana:
    default:
      protocol: http
      host: localhost
      port: 3000
      token: "____APIKEY____"
      search_api_limit: 5000
      verify_ssl: true

身份验证

为了连接到Grafana,您可以使用纯凭据(用户名/密码)或认证令牌。因为 grafana-import 使用 grafana-client,所以可以使用相同的认证设置功能。请参阅grafana-client认证变体

纯凭据可以嵌入到Grafana URL中,通过--grafana_url命令行参数或GRAFANA_URL环境变量提供。要指定Grafana认证令牌而无需使用配置文件,请使用GRAFANA_TOKEN环境变量。

构建器

grafana-import支持dashboard-as-code构建器。

为了获得灵感,请阅读更多示例,也请访问grafonnet示例grafana-dashboard示例grafanalib示例

Grafonnet

Grafonnet是一个用于生成Grafana仪表板的Jsonnet库。

该库由Grok生成的JSON Schema生成。反过来,这些Schema直接从Grafana仓库生成,以确保Grafonnet始终与Grafana的开发同步,且摩擦最小。

安装

安装Jsonnet及其jsonnet-bundler包管理器。

brew install go-jsonnet jsonnet-bundler

将Grafonnet安装到Jsonnet项目中。

git clone https://github.com/grafana-toolbox/grafana-snippets
cd grafana-snippets/dashboard/grafonnet-simple
jb install github.com/grafana/grafonnet/gen/grafonnet-latest@main

用法

渲染Grafonnet/Jsonnet中定义的仪表板。

grafana-import import --overwrite -i /path/to/faro.jsonnet

grafana-dashboard

使用grafana-dashboard渲染仪表板。

grafana-import import --overwrite -i /path/to/gd-dashboard.py

grafanalib

使用grafanalib渲染仪表板。

grafana-import import --overwrite -i /path/to/gl-dashboard.py

帮助

grafana-import --help

usage: grafana-import [-h] [-a] [-b BASE_PATH] [-c CONFIG_FILE]
                      [-d DASHBOARD_NAME] [-g GRAFANA_LABEL]
                      [-f GRAFANA_FOLDER] [-i DASHBOARD_FILE] [-o] [-p] [-v]
                      [-V]
                      [ACTION]

play with grafana dashboards json files.

positional arguments:
  ACTION                action to perform. Is one of 'export', 'import'
                        (default), or 'remove'.
                        export: lookup for dashboard name in Grafana and dump
                          it to local file.
                        import: import a local dashboard file (previously 
                          exported) to Grafana.
                        remove: lookup for dashboard name in Grafana and remove
                          it from Grafana server.


optional arguments:
  -h, --help            show this help message and exit
  -a, --allow_new       if a dashboard with same name exists in an another
                        folder, allow to create a new dashboard with same name
                        it that folder.
  -b BASE_PATH, --base_path BASE_PATH
                        set base directory to find default files.
  -c CONFIG_FILE, --config_file CONFIG_FILE
                        path to config files.
  -d DASHBOARD_NAME, --dashboard_name DASHBOARD_NAME
                        name of dashboard to export.
  -u GRAFANA_URL, --grafana_url GRAFANA_URL
                        Grafana URL to connect to.
  -g GRAFANA_LABEL, --grafana_label GRAFANA_LABEL
                        label in the config file that represents the grafana to
                        connect to.
  -f GRAFANA_FOLDER, --grafana_folder GRAFANA_FOLDER
                        the folder name where to import into Grafana.
  -i DASHBOARD_FILE, --dashboard_file DASHBOARD_FILE
                        path to the dashboard file to import into Grafana.
  -o, --overwrite       if a dashboard with same name exists in folder,
                        overwrite it with this new one.
  -r, --reload          Watch the input dashboard for changes on disk, and
                        re-upload it, when changed.
  -p, --pretty          use JSON indentation when exporting or extraction of
                        dashboards.
  -v, --verbose         verbose mode; display log message to stdout.
  -V, --version         display program version and exit.

现有技术

贡献

欢迎贡献,并且非常感谢。您可以通过许多方式做出贡献,并且将始终给予认可。

有关如何贡献的更多信息,请参阅贡献指南以及如何设置开发沙盒的说明。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

grafana_import-0.3.0.tar.gz (28.6 kB 查看哈希值)

上传时间

构建分布

grafana_import-0.3.0-py3-none-any.whl (25.1 kB 查看哈希值)

上传时间 Python 3

支持者