随着业务的越发复杂,对软件系统的要求越来越高,这意味着我们需要随时掌控系统的运行情况。因此,对系统的实时监控以及可视化展示,就成了基础架构的必须能力。
Grafana是一款可视化工具,有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,大多使用在时序数据的监控方面,如同Kibana类似。
Grafana的UI更加灵活,有丰富的插件,功能强大。
官方地址:grafana.com/grafana
一、Grafana 简介Grafana的套路基本上跟kibana差不多,都是根据查询条件设置聚合规则,在合适的图表上进行展示,多个图表共同组建成一个dashboard,熟悉kibana的用户应该可以非常容易上手。
另外Grafana的可视化功能比kibana强得多,后面逐步会介绍到,而且4以上版本将集成报警功能。
Grafana 的主要特点
1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
2、数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
3、通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
二、Grafana下载安装根据自己的系统版本和配置,下载对应的包,官方提供了如下说明,可直接按照说明进行下载,本文以操作系统RedHat & CentOS为例,介绍下Grafana最新版本的安装。
三、Grafana启动 方式一 Start Grafana by running:sudo service grafana-server startsudo update-rc.d grafana-server defaults //设置开机启动(可选)复制代码 方式二 To start the service using systemd: systemctl daemon-reloadsystemctl start grafana-serversystemctl status grafana-server sudo systemctl enable grafana-server.service //设置开机启动复制代码
启动服务,打开浏览器,输入IP+端口,3000为Grafana 的默认侦听端口。
系统默认用户名和密码为admin/admin,第一次登陆系统会要求修改密码,修改密码后登陆,界面显示如下:
默认情况下,Grafana 的配置存储于sqlite3中,如果你想使用其他存储后端,如mysql,postgresql等,请参考官方文档配置::docs.grafana.org/installatio…
Grafana 的几个基本构成和基本概念参考官方文档: docs.grafana.org/guides/basi…
四、Grafana使用1.添加数据源 先要明确一点,Grafana 只是一个dashboard(4版本开始将引入报警功能),负责把数据库中的数据进行可视化展示,本身并不存储任何数据,
另外某些查询和聚合使用的是数据库本身提供的功能,需要对应的数据库去支持。因此不代表你换了一个数据库后端就一定能展示相同的图形。
Grafana 目前支持的数据库有: Graphite, Prometheus, Elasticsearch, InfluxDB, OpenTSDB, AWS Cloudwatch。未来可能会有更多的数据库的支持加入,请关注更新。
也可以使用第三方插件引入支持。
这里使用Elasticsearch作为数据库的来源。首先进入数据源的设置页面,点击左上角的图标,选择Data Sources-Add data source:
进入数据源的设置,例如我们要从logstash-YYYY.MM.DD这些index中读取数据,就像kibana默认的index那样配置即可:
生成图表
数据源配置好之后,就可以开始可视化的第一步了。这一步相对较为简单,只要熟悉ES的查询语法就可以轻松写出来。
想创建图表,首先得有dashboard,new一个dashboard出来,然后后添加Panel。
简单解释一下这些配置:
query: 对应的就是kibana上面的查询条件,先把想要展示的数据全部select出来,然后进行聚合或筛选,Alias是给这个查询起个别名,可用于图例说明
metric: 这个就是关键的指标量的,到底展示的是什么东西。这里展示的是GROUP BY之后对value求平均值
Group by: 对应elasticsearch的bucket,按照type_instance分桶
整个查询下来大致相当于SQL中的
SELECT avg(val) WHERE query_string('ac:$applicationName AND sn:$serviceName') GROUP BY sn GROUP BY Date_Histogram(tb)复制代码注:其中$applicationName[应用名称]和$serviceName[服务名称]使用的是模版变量功能。
最关键的地方在Query这个配置,这里就是定义怎么获取到$serviceName这个变量的所有可选值,每个数据库的语法不一样,
比如Elasticsearch的Template语法在这里:docs.grafana.org/datasources… ,如果你使用的是其他数据源,那么查询对应数据源的模板语法即可。
以上即为Grafana的安装及使用简介,更多使用方式,请参考这里:docs.grafana.org/guides/gett…
转载于:https://juejin.im/post/5d26fc66f265da1b8e70c9e6