用于构建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 LineNumberReader。如果查询行为不正确,则返回readLine()   java包含了一个使用AndroidX的工具栏,这让我的应用程序崩溃了   JVM设置通过“java jar”运行应用程序的最佳实践   java如何获取ImageButton宽度   java Oracle SQLLDR实用程序无响应   列出Java获取对象的arrayList中最常见的元素   java使用带有FlowLayout的getContentpane对布局应用更改,但不起作用为什么?   在java中,我可以在画布上绘制画布吗?   编译游戏代码时发生java异常错误   从firestore获取java Webview失败   java将TableLayout中单元格的内容向右对齐   java无法在发布模式下启动活动(使用proguard安卓optimize配置)   java允许在线程期间进行GUI更新。睡觉   java如何对以变量为列表的列表进行排序   API URL上的java Google云端点异常