跳转到主要内容

一个基于Python的应用程序,使用Grafana API和grafana-client Python接口构建Grafana快照

项目描述

Grafana快照工具

一个基于python3的应用程序,使用Grafana API和一个Python接口grafana-client构建包含数据(!)的Grafana快照

该工具的目的是

  1. 轻松从现有的Grafana仪表板构建快照。
  2. 将快照导出到本地的JSON格式,以便可以将其发送、导入并可视化到远程的Grafana。
  3. 将JSON格式的快照导入到Grafana。

当我们发现没有解决方案可以自动化从Grafana创建快照时,这个工具的开发开始了;只有GUI的功能是可操作的。这对我们来说是一个难点,因为它阻止了我们提供除了手动构建带有静态截图的仪表板之外的报告。有了这个工具,我们能够构建静态仪表板,也称为快照,可以在Grafana中共享和可视化。它也可以用来存储特定情况,即使数据窗口超出了数据源的保留范围。

使用此仓库安装

pip install git+https://github.com/peekjef72/grafana-snapshots-tool.git

安装pypi包

从pypi安装

pip3 install grafana-snapshots-tool 

需求

  • bash
  • python >3.6
  • python模块
    • python_dateutil
    • setuptools
    • PyYaml
    • jinja2
    • grafana-client 2.0.0 将拉取依赖项
      • requests
      • idna
      • urllib3
      • certifi
      • chardet
  • 访问Grafana API服务器。
  • 具有管理员角色(Grafana APIKey)的令牌

配置

配置存储在YAML文件中。

包含3部分

  • 通用:用于脚本环境。
    • 调试:启用详细(调试)跟踪(仅限开发使用...)
    • snapshot_suffix:在生成或导出仪表板到快照时,将该后缀附加到快照名称或文件名。后缀可以包含纯文本和strftime命令翻译的模式。
    • output_path:存储导出快照的位置。
  • grafana:用于Grafana访问设置
    • label:一个标签,用于引用Grafana服务器。必须至少有'默认'标签。它用于引用多个Grafana服务器,因此您可以使用不同的'标签'从一个生成并导入到另一个。
      • protocolhostport:用于构建访问URL。
      • verify_ssl:检查SSL证书或不检查。
      • token:Grafana的具有管理员权限的APIKEY,用于访问REST API。
      • search_api_limit:在API搜索中检索的最大元素数。
  • context:用于定义仪表板的默认值、time_from、time_to以及数据仪表板中暴露的变量的值。它是一个对象。为要添加默认值的每个仪表板添加一个由仪表板名称标识的子对象。每个对象可以包含
    • time_fromtime_to
    • 一个名为vars的对象:每个变量的定义及其对应的值。

用法

构建目录结构

  • grafana-snapshosts/
    • conf/grafana-snapshots.json,其中您的配置文件为主
    • snapshots/,其中您的导出快照将存储。

用法:

grafana-snapshots -h
usage: grafana-snapshots [-h] [-b BASE_PATH] [-c CONFIG_FILE]
                         [-d DASHBOARD_NAME] [-F GRAFANA_FOLDER]
                         [-f TIME_FROM] [-g GRAFANA_LABEL] [-i IMPORT_FILE]
                         [-o CONTEXT_NAME] [-p] [-s SNAPSHOT_NAME]
                         [-t TIME_TO] [-v] [-V]
                         [ACTION]

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

示例

  • 生成仪表板'My dashboard'的快照,对于'from'(现在 - 5分钟)到'now'使用默认值
$ grafana-snapshots -d "My dashboard"
OK: new snapshot 'My_dashboard_202010241750.json' created.

然后您可以在Grafana GUI中找到仪表板/管理/快照部分中的快照。

  • 导出仪表板'My dashboard',数据从'now-1d'到'now'。
$ grafana-snapshots -d "My dashboard" -f "now-1d" export
OK: snapshot exported to './snapshots/My_dashboard_202010241750.json' exported.

然后您可以在"snapshots"目录中找到创建的文件。

  • 导入文件'./snapshots/My_dashboard_202010241750.json'到Grafana
$ grafana-snapshots -f './snapshots/My_dashboard_202010241750.json' import
OK: snapshot './snapshots/My_dashboard_202010241750.json' imported.

然后您可以在Grafana GUI中找到仪表板/管理/快照部分中的快照。

TODO - 已知限制

  • 实际快照只能包含一组变量/值。
  • 目前表格的快照不工作。
  • 不支持重复。
  • 重写不会用于修改值!
  • 新版本Grafana(>7.5)对面板的渲染有多个影响;需要代码审查来改进结果。

项目详情


下载文件

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

源分布

grafana-snapshots-0.2.1.tar.gz (21.6 kB 查看散列)

上传时间

构建分布

grafana_snapshots-0.2.1-py3-none-any.whl (23.8 kB 查看散列)

上传于 Python 3

支持