用于构建Grafana仪表板的库

grafanalib的Python项目详细描述


https://circleci.com/gh/weaveworks/grafanalib.svg?style=shield

你喜欢Grafana但希望你能将 仪表板配置?你发现自己在重复常见的模式吗?如果 所以,格拉法纳利是给你的。

grafanalib允许您从简单的python脚本生成grafana仪表板。

编写仪表板

下面将使用一行qps图配置仪表板 按状态代码和另一个显示中位数和第99位的延迟图细分 百分位延迟:

fromgrafanalib.coreimport*dashboard=Dashboard(title="Frontend Stats",rows=[Row(panels=[Graph(title="Frontend QPS",dataSource='My Prometheus',targets=[Target(expr='sum(irate(nginx_http_requests_total{job="default/frontend",status=~"1.."}[1m]))',legendFormat="1xx",refId='A',),Target(expr='sum(irate(nginx_http_requests_total{job="default/frontend",status=~"2.."}[1m]))',legendFormat="2xx",refId='B',),Target(expr='sum(irate(nginx_http_requests_total{job="default/frontend",status=~"3.."}[1m]))',legendFormat="3xx",refId='C',),Target(expr='sum(irate(nginx_http_requests_total{job="default/frontend",status=~"4.."}[1m]))',legendFormat="4xx",refId='D',),Target(expr='sum(irate(nginx_http_requests_total{job="default/frontend",status=~"5.."}[1m]))',legendFormat="5xx",refId='E',),],yAxes=[YAxis(format=OPS_FORMAT),YAxis(format=SHORT_FORMAT),],alert=Alert(name="Too many 500s on Nginx",message="More than 5 QPS of 500s on Nginx for 5 minutes",alertConditions=[AlertCondition(Target(expr='sum(irate(nginx_http_requests_total{job="default/frontend",status=~"5.."}[1m]))',legendFormat="5xx",refId='A',),timeRange=TimeRange("5m","now"),evaluator=GreaterThan(5),operator=OP_AND,reducerType=RTYPE_SUM,),],)),Graph(title="Frontend latency",dataSource='My Prometheus',targets=[Target(expr='histogram_quantile(0.5, sum(irate(nginx_http_request_duration_seconds_bucket{job="default/frontend"}[1m])) by (le))',legendFormat="0.5 quantile",refId='A',),Target(expr='histogram_quantile(0.99, sum(irate(nginx_http_request_duration_seconds_bucket{job="default/frontend"}[1m])) by (le))',legendFormat="0.99 quantile",refId='B',),],yAxes=single_y_axis(format=SECONDS_FORMAT),),]),],).auto_panel_ids()

这里有很多重复的地方,但是一旦你知道什么是有效的 你的需要,你可以考虑出来。 有关灵感,请参见our Weave-specific customizations

生成仪表板

如果您将以上内容保存为frontend.dashboard.py(后缀必须是 .dashboard.py,然后可以使用以下命令生成json仪表板:

$ generate-dashboard -o frontend.json frontend.dashboard.py

安装

grafanalib只是一个python包,所以:

$ pip install grafanalib

支架

这个图书馆正处于早期阶段。我们可能会做出改变 打破向后兼容,尽管我们会尽力不去做。

grafanalib与python 2.7、3.4、3.5和3.6一起工作。

开发

如果您正在进行项目,并且需要从源代码进行构建,请执行以下操作:

$ virtualenv .env
$ . ./.env/bin/activate
$ pip install -e .

gfdatasource

该模块还提供一个脚本和docker映像,可以配置grafana 使用新源,或启用应用程序插件。

脚本用完整的用法信息来回答--help,但是基本的 调用如下:

$ <gfdatasource> --grafana-url http://grafana. datasource --data-source-url http://datasource
$ <gfdatasource> --grafana-url http://grafana. app --id my-plugin

获取帮助

如果您对grafanalib有任何疑问、反馈或问题:

欢迎您的反馈!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从ImageIO中排除特定的TIFF读取器?   JavaJMockit和passbyreference。我们中一定有一个人错了(可能是我!)   java Android camera2放弃了牛轧糖的表面,但在棉花糖上工作   java按字符串中出现的顺序对字符数组进行排序   如何获取Groovy生成的java源代码   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java为什么我的冒泡排序代码会打印出这些奇怪的东西?   java JAXB:typesafeEnumMemberName=“generateName”是否可自定义?   Java编程输入:今天是星期天输出:星期天是今天   java不理解首个OOAD书的吉他示例   java如何从JformattedTextfield检索货币格式值   java可以从相同的源代码生成功能不同的可执行文件吗?