线上质量监控:资源监控仪表盘Grafana
官方是解释Grafana
Grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。
Grafana最常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。
Grafana有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch等等40多种数据库类型。
Grafana非常类似Kibana,也是对后端的数据进行实时展示,但是有不同与Kibana。
不过在日常使用中Kibana是跟着Logstash、ElasticSearch等组件一起使用做日志展示、索引、分析的,Kibana专注于可视化ElasticSearch里面的数据,而且生态圈没有Grafana好。
Grafana一般是和一些时间序列数据库进行配合来展示数据的,例如:Graphite、OpenTSDB、InfluxDB等。有着丰富的插件可以选择和进行定制。
Data Source 数据源
Grafana支持多种不同的时序数据库数据源,Grafana对每种数据源提供不同的查询方法,而且能很好的支持每种数据源的特性。
image.pngGrafana官方支持以下几种数据源:
Graphite、InfluxDB、OpenTSDB、Prometheus、Elasticsearch、CloudWatch
可以将多个数据源的数据合并到一个单独的仪表板上,也每个面板都绑定到特定数据源。
Organization 组织
Grafana为了支持多种部署模式支持多组织,包括使用一个单一的Grafana实例为多个潜在的不受信任的组织提供的服务。
在许多情况下,Grafana将部署一个单一的组织。
每个组织可以有一个或多个数据源。
所有的仪表板是由一个特定的组织拥有的。
User 用户
用户在Grafana与账户是一个概念。
一个用户可以属于一个或多个组织,可以通过角色来分配不同的权限。
Grafana支持多种用户认证的方式。
Row 行
行是Grafana在仪表盘界面的逻辑分区器,用于将多个面板连接在一起。
行一般是12个单位宽度。
单位宽度是Grafana为了支持不同分辨率的屏幕所采取的一种策略,这样Grafana可以在不同分辨率的显示器上拥有良好的展示效果。
Panel 面板
面板是Grafana最基本的展示单位。
image.png每个面板提供一个查询编辑器(依赖于面板中选择的数据源),允许您利用查询编辑器来编辑出一个完美的展示图像。
面板提供各种各样的样式和格式选项,而且支持拖拽来在仪表盘上重排,并且可以调整大小。
目前有四个面板类型:图像,状态,面板列表,表格 等类型,而且也支持文本类型。
面板(或整个仪表板)可以以多种方式轻松共享,既可以通过链接分享,也可以导出JSON等文本文件。
Query Editor 语句管理
Query Editor 顾名思义,就是语句管理,每个面板都提供一个Query Editor,我们可以通过编写语句来控制面板展示不同的图表。
image.pngDashboard 仪表盘
仪表盘是Grafana里面最重要的展示部分。
仪表盘可以视为一组一个或多个面板组成的一个集合,来展示各种各样的面板。
仪表盘还可以使用 模板 来允许用户交互式的选择数据来展示。
image.png仪表盘也可以通过 注释 来标记出各种各样的事件。
image.png仪表盘也支持通过多种不同的方式来共享,支持通过链接的方式共享或者导出JSON等格式的文件。
Alerting 警报
以可视方式定义最重要指标的警报规则。Grafana将不断评估它们并发送通知。
image.png
Notifications 通知
当警报更改状态时,它会发送通知。接收电子邮件通知或从Slack,PagerDuty,VictorOps,OpsGenie或通过webhook获取。
Grafana实战举例
JMeter 实时监控仪表板配置 (Grafana + InfluxDB)
在服务器上跑 JMeter 做压测的话,给工具本身也配上实时监控是必须的,命令行输出能提供的信息太少。
JMeter的 Backend Listener 支持 Graphite 和 InfluxDB,这里选择 InfluxDB 做时序数据库,支持类似 SQL 的查询语法是最大的优点。另外在 JMeter 3.2+ 里配置起来也比 Graphite 方便太多。(缺点是官网文档都没更新,要自己查存储的字段,猜它有什么用)
Grafana 能配出非常漂亮的监控仪表板,就是配的过程非常痛苦,不做非常详细的笔记的话过几天又忘光了,于是有了这篇东西。
【前提】
- 采集器:JMeter 3.2+,Backend Listener 里选择
InfluxdbBackendListenerClient
- 数据源:InfluxDB 1.4+
- 面板:Grafana 4.6+
- 已添加好数据源
- 新建面板,添加 3 行
【注意】
吞吐率和响应时间图表只计算成功的请求(失败的通常没意义,超时失败的能在表格里看到数量),结果可能会跟JMeter里看到的有出入。
【效果】
总体 错误数 单个接口已经上传到 Grafana 官网,可以从以下地址下载JSON文件,或通过ID 4026
直接导入:https://grafana.com/dashboards/4026
JMeter Backend Listener 参考配置:
JMeter设置Prometheus+Grafana搭建监控系统
基本概念
Prometheus
时间序列化数据库,我的理解就是将数据打上标签,以时间维度存储。后面有机会在深入研究。
Grafana
Prometheus中存储的数据,通过Grafana很优美的展现出来。
配置exporter来导入数据
prometheus可以理解为一个数据库+数据抓取工具,工具从各处抓来统一的数据,放入prometheus这一个时间序列数据库中。那如何保证各处的数据格式是统一的呢?就是通过这个exporter。exporter也是用GO写的程序,它开放一个http接口,对外提供格式化的数据。所以在不同的环境下,需要编写不同的exporter。好在已经有很多写好的exporter,我们可以直接使用,(https://github.com/prometheus这里可以找到很多exporter)
添加一个数据源,将Grafana和Prometheus关联起来
image.png导入成功后,你将看到监控页面,大功告成!!!
image.pngGrafana + Influxdb + Telegraf性能监控平台
[收集数据]
Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 InfluxDB 数据库。
Telegraf 具有内存占用小的特点,通过插件系统开发人员可轻松添加支持其他服务的扩展。
[存储数据]
InfluxDB是一个开源数据库别名时序数据库,针对时间序列数据的快速,高可用性存储和检索进行了优化。 InfluxDB非常适合运营监控,应用指标和实时分析。
[展示数据]
Grafana 是纯 Javascript 开发的前端工具,用于访问InfluxDB,自定义报表、显示图表等。
面板(Dashboard)用别人写好面板直接导入
image image然后从别人编辑好面板复制https://grafana.com/dashboards/928ID到上面
image3).最后看到一切都ok的图表,是不是很happy。
第一张:
image第二张:
image