互联网系统架构与应用性能测试Docker

线上质量监控:资源监控仪表盘Grafana

2018-10-08  本文已影响272人  我为峰2014
image.png

官方是解释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.png

Grafana官方支持以下几种数据源:

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.png

Dashboard 仪表盘

仪表盘是Grafana里面最重要的展示部分。

仪表盘可以视为一组一个或多个面板组成的一个集合,来展示各种各样的面板。

仪表盘还可以使用 模板 来允许用户交互式的选择数据来展示。

image.png

仪表盘也可以通过 注释 来标记出各种各样的事件。

image.png

仪表盘也支持通过多种不同的方式来共享,支持通过链接的方式共享或者导出JSON等格式的文件。

Alerting 警报

以可视方式定义最重要指标的警报规则。Grafana将不断评估它们并发送通知。


image.png

Notifications 通知

当警报更改状态时,它会发送通知。接收电子邮件通知或从SlackPagerDutyVictorOpsOpsGenie或通过webhook获取。

Grafana实战举例

JMeter 实时监控仪表板配置 (Grafana + InfluxDB)

在服务器上跑 JMeter 做压测的话,给工具本身也配上实时监控是必须的,命令行输出能提供的信息太少。

JMeter的 Backend Listener 支持 Graphite 和 InfluxDB,这里选择 InfluxDB 做时序数据库,支持类似 SQL 的查询语法是最大的优点。另外在 JMeter 3.2+ 里配置起来也比 Graphite 方便太多。(缺点是官网文档都没更新,要自己查存储的字段,猜它有什么用)

Grafana 能配出非常漂亮的监控仪表板,就是配的过程非常痛苦,不做非常详细的笔记的话过几天又忘光了,于是有了这篇东西。


【前提】

【注意】

吞吐率和响应时间图表只计算成功的请求(失败的通常没意义,超时失败的能在表格里看到数量),结果可能会跟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.png

Grafana + Influxdb + Telegraf性能监控平台

[收集数据]

Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 InfluxDB 数据库。
Telegraf 具有内存占用小的特点,通过插件系统开发人员可轻松添加支持其他服务的扩展。

[存储数据]

InfluxDB是一个开源数据库别名时序数据库,针对时间序列数据的快速,高可用性存储和检索进行了优化。 InfluxDB非常适合运营监控,应用指标和实时分析。

[展示数据]

Grafana 是纯 Javascript 开发的前端工具,用于访问InfluxDB,自定义报表、显示图表等。

面板(Dashboard)用别人写好面板直接导入
image image

然后从别人编辑好面板复制https://grafana.com/dashboards/928ID到上面

image

3).最后看到一切都ok的图表,是不是很happy。

第一张:

image

第二张:

image
上一篇下一篇

猜你喜欢

热点阅读