随着业务的越发复杂,对软件系统的要求越来越高,这意味着我们需要随时掌控系统的运行情况。因此,对系统的实时监控以及可视化展示,就成了基础架构的必须能力。
Grafana官方网站
https://grafana.com/
Grafana介绍
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:
1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
2、数据源:zabbix,Graphite,InfluxDB,OpenTSDB,Elasticsearch,CloudWatch和KairosDB等;
3、通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
下载安装
本文这次介绍 zabbix与 Grafana结合使用
首先 先安装好zabbix 配置完成后开始安装Grafana
zabbix官网
https://www.zabbix.com/
Grafana官网
https://grafana.com/
zabbix安装这次不再赘述 没安装的可以看我之前的博客
获取Grafana
访问Grafana下载页面https://grafana.com/grafana/download在这里可获取该软件的全版本。
可以按照使用需求,进行下载相应版本。
安装Grafana
系统环境说明
[root@centos /root]
#cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@centos /root]
#uname -r
3.10.0-862.el7.x86_64
[root@centos /root]
#systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@centos /root]
#sestatus
SELinux status: disabled
安装Grafana
在这次安装中,我们使用的是grafana-5.2.4版本。不同版本之间功能存在着一定的差距。
[root@centos /root]
#wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.4-1.x86_64.rpm
[root@centos /root]
#yum install initscripts fontconfig #安装依赖
grafana-5.2.4-1.x86_64.rpm
[root@centos /root]
#yum localinstall grafana-5.2.4-1.x86_64.rpm
启动Grafana
[root@centos /root]
#systemctl start grafana-server.service
[root@centos /root]
#systemctl enable grafana-server.service
检查监听端口
Grafana默认监听端口为3000,可以通过修改配置文件(/etc/grafana/grafana.ini)对其做定制化配置。
[root@centos /root]
#netstat -lntup |grep grafana
tcp6 0 0 :::3000 :::* LISTEN 1333/grafana-server
Grafana的使用
访问界面
通过流量器访问 http://ip:3000 即可访问grafana页面,初始用户名与密码均为admin,可在登陆是修改默认密码。
登陆成功之后可以先进行创建第一个数据源,以及第一个展示面板。
Grafana For Zabbix
使用Zabbix收集数据,Grafana展示图形。Grafana默认没有zabbix作为数据源,需要给zabbix安装一个插件,然后再添加进Grafana即可。
注:本次使用zabbix版本为3.4.14。
[root@centos /root]
#zabbix_server -V
zabbix_server (Zabbix) 3.4.14
获取zabbix 插件
通过grafana-cli plugins list-remote命令 可以获取到grafana的插件列表。
[root@centos /root]
#grafana-cli plugins list-remote |grep zabbix
id: alexanderzobnin-zabbix-app version: 3.9.1
安装插件
[root@centos /root]
#grafana-cli plugins install alexanderzobnin-zabbix-app
installing alexanderzobnin-zabbix-app @ 3.9.1
from url: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/3.9.1/download
into: /var/lib/grafana/plugins
✔ Installed alexanderzobnin-zabbix-app successfully
Restart grafana after installing plugins . <service grafana-server restart>
出现√即为安装成功。在安装完成后务必重启Grafana
[root@centos /root]
#systemctl restart grafana-server.service
配置zabbix源
登陆grafana页面,开启zabbix插件。
点击enable开启插件。
添加zabbix数据源
相关配置项目说明:
配置项目 | 说明 |
---|---|
Name | 给数据源起一个名字。 |
Default | 选择默认,意味着数据源将预先选定为新的面板。 |
Type | 选择数据源的类型。 |
Url | 这里的Url是http协议,地址和端口是zabbix-web提供的接口。或为zabbix的api地址。 |
Access | 访问代理,这里选择了proxy表示Grfana通过后端访问,还有direct值表示从浏览器直接访问目录。 |
Username | 输入zabbix的用户名,需要进行认证,一般使用管理员。 |
Password | 输入zabbix用户的密码。 |
代理(proxy)访问意味着的Grafana后端将从浏览器代理所有请求,并将它们发送到数据源。这样是有用的,因为它可以消除CORS(交叉来源站点资源)的问题,如消除需要传播到数据源到浏览器的身份验证详细信息。但还支持直接(direct)访问,因为在某些情况下可能用来访问直接根据用例和拓扑结构的Grafana、 用户和数据源的数据源。
以上信息都填写完成之后点击Save & Test,出现Success就表示成功了,就可以去利用zabbix中数据添加图形了。
下面先引入zabbix自带的dashboard,点击import。
查看zabbix dashboard页面
使用grafana的好处是对图形的自定义更加简便,通过变更不同的json文件,即可在数据源中查找到想要的结果,然后绘制出图。
Grafana相关补充
Grafana插件安装目录
在Linux系统上,grafana-cli会假定grafana插件目录是/var/lib/grafana/plugins。通过指定-pluginsDir标志可以覆盖grafana-cli将要运行的目录。在Windows系统中,必须为每个呼叫指定此参数
Grafana-cli命令说明
安装插件最简单的方法是使用与grafana捆绑在一起的CLI工具grafana-cli。在修改插件之后发生任何修改之前,grafana服务器需要重新启动。
列出可用的插件
#grafana-cli plugins list-remote
安装最新版本的插件
#grafana-cli plugins install <plugin-id>
安装特定版本的插件
#grafana-cli plugins install <plugin-id> <version>
列出安装的插件
#grafana-cli plugins ls
更新所有安装的插件
#grafana-cli plugins update-all
更新一个插件
#grafana-cli plugins update <plugin-id>
删除一个插件
#grafana-cli plugins remove <plugin-id>