前言



zabbix是一种类似于cacti 及nagios的;可通过web界面,提供可视化;提供分布式的系统监视;网络监控功能的企业级的开源的监控方案。然而,它的web的可视化有一个缺点就是不够酷炫。

Grafana是一个用Javascript写的开源的(Dashboard)可视化面板,其不仅功能齐全,还有着丰富的图表和漂亮的布局展示,并且支持Graphite、elasticsearch、zabbix等的数据可视化的实现,可以给你的数据换个皮肤,使你的数据展示更加直观和漂亮。
下面,要介绍的是Grafana+Zabbix数据可视化。

zabbix搭建可参考下列链接:

如已有zabbix或其他服务,可直接跳过前三步,从第四步开始。




Grafana+Zabbix实现数据可视化操作



一、环境准备


首先要保证zabbix-server和与agent的网络要联通,如果跨机房等可使用VPN,如果是同一局域网可关闭防火墙也可配置规则

下面由于是内网,采用关闭防火墙的方式


【1】防火墙

centos7操作:

systemctl stop firewalld 
systemctl disable firewalld

更改selinux:
vim /etc/selinux/config
SELINUX=disabled

关闭selinux(为了避免错误):
setenforce 0

centos6操作:

/etc/init.d/iptables stop
chkconfig iptables off


【2】同步时间


zabbix-server与agent间要时间同步


安装并同步时间(可自建内网ntp时间服务器):

yum -y install ntp
ntpdate cn.pool.ntp.org


【3】添加解析(为了方便操作,可选)

echo “192.168.100.2 zabbix-server ” >>/etc/hosts
echo “192.168.100.3 zabbix-agent” >> /etc/hosts
scp /etc/hosts zabbix-agent:/etc/hosts


【4】推公钥(为了方便操作,可选)


zabbix-server向zabbix-agent端推公钥


一般选择第二种方法.

<1>互信操作:

ssh-keygen   -f  /root/.ssh/id_rsa  -N  " "             创建密钥

mv  /root/.ssh/{id_rsa.pub,authorized_keys}             改变密钥文件名,authorized_keys为固定格式,可被系统识别

scp   -r  /root/.ssh  zabbix-agent:/root/               推送密钥到agent端

<2>推公钥:

ssh-keygen                                              创建密钥

ssh-copy-id root@zabbix-agent                           推送密钥到agent端



二、zabbix安装


可用源码包安装,本文使用yum安装

可从官网下载安装包或yum源,选择自己需要的版本:
https://www.zabbix.com/download?zabbix=3.4&os_distribution=centos&os_version=6&db=MySQL

例如:

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_分布式监控数据的可视化部署


【1】安装Zabbix下载源


根据zabbix官方提供的下载源及命令,下载安装即可(server和agent端皆此操作)

rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_分布式监控数据的可视化部署_02

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_配置文件_03



【2】zabbix-server操作


<1>zabbix-server相关软件安装:

yum -y install zabbix-server zabbix-server-mysql zabbix-web-mysql zabbix-get  httpd

<2>数据库安装(mysql可换为mariadb;也可选择编译安装): 

yum -y install mysql mysql-server mysql-devel   或   mariadb mariadb-server


【3】数据库配置


<1>启动并设置mysql密码

systemctl restart mariadb 
systemctl enable mariadb 

mysqladmin -uroot password ‘密码’


<2>为zabbix-server创库并授权

mysql -uroot -p123456                                                               登陆数据库
create database zabbix character set utf8;                                          创建数据库,设定编码
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';        创建授权用户
flush privileges;                                                                   刷新授权表,虽然不需要,但可避免一些问题      
use zabbix;                                                                         测试,数据库是否创建

也可直接创建,暂不设置密码

create database zabbix character set utf8;


<3>启动httpd和mysql,并设置开机启动

systemctl restart mariadb.service 
systemctl restart httpd.service 
systemctl enable mariadb.service 
systemctl enable httpd.service


<4>执行zabbix官方提供是sql语句(其在安装基础依赖包时,已在指定位置,通常为/usr/share/doc/zabbix-server-mysql下)

cd /usr/share/doc/zabbix-server-mysql-4.0.2
gzip -d  create.sql.gz
mysql -uroot zabbix < create.sql              (也可用其他方法导入,目的是将此sql语句导入zabbix库中)

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_mysql_04

成功后,zabbix库中出现大量表

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_分布式监控数据的可视化部署_05



【4】zabbix-server配置文件配置


配置文件位置(由于是yum安装,配置文件位置: /etc/zabbix/zabbix_server.conf)

配置完,启动zabbix-server
systemctl start zabbix-server
systemctl enable zabbix-server


如有报错,请检查配置文件

文件中的配置,要按照需求来

必要配置:
DBHost
DBName
DBUser
DBPassword

egrep -v "^$|^#" zabbix_server.conf

LogFile=/tmp/zabbix_server.log                                log日志的位置,一般默认即可
DBHost=localhost                                              zabbix_server授权时使用ip或名称,如授权时使用localhost
DBName=zabbix                                                 zabbix_server创建并授权的数据库的名称
DBUser=zabbix                                                 授权的数据库的用户
DBPassword=zabbix                                             授权的数据库的密码
DBSocket=/tmp/mysql.sock                                      MySQL的sock的位置,如数据库是编译安装,一般默认即可,如yum安装,请确认位置;不使用注释即可
DBPort=3306                                                   使用的mysql数据库的端口;无特殊要求,注释即可,默认3306
StartPollers=30                                               zabbix-server的进程数,设置多少取决于服务器的性能和监控的数量,主要看内存大小
StartDiscoverers=5                                            zabbix提示进程繁忙时可修改此参数,最大可达250,但一般1-5左右,值越大越消耗cpu性能
CacheSize=8G                                                  zabbix-server可用的缓存,用于存储host,item,trigger数据
Timeout=4                                                     zabbix-server的检测超时时间,单位为秒
FpingLocation=/usr/local/sbin/fping                           安装的fping路径 
LogSlowQueries=3000                                           多慢的数据库查询将会被记录,单位为毫秒,0表示不记录慢查询。只有在DebugLevel=3时,这个配置才有效


【5】zabbix-agent操作


zabbix-agent进行安装

yum -y install zabbix-agent


【6】zabbix-agent配置文件配置


关于agent的配置,主要分为两种情况:
zabbix-server/proxy主机的agent
被监控主机的agent

原则:
zabbix-server/proxy主机的agent的配置文件的IP及端口指向自己
zabbix-agent端的配置文件指向zabbix-server或zabbix-proxy的IP及10051端口

必要配置:
Server
ServerActive
Hostname

egrep -v "^$|^#" /etc/zabbix/zabbix_agentd.conf

PidFile=/tmp/zabbix_agentd.pid                                     zabbix-agent的pid文件的位置,默认即可
LogFile=/var/log/zabbix/zabbix_agentd.log                          zabbix-agent的log日志的位置,一般默认即可
EnableRemoteCommands=0                                             关闭远程命令(1:开启;0:关闭),开启后可设置触发条件,触发远程命令动作,重启服务
Server=192.168.92.128                                              zabbix-agent指向的zabbix-server/proxy的IP地址,本文指向的是zabbix-proxy
StartAgents=8                                                      zabbix-agent的进程数
ServerActive=192.168.92.128:10051                                  zabbix-agent指向的zabbix-server/proxy的IP地址及端口,本文指向的是zabbix-proxy的
Hostname=zabbix agent01                                            该zabbix-agent端的名字,要与zabbix-server的web界面,配置的主机名称相同
Timeout=30                                                         zabbix-agent的检测超时时间,单位秒
Include=/etc/zabbix/zabbix_agentd.d/                               启动自定义的key    自定义脚本存放位置
UnsafeUserParameters=1                                             启动自定义的key,开启后可使用自定义的脚本(如不使用请使用默认)

如果是zabbix-server/proxy主机的agent配置,则
Server=127.0.0.1
ServerActive=127.0.0.1:10051

配置完,启动zabbix-agent
systemctl start zabbix-agent
systemctl enable zabbix-agent



【7】修改时区


设置zabbix时区为所需要时区,才会显示正确的时间
例如中国一般填写 Asia/Shanghai


vim   /etc/php.ini
date.timezone = Asia/Shanghai

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_配置文件_06

vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai

三、zabbix的web界面设置及主机添加

请查看下列链接:




四、Grafana安装


Grafana应安装在zabbix-server服务器上

Grafana官网链接,内含各种官方文档(包括仪表盘设置等):
http://docs.grafana.org/installation/rpm/


【1】使用官方安装包安装


wget https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm 
sudo yum -y localinstall grafana-5.4.2-1.x86_64.rpm


【2】启动grafana,并设置开机启动


systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
systemctl enable grafana-server


【3】安装服务端图像呈现组件


服务器端图像是一项可选功能


yum -y install fontconfig freetype* urw-fonts


【4】访问Grafana


启动Grafana后,在浏览器中输入http://ip:3000,可访问(3000为默认端口,可修改)

默认用户名:admin,密码:admin


grafana 获取zabbix监控设备数量 zabbix grafana监控面板_分布式监控数据的可视化部署_07

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_分布式监控数据的可视化部署_08



【5】Grafana插件安装


<1>获取可用插件列表

grafana-cli plugins list-remote

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_mysql_09

<2>安装zabbix插件

grafana-cli plugins list-remote |grep zabbix
grafana-cli plugins install alexanderzobnin-zabbix-app

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_分布式监控数据的可视化部署_10

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_分布式监控数据的可视化部署_11

<3>重启grafana,并再次访问

systemctl restart grafana-server

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_mysql_12



【6】Grafana的zabbix配置


<1>点击zabbix图标,启用zabbix插件

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_mysql_13



<2>点击Enable

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_mysql_14



<3>点击Add data source ,添加数据源

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_mysql_15



<4>点击zabbix,添加zabbix插件的数据源

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_分布式监控数据的可视化部署_16



<5>配置数据源


Name为自定义,要可区分
URL为zabbix的API地址,默认为:http://zabbix-server的IP/zabbix/api_jsonrpc.php Username,Password为zabbix的用户及对应的密码(可在zabbix上设置用户)

其余的默认即可


grafana 获取zabbix监控设备数量 zabbix grafana监控面板_配置文件_17



<6>点击 Save&Test ,进行确认

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_分布式监控数据的可视化部署_18



<7>进行查看

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_配置文件_19

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_mysql_20

grafana 获取zabbix监控设备数量 zabbix grafana监控面板_配置文件_21