Grafana与Elasticsearch

  以前一直用ELK体系里的Kibana作ES的WEB前端展现,kibana功能简单,能够直接显示log的内容,很是人性化,缺陷是没有权限、用户管理(我以前用Nginx和haproxy其中之一来代替),图形展现不够丰富,管理api等限制,更因为我须要更丰富的图形展现功能,因此开始寻找他的替代品Grafana。html

  Grafana简绍:前端

  1. Grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去建立、共享、浏览数据。dashboard中显示了你不一样metric数据源中的数据。git

  2. Grafana最经常使用于因特网基础设施和应用分析,但在其余领域也有机会用到,好比:工业传感器、家庭自动化、过程控制等等。github

  3. Grafana有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。数据库

  这里先简单介绍下个人应用场景,ES用做时序数据库,后端agent每分钟读取云平台的性能监控数据,经过Kafka存到ES里。使用JSON数据存储格式,ES天天1.8亿条doc,由于数据包比较小,ES的后端

Primary Size天天30多G。api

数据存储格式以下:跨域

wKioL1lI7QHRGURTAAFeXK7R0Kc583.png-wh_50

Grafana展现的效果截图:浏览器

wKioL1lI72XDvd9kAAKdXzhlS6k521.png-wh_50

wKioL1lI79PjfhKCAAHx_yRgW90211.png-wh_50

具体实现:bash

1、添加elasticsearch数据源

  默认Grafana是安装了ES插件的,若是没装须要安装相应data source插件。

点击Data Sources-->+ Add data source--> Type-->elasticsearch

wKiom1lJxwLCt80aAAD9pVW9rSo861.png-wh_50

:代理访问(access proxy)意味着,Grafana的后端将代理从浏览器的全部请求,并将它们发送到数据源。这颇有用,由于它能够消除CORS(跨域站点资源)的问题,以及消除到浏览器的传播认证。

若是你选择直接访问(access direct)必须更新Elasticsearch配置容许从浏览器进行其余域的访问。能够经过在elasticsearch.yml指定以下配置选项:

http.cors.enabled: true
http.cors.allow-origin: "*"

2、Metric查询编辑器

  Elasticsearch查询编辑器容许选择多个指标和组由多个条款或过滤器。在右边使用加号和减号图标来添加/删除索引或按子句分组。有些度量值和组子句都有选项,单击选项文本以展开视图并按选项编辑公制或组。

wKioL1lJ44rgQuYJAAEmKSj43Pg564.png-wh_50

  1. Query:Lucence查询语法,跟kibana的查询同样,详情请查阅ES的官方文档

  2. Metric:计量的标准,能够取最大、最小、平均值或者count条目数等,Options能够进行脚本的计算,这里我把value的值乘以8,来进行网络Byte和bite的换算。

  3. Group by:排序标准。能够以时间轴进行排序,也能够以自定义的term进行排序。须要这里须要注意一点,ES里若是须要以自定义的字符串term进行排序,会报错:"Fielddata is disabled on text fields by default.";报错信息以下图所示:wKioL1lJ0VSCZ5juAAGxW6JubI0429.png-wh_50

    解决办法是用"keyword"进行排序,须要手动加入后缀'.keyword',参考文档以下:https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html

  4. Query里也能够用变量来代替,变量是在templating里预先定义好的。后面再详细介绍templating的概念。

3、Axes选项

    这里能够进行X轴和Y轴的定义。

wKioL1lJ0rvDDEahAACivA6w7i8843.png-wh_50

  1. Unit设置单位的换算,grafana这里自带了多种单位换算,包括时间、吞吐、温度等;

  2. X-Axis里"mode"的选择,若是是要曲线图能够选择"Time",若是是要画柱状图能够选择"histogram"

4、Legend选项

    这里主要进行图上显示文字的设置。

wKioL1lJ1D_zhF5mAACYNs8u-XY750.png-wh_50

若是不勾选“show”则不会在图上显示相关value的信息。

5、Display选项

    这里主要进行如何画图的一些设置。也能够在图上设置阀值,超出阀值会自动突出显示。

  1. Draw Mode:绘制模式,选择线绘图仍是柱状图绘图,更改以后须要和Axes中X-Axis的modes联调,才能正确绘图。

    Mode Option: ‘Fill’填充程序,若是设置为0,则不填充,彻底是一条线的形式展现。如图所示:

    wKiom1lJ1iTRzl3LAAIUcP4GY04754.png-wh_50

    ‘Staircase’若是勾选则以阶梯的形式画图,如图示:wKiom1lJ1n6xEG9gAADNyBj1uXc934.png-wh_50

  2. Stacking & Null value:这里须要注意‘Null value’的选择,选择‘connected’,在空值的时候画图会自动把线进行先后衔接,若是设置为零,会画出驼峰的形状。

  3. Thresholds:阀值的设置:

    wKiom1lJ17-iClJxAACdlau_qJA281.png-wh_50

   效果图以下:

   wKioL1lJ1_iBjazIAAIL65_EXmY331.png-wh_50

6、Alert选项

    报警设置,须要提早配置好报警邮箱,遗憾的一点Elasticsearch目前版本还不支持Alert的配置,我已经在grafana的github issue上给ES投了一票,建议有相似需求的同窗也积极参与进来。

7、Templating

Templating在dashboard manage里设置:

wKiom1lJ2g_gfKjHAACFraUphYc334.png-wh_50

wKiom1lJ2nSxeAGbAAFObDd9eTM345.png-wh_50

"Edit"添加变量,变量建立完成会在dashboard顶部显示,这里一样用的Lucene的查询语法:

wKioL1lJ2sPAjziNAAGTFm7jGfQ734.png-wh_50

变量的使用,在Metric里面用‘$’或者‘[[]]’进行变量的调用:

wKioL1lJ2zXjTBYQAADTmcpxz8U393.png-wh_50

另外在General的Title里面也能够调用templating里定义的变量,这样图的标题也会随着变量的改变而改变。

  最后强调一点,更改完全部配置以后不要忘记点击保存按钮进行保存。

更多详细配置见文档:http://docs.grafana.org/features/datasources/elasticsearch/#using-elasticsearch-in-grafana

Grafana官方文档:http://docs.grafana.org/

相关文章
相关标签/搜索