一个基于Python的应用程序,使用Grafana API和grafana-client Python接口构建Grafana快照
项目描述
Grafana快照工具
一个基于python3的应用程序,使用Grafana API和一个Python接口grafana-client构建包含数据(!)的Grafana快照
该工具的目的是
- 轻松从现有的Grafana仪表板构建快照。
- 将快照导出到本地的JSON格式,以便可以将其发送、导入并可视化到远程的Grafana。
- 将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服务器,因此您可以使用不同的'标签'从一个生成并导入到另一个。
- protocol、host、port:用于构建访问URL。
- verify_ssl:检查SSL证书或不检查。
- token:Grafana的具有管理员权限的APIKEY,用于访问REST API。
- search_api_limit:在API搜索中检索的最大元素数。
- label:一个标签,用于引用Grafana服务器。必须至少有'默认'标签。它用于引用多个Grafana服务器,因此您可以使用不同的'标签'从一个生成并导入到另一个。
- context:用于定义仪表板的默认值、time_from、time_to以及数据仪表板中暴露的变量的值。它是一个对象。为要添加默认值的每个仪表板添加一个由仪表板名称标识的子对象。每个对象可以包含
- time_from和time_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 查看散列)