Zabbix 监控结合 Grafana 绘图

一.项目实验拓扑图(使用亿图专家绘图);
Zabbix 监控结合 Grafana 绘图_第1张图片
二.项目实验思路及重点内容(步骤及重难知
识点);
Zabbix 监控结合 Grafana 绘图_第2张图片

实施步骤:
步骤 说明
第一步 1.安装 zabbix server 服务端;
第二步 2.配置 zabbix 服务的 web 页面并做简单优化;
第三步 3.实现监控 server.zabbix.com 端的 OS 以及 mysql、httpd;
第四步 4.安装及配置 agent.zabbix.com 被监控端(FTP 服务器);
第五步 5.登录 zabbix 的 web 界面,进行添加 agent 主机,验证监控效果;
第六步 6.配置监控 Win2k8dc1 主机,验证效果;
第七步 7.自定义监控项,创建项目、触发器、图形,验证监控效果;
第八步 8.实现邮件报警;
第九步 9.安装并配置 Grafana;
第十步 10.配置 Grafana 的 web 界面,呈现效果;
重点、难点:
重点一 1. Zabbix 简介
Zabbix 是一个企业级的开源分布式监控解决方案,由 C 语言编写而成的底层架
构(server 端和 agent 端),由一个国外的团队持续维护更新,软件可以自由下
载使用,运作团队靠提供收费的技术支持赢利。
官方网站:http://www.zabbix.com
Zabbix 通过 C/S 模式采集数据,通过 B/S 模式在 web 端展示和配置。
被监控端:主机通过安装 agent 方式采集数据,网络设备通过 SNMP 方式采集
数据
Server 端:通过收集 SNMP 和 agent 发送的数据,写入 MySQL 数据库,再通过
php+apache 在 web 前端展示。

  1. Zabbix 运行条件:
    Server:
    Zabbix Server 需运行在 LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件
    要求低
    Agent:
    目前已有的 agent 基本支持市面常见的 OS,包含 Linux、HPUX、Solaris、Sun、
    windows 等
    SNMP:
    支持各类常见的网络设备
  2. Zabbix 功能
    具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、
    数据库性能监控、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制)
    支持自动发现网络设备和服务器,支持分布式,能集中展示、管理分布式的监控
    点,扩展性强,server 提供通用接口,可以自己开发完善各类监控。
    重点二 1. 优劣势
    优点:
    开源,无软件成本投入;
    Server 对设备性能要求低(实际测试环境:虚拟机 Redhat EL AS5,2GCPU 1G
    内存,监控 5 台设备,CPU 使用率基本保持在 10%以下,内存剩余 400M 以上);
    支持设备多;
    支持分布式集中管理;
    开放式接口,扩展性强;
    当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端
    主动从 server 端去下载需要监控的 item 然后取数据上传到 server 端。这种方式
    对服务器的负载比较小。
    缺点:
    无厂家支持,出现问题解决比较麻烦
    需在被监控主机上安装 agent,所有数据都存在数据库里,产生的数据据很大,
    瓶颈主要在数据库。
    重点三 1.zabbix 的监控原理:Zabbix 监控结合 Grafana 绘图_第3张图片
    组件说明:
    1)zabbix server:负责接收 agent 发送的报告信息的核心组件,所有配置、统计
    数据及操作数据都由它组织进行;
    2)database storage:专用于存储所有配置信息,以及由 zabbix 收集的数据;
    3)web interface:zabbix 的 GUI 接口;
    4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理 server 收集部
    分数据转发到 server,可以减轻 server 的压力;
    5)agent:部署在被监控的主机上,负责收集主机本地数据如 cpu、内存、数据
    库等数据发往 server 端或 proxy 端;
    监控流程:
    agentd 需要安装到被监控的主机上,它负责定期收集各项数据,并发送到
    zabbix server 端,zabbix server 将数据存储到数据库中,zabbix web 根据数据在前
    端进行展现和绘图。这里 agentd 收集数据分为主动和被动两种模式:
    主动:agent 请求 server 获取主动的监控项列表,并主动将监控项内需要检测
    的数据提交给 server/proxy
    被动:server 向 agent 请求获取监控项的数据,agent 返回数据。
    客户端守护进程:
    此进程收集客户端数据,例如 cpu 负载、内存、硬盘使用情况等。
    zabbix_get
    zabbix 工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户
    端信息的命令。通常用户排错。例如在 server 端获取不到客户端的内存数据,我
    们可以使用 zabbix_get 获取客户端的内容的方式来做故障排查。
    zabbix_sender
    zabbix 工具,用于发送数据给 server 或者 proxy,通常用于耗时比较长的检查。
    很多检查非常耗时间,导致 zabbix 超时。于是我们在脚本执行完毕之后,使用
    sender 主动提交数据。
    zabbix_server
    zabbix 服 务 端 守 护 进 程 。 zabbix_agentd 、 zabbix_get 、 zabbix_sender 、
    zabbix_proxy、zabbix_java_gateway 的数据最终都是提交到 server
    备注:当然不是数据都是主动提交给 zabbix_server,也有的是 server 主动去取数
    据。
    zabbix_proxy
    zabbix 代理守护进程。功能类似 server,唯一不同的是它只是一个中转站,它
    需要把收集到的数据提交/被提交到 server 里。为什么要用代理?代理是做什么
    的?卖个关子,请继续关注运维生存时间 zabbix 教程系列。
    zabbix_java_gateway
    zabbix2.0 之后引入的一个功能。顾名思义:Java 网关,类似 agentd,但是只
    用于 Java 方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取
    数据。它的数据最终会给到 server 或者 proxy。
    重点四 扩展:zabbix 的监控架构
    在实际监控架构中,zabbix 根据网络环境、监控规模等 分了三种架构:
    server-client 、master-node-client、server-proxy-client 三种 。
    1、server-client 架构
    也是 zabbix 的最简单的架构,监控机和被监控机之间不经过任何代理 ,直接
    由 zabbix server 和 zabbix agentd 之间进行数据交互。适用于网络比较简单,设备
    比较少的监控环境 。
    2、server-proxy-client 架构
    其中 proxy 是 server、client 之间沟通的一个桥梁,proxy 本身没有前端,而且
    其本身并不存放数据,只是将 agentd 发来的数据暂时存放,而后再提交给
    server 。该架构经常是和 master-node-client 架构做比较的架构 ,一般适用于跨
    机房、跨网络的中型网络架构的监控。
    3、master-node-client 架构
    该架构是 zabbix 最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型
    环境 。每个 node 同时也是一个 server 端,node 下面可以接 proxy,也可以直接
    接 client 。node 有自已的配置文件和数据库,其要做的是将配置信息和监控数
    据向 master 同步,master 的故障或损坏对 node 其下架构的完整性。
    重点五 Grafana 简介:
    Grafana 是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,
    功能齐全的度量仪表盘和图形编辑器,支持 Graphite、zabbix、InfluxDB、
    Prometheus 和 OpenTSDB 作为数据源。以 InfluxDB(由 go 语言编写,是一个开
    源,分布式,时间序列,事件,可度量和无外部依赖的数据库)作为底层数据库;
    Grafana 主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和
    夜间模式;多个数据源。

三.项目实验步骤(操作截图或者操作命令)

1.安装 zabbix server 服务端;
[root@server ~]# ip a ##配置网络,确保可以上网
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
 link/ether 00:0c:29:4f:c9:00 brd ff:ff:ff:ff:ff:ff
 inet 192.168.100.101/24 brd 192.168.100.255 scope global eth0
 valid_lft forever preferred_lft forever
[root@server ~]# vi /etc/hosts
 192.168.100.101 server.zabbix.com
 192.168.100.152 agent.zabbix.com
 192.168.100.153 win2k8dc1
:wq
[root@server ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo 
http://mirrors.aliyun.com/repo/Centos-7.repo
[root@server ~]# yum -y install net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel 
libevent libevent libevent-devel curl curl-devel mysql-devel snmp perl-DBI php-xml php-bcmath 
php-mbstring php-ldap php-xmlrpc httpd php php-mysql php-common php-gd php-odbc
php-pear gcc* net-snmp libssh2 libssh2-devel mariadb-server mariadb mariadb-devel ntpdate
##安装 lamp 和依赖包,使用默认的 centos 7 中的默认 yun 源
[root@server ~]# ntpdate ntp1.aliyun.com
10 Sep 09:08:09 ntpdate[1225]: adjust time server 120.25.115.20 offset -0.000095 sec
[root@server ~]# echo "ntpdate ntp1.aliyun.com" >>/etc/rc.local 
[root@server ~]# chmod +x /etc/rc.local
[root@server ~]# systemctl start mariadb
[root@server ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to 
/usr/lib/systemd/system/mariadb.service.
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to 
/usr/lib/systemd/system/httpd.service.
[root@server ~]# mysqladmin -u root password
123123
123123
[root@server ~]# wget -O zabbix-3.4.2.tar.gz 
http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.2/zabbix-3.4.2.tar.gz
/download ##下载软件包,上传也可
[root@server ~]# tar zxvf zabbix-3.4.2.tar.gz 
[root@server ~]# cd zabbix-3.4.2
[root@server ~]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent 
--with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
[root@server ~]# make &&make install
[root@server ~]# mysql -uroot -p123123 ##登陆数据库创建保存监控模板的数据库,并
导入数据模板,以及授权 zabbix 用户连接数据库;
create database if not exists zabbix default character set utf8 collate utf8_general_ci;
use zabbix;
source /root/zabbix-3.4.2/database/mysql/schema.sql;
source /root/zabbix-3.4.2/database/mysql/images.sql;
source /root/zabbix-3.4.2/database/mysql/data.sql;
grant all on zabbix.* to zabbix@'192.168.100.101' identified by 'zabbix';
flush privileges;
show grants for zabbix@'192.168.100.101';
exit
[root@server ~]# groupadd zabbix
[root@server ~]# useradd -r -g zabbix zabbix
[root@server ~]# mkdir /usr/local/zabbix/logs
[root@server ~]# chown zabbix:zabbix /usr/local/zabbix/ -R
[root@server ~]# vi /usr/local/zabbix/etc/zabbix_server.conf
:%g/^#/d
:%g/^$/d
 LogFile=/usr/local/zabbix/logs/zabbix_server.log
 PidFile=/tmp/zabbix_server.pid
 DBHost=192.168.100.101
 DBName=zabbix
 DBUser=zabbix
 DBPassword=zabbix
 DBSocket=/var/lib/mysql/mysql.sock
 Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
:wq
[root@server ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
:%g/^#/d
:%g/^$/d
 PidFile=/tmp/zabbix_agentd.pid
 Server=127.0.0.1,192.168.100.101
 ServerActive=192.168.100.101
 Hostname=server.zabbix.com
 LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
:wq
解释:
 PidFile=/tmp/zabbix_agentd.pid ##运行的 PID 文件
 Server=127.0.0.1,192.168.100.101 ##输入 zabbix_server 主机的 ip 地址
 ServerActive=192.168.100.101 ##输入 agent 主机采集到数据发送到的 server 端
 Hostname=server.zabbix.com ##输入本机的主机名
 LogFile=/usr/local/zabbix/logs/zabbix_agentd.log ##指定日志文件
 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf ##开启附加配置文件目录
[root@server ~]# /usr/local/zabbix/sbin/zabbix_server
[root@server ~]# netstat -utpln |grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 
29079/zabbix_server
[root@server ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@server ~]# netstat -utpln |grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 
29148/zabbix_agentd
[root@server ~]# mv /root/zabbix-3.4.2/frontends/php/ /var/www/html/zabbix
[root@server ~]# chown -R apache:apache /var/www/html/zabbix/
[root@server ~]# vi /etc/php.ini
 878 date.timezone = Asia/Shanghai
 384 max_execution_time = 300
 394 max_input_time = 300
 672 post_max_size = 32M
 405 memory_limit = 128M
 854 extension=bcmath.so
:wq
解释:
 878 date.timezone = Asia/Shanghai ##时区
 384 max_execution_time = 300 ##单位秒,通过 POST、GET 以及 PUT 方式接
收数据时间进行限制
 394 max_input_time = 300 ##php 程序上传文件解析数据时的时间限制
 672 post_max_size = 32M ##POST 方式请求数据所允许的最大大小
 405 memory_limit = 128M ##设置 php 程序的内存限制
 854 extension=bcmath.so ##加载 zabbix 程序需要加载的扩展模块 bcmath.so
[root@server ~]# systemctl restart httpd

2.配置 zabbix 服务的 web 页面并做简单优化;

访问安装 http://192.168.100.101/zabbix/,默认用户名 admin 密码 zabbix
Zabbix 监控结合 Grafana 绘图_第4张图片
Zabbix 监控结合 Grafana 绘图_第5张图片
Zabbix 监控结合 Grafana 绘图_第6张图片
Zabbix 监控结合 Grafana 绘图_第7张图片
Zabbix 监控结合 Grafana 绘图_第8张图片
Zabbix 监控结合 Grafana 绘图_第9张图片
Zabbix 监控结合 Grafana 绘图_第10张图片
Zabbix 监控结合 Grafana 绘图_第11张图片
Zabbix 监控结合 Grafana 绘图_第12张图片
Zabbix 监控结合 Grafana 绘图_第13张图片

安装完成,设置显示字体为中文;
解决 zabbix 显示图像下边文字乱码情况:
Zabbix 监控结合 Grafana 绘图
上传字符集文件到此目录下;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图_第14张图片

3.实现监控 server.zabbix.com 端的 OS 以及 mysql、httpd;

4Zabbix 监控结合 Grafana 绘图_第15张图片
Zabbix 监控结合 Grafana 绘图_第16张图片
Zabbix 监控结合 Grafana 绘图_第17张图片

勾选以下三个监控模板,点击选择按钮;
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图_第18张图片
Zabbix 监控结合 Grafana 绘图_第19张图片
在上个界面会显示此主机的监控项,此主机的图形,可以自行跟据监控项进行创建图形;
Zabbix 监控结合 Grafana 绘图_第20张图片
Zabbix 监控结合 Grafana 绘图_第21张图片
Zabbix 监控结合 Grafana 绘图_第22张图片
选择监控项,点击选择;
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图_第23张图片
查看监控主机的图形;
Zabbix 监控结合 Grafana 绘图_第24张图片
但是意外出现了,关于 Mysql 数据库的所有监控项没有图形,如图所示;
Zabbix 监控结合 Grafana 绘图_第25张图片
经过查看,问题如下图,监控 Mysql 服务器的键值不使用;
Zabbix 监控结合 Grafana 绘图_第26张图片
Zabbix 监控结合 Grafana 绘图_第27张图片
解决方案如下;
设置监控失效的键值,打开 zabbix_server 服务器,同时在此也是被监控端;

[root@server ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid
Server=127.0.0.1,192.168.100.101
ServerActive=192.168.100.101
Hostname=server.zabbix.com
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/usr/local/zabbix/etc/chk_mysql.sh $1
UserParameter=mysql.ping,mysqladmin -uroot -p123123 -P3306 -h192.168.100.101 ping | grep 
-c alive
:wq
内容解释:
Server=192.168.100.151,127.0.0.1 //指定 zabbix 服务器的地址
ServerActive=192.168.100.101 //指定 agent 采集到数据之后发送给 server 端
Hostname=server.zabbix.com //指定 agent 端的主机名、server 端必须需要解析,注意:
在 web 界面添加被监控主机时,必须写此主机名;
UnsafeUserParameters=1 //允许所有字符的参数传递给用户定义的参数。
UserParameter=mysql.version,mysql -V //定义键值 mysql.version,以及键值的值 mysql -V
UserParameter=mysql.status[*],/usr/local/zabbix/etc/chk_mysql.sh $1 // 定 义 键 值
mysql.status[*]
UserParameter=mysql.ping,mysqladmin -uroot -p123123 -P3306 -h192.168.100.101 ping | grep 
-c alive ///定义键值 mysql.ping,指定 chk_mysql.sh 脚本,使用此脚本检查 mysql 的运
行状态,使用 mysqladmin 命令指定 agent 端的数据库连接用户密码 ip 地址,注意保证
mysqladmin 命令的链接;
[root@server ~]# vi /usr/local/zabbix/etc/chk_mysql.sh ##编写检查 mysql 状态的脚本,
在脚本中指定 agent 端的 mysql 的 ip 地址,连接的用户名密码等
#!/bin/bash
#-------------------------------------------------------------------------------
#FileName: check_mysql.sh
#Revision: 1.0
#Date: 2015/06/09
#Author: DengYun
#Email: [email protected]
#Website: www.ttlsa.com
#Description: 
#Notes: ~
#-------------------------------------------------------------------------------
#Copyright: 2015 (c) DengYun
#License: GPL
#用户名
MYSQL_USER='root'
#密码
MYSQL_PWD='123123'
#主机地址/IP
MYSQL_HOST='192.168.100.101'
#端口
MYSQL_PORT='3306'
#数据连接
MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} 
-P${MYSQL_PORT}"
#参数是否正确
if [ $# -ne "1" ];then 
 echo "arg error!" 
fi 
#获取数据
case $1 in 
 Uptime) 
 result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"` 
 echo $result 
 ;; 
 Com_update) 
 result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3` 
 echo $result 
 ;; 
 Slow_queries) 
 result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"` 
 echo $result 
 ;; 
 Com_select) 
 result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3` 
 echo $result 
 ;; 
 Com_rollback) 
 result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3` 
 echo $result 
 ;; 
 Questions) 
 result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"` 
 echo $result 
 ;; 
 Com_insert) 
 result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3` 
 echo $result 
 ;; 
 Com_delete) 
 result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3` 
 echo $result 
 ;; 
 Com_commit) 
 result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3` 
 echo $result
 ;; 
 Bytes_sent) 
 result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` 
 echo $result 
 ;; 
 Bytes_received) 
 result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3` 
 echo $result 
 ;; 
 Com_begin) 
 result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3` 
 echo $result 
 ;; 

 *) 
 echo 
"Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_inser
t|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" 
 ;; 
esac
:wq
[root@server ~]# chmod 777 /usr/local/zabbix/etc/chk_mysql.sh
[root@server ~]# mysql -uroot -p123123
 grant all on *.* to 'root'@'192.168.100.101' identified by '123123';
 flush privileges;
 show grants for root@'192.168.100.101';
 exit
[root@server ~]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/ //为 zabbix 的命令做软链
接,检测 mysql 状态时会使用 zabbix_get 命令
[root@server ~]# yum -y install psmisc
[root@server ~]# killall -9 zabbix_server
[root@server ~]# killall -9 zabbix_agentd
[root@server ~]# /usr/local/zabbix/sbin/zabbix_server
[root@server ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@server ~]# netstat -utpln |grep 100
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 
29800/zabbix_agentd 
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 
29733/zabbix_server 
[root@server ~]# vi /etc/my.cnf ##禁止反向解析
[mysqld]
skip-name-resolve
[root@server ~]# systemctl restart mariadb
[root@server ~]# zabbix_get -s 192.168.100.101 -k mysql.ping ##在此可以通过 zabbix_get
命令进行获取服务器监控项的具体键值,mysql.ping 是在 zabbix_agentd.conf 配置文件中的键
值名称,通过此名称可以查看键值,通常能够获取到键值,获取监控数据就是没问题的;
1
[root@server ~]# zabbix_get -s 192.168.100.101 -k mysql.status[Com_update]
143
[root@server ~]# zabbix_get -s 192.168.100.101 -k mysql.version
mysql Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64) using readline 5.1

再次打开 zabbix 的 web 界面,验证 mysql 服务器的监控界面;
Zabbix 监控结合 Grafana 绘图_第28张图片
按照如上方法将 server.linuxfan.cn 的 httpd 服务的状态添加到 zabbix 的图形中;

4.安装及配置 zabbix_agentd 代理端(FTP 服务器);

首先安装 zabbix_agentd 端的测试服务(ftp)并且确保网络通信;
[root@agent ~]# ip a
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN 
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 inet6 ::1/128 scope host 
 valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
 link/ether 00:0c:29:a0:76:46 brd ff:ff:ff:ff:ff:ff
 inet 192.168.100.152/24 brd 192.168.100.255 scope global eth0
 inet6 fe80::20c:29ff:fea0:7646/64 scope link 
 valid_lft forever preferred_lft forever
[root@agent ~]# vi /etc/sysconfig/network
 NETWORKING=yes
 HOSTNAME=agent.zabbix.com
:wq
[root@agent ~]# vi /etc/hosts
 192.168.100.101 server.zabbix.com
 192.168.100.152 agent.zabbix.com
 192.168.100.153 win2k8dc1
:wq
[root@agent ~]# reboot
[root@agent ~]# ping server.zabbix.com -c 4
[root@agent ~]# yum -y install vsftpd
[root@agent ~]# /etc/init.d/vsftpd start
其次开始配置 agent.zabbix.com 被监控端主机的 zabbix 的 agent 代理端;
[root@agent ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo 
http://mirrors.aliyun.com/repo/Centos-7.repo
[root@agent ~]# yum -y install libxml2-devel libcurl-devel pcre-devel ntpdate
[root@agent ~]# ntpdate ntp1.aliyun.com
[root@agent ~]# wget -O zabbix-3.4.2.tar.gz 
http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.2/zabbix-3.4.2.tar.gz
/download
[root@agent ~]# tar zxvf zabbix-3.4.2.tar.gz 
[root@agent ~]# cd zabbix-3.4.2
[root@agent zabbix-3.4.2]# ./configure --prefix=/usr/local/zabbix --enable-agent --enable-ipv6 
--with-net-snmp --with-libcurl --with-libxml2
[root@agent zabbix-3.4.2]# make &&make install
[root@agent zabbix-3.4.2]# cp misc/init.d/tru64/zabbix_agentd /etc/init.d/
[root@agent zabbix-3.4.2]# vi /etc/init.d/zabbix_agentd
 24 DAEMON=/usr/local/zabbix/sbin/zabbix_agentd
:wq
[root@agent zabbix-3.4.2]# chmod +x /etc/init.d/zabbix_agentd 
[root@agent zabbix-3.4.2]# cd
[root@agent ~]# groupadd zabbix
[root@agent ~]# useradd -r -g zabbix zabbix
[root@agent ~]# chown -R zabbix:zabbix /usr/local/zabbix/
[root@agent ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
:%g/^$/d
:%g/^#/d
 LogFile=/tmp/zabbix_agentd.log
 Server=192.168.100.101
 ServerActive=192.168.100.101
 Hostname=agent.zabbix.com
:wq
[root@agent ~]# /etc/init.d/zabbix_agentd start
Zabbix agent started.
[root@agent ~]# netstat -utpln |grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 
12481/zabbix_agentd 
tcp 0 0 :::10050 :::* LISTEN 
12481/zabbix_agentd 

5.登录 zabbix 的 web 界面,进行添加 agent 主机,验证监

控效果;
Zabbix 监控结合 Grafana 绘图_第29张图片
Zabbix 监控结合 Grafana 绘图_第30张图片
Zabbix 监控结合 Grafana 绘图_第31张图片
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图_第32张图片Zabbix 监控结合 Grafana 绘图
添加 agent.zabbix.com 主机完成,默认的图形之后五个,无 ftp 服务图形,接下来手动添加
ftp 服务图形显示;
Zabbix 监控结合 Grafana 绘图_第33张图片Zabbix 监控结合 Grafana 绘图_第34张图片Zabbix 监控结合 Grafana 绘图_第35张图片Zabbix 监控结合 Grafana 绘图_第36张图片Zabbix 监控结合 Grafana 绘图_第37张图片Zabbix 监控结合 Grafana 绘图_第38张图片Zabbix 监控结合 Grafana 绘图_第39张图片

6.配置监控 Win2k8dc1 主机,验证效果;

首先配置 windows2008 主机的网络;
Zabbix 监控结合 Grafana 绘图_第40张图片Zabbix 监控结合 Grafana 绘图_第41张图片
其次用宿主机访问 zabbix 官网下载监控 windows2008 的插件;
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图_第42张图片
下载完成,将下载后的插件复制到测试主机 win2k8dc1 中,进行配置;
Zabbix 监控结合 Grafana 绘图_第43张图片Zabbix 监控结合 Grafana 绘图_第44张图片Zabbix 监控结合 Grafana 绘图_第45张图片Zabbix 监控结合 Grafana 绘图_第46张图片Zabbix 监控结合 Grafana 绘图_第47张图片Zabbix 监控结合 Grafana 绘图_第48张图片Zabbix 监控结合 Grafana 绘图_第49张图片Zabbix 监控结合 Grafana 绘图_第50张图片
C:\zabbix\bin\win64\zabbix_agentd.exe -c C:\zabbix\conf\zabbix_agentd.win.conf -i ##安装
C:\zabbix\bin\win64\zabbix_agentd.exe -c C:\zabbix\conf\zabbix_agentd.win.conf -s ##启动
C:\zabbix\bin\win64\zabbix_agentd.exe -c C:\zabbix\conf\zabbix_agentd.win.conf -d ##删除
windows 主机配置完成,下边在 web 界面,添加主机 win2k8dc1;
Zabbix 监控结合 Grafana 绘图_第51张图片
Zabbix 监控结合 Grafana 绘图_第52张图片Zabbix 监控结合 Grafana 绘图_第53张图片Zabbix 监控结合 Grafana 绘图_第54张图片Zabbix 监控结合 Grafana 绘图_第55张图片
添加完成,默认图形为 2 个,可以手动添加,在此不做过多说明,验证当前图形如下;
Zabbix 监控结合 Grafana 绘图_第56张图片

7.自定义监控项,创建项目、触发器、图形,验证监控效果;

以上关联的 Template OS Linux 模板基本涵盖了所有系统层面的监控,包括了我们最关注的
几项:ping、load、cpu 使用率、memory、disk、网卡流量等等,当然有些触发器的阀值可
能需要根据服务器的自身情况进行修改。
下面添加自定义服务器内存使用检测项,在此配置一个监控项为:内存使用 70M 进行警告
提醒:
1.修改客户端 zabbix_agentd.conf 配置文件,最后一行添加:
UserParameter=memory_userd,free -m|grep Mem|awk '{print $3}'
语法:UserParameter=key,shell command
监控 key 值:memory_userd,key 值可以随意编写,但是一会需要在 web 页面创建监控项时
指定 key 值;
Shell 命令或脚本:free -m|grep Mem|awk '{print $3}'
注:在 zabbix_server 端可以使用 zabbix_get -s agent 端 ip 地址 -p 10050 -k key 名
通过此命令可以查看 agent 端 key 的监控值;
具体实现方式如下,更改 agent.zabbix.com 主机的配置文件来自定义监控项;
[root@agent ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
UserParameter=memory_userd,free -m|grep Mem|awk '{print $3}'
:wq
[root@agent ~]# /etc/init.d/zabbix_agentd restart
使用 server.agent.com 主机查看其监控项键值;
[root@server ~]# zabbix_get -s 192.168.100.152 -k memory_userd
338
使用 web 界面添加此监控项;
Zabbix 监控结合 Grafana 绘图_第57张图片Zabbix 监控结合 Grafana 绘图_第58张图片Zabbix 监控结合 Grafana 绘图_第59张图片Zabbix 监控结合 Grafana 绘图_第60张图片Zabbix 监控结合 Grafana 绘图_第61张图片
监控项添加完成后,创建触发器(根据条件进行触发某个告警操作);
Zabbix 监控结合 Grafana 绘图_第62张图片Zabbix 监控结合 Grafana 绘图_第63张图片Zabbix 监控结合 Grafana 绘图_第64张图片Zabbix 监控结合 Grafana 绘图_第65张图片Zabbix 监控结合 Grafana 绘图_第66张图片Zabbix 监控结合 Grafana 绘图_第67张图片Zabbix 监控结合 Grafana 绘图_第68张图片Zabbix 监控结合 Grafana 绘图_第69张图片
触发器创建完成后,创建监控显示的图形;
Zabbix 监控结合 Grafana 绘图_第70张图片Zabbix 监控结合 Grafana 绘图_第71张图片Zabbix 监控结合 Grafana 绘图_第72张图片Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图_第73张图片Zabbix 监控结合 Grafana 绘图_第74张图片
打开首页,很明显的提示;

8.实现邮件报警;

首先配置 server.zabbix.com 端的邮件;
[root@server ~]# yum -y install postfix mailx dos2unix
[root@server ~]# mailx -V
[root@server ~]# vi /etc/mail.rc //在此文件末尾添加,指定接收邮件邮箱地址,指定邮
箱服务器地址,指定接收邮件邮箱地址的授权码,并非 163 邮箱的密码,而是授权码,登陆
163 网易邮箱地址后,--设置--开启 smtp 和 pop3--点击客户端生成授权码--使用此授权码进
行指定到此配置文件;

set [email protected] smtp=smtp.163.com
set [email protected] smtp-auth-password=...
set smtp-auth=login
:wq
[root@server ~]# echo "测试内容" |mail -s "测试标题" [email protected] // 测 试 邮 件
接收情况
[root@server ~]# vi /usr/local/zabbix/etc/zabbix_server.conf //打开 server 端主配置文
件的脚本存放位置
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
:wq
[root@server ~]# vi /usr/local/zabbix/share/zabbix/alertscripts/2.sh //编写报警邮件
脚本,调整 mail 命令语法位置,使用 dos2unix 命令转换字符,避免收到邮件不显示正常邮
件内容而出现 ATT00001.bin 的错误;
#!/bin/bash
#export.UTF-8
bt=$2
sjr=$1
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
/usr/bin/dos2unix -k $FILE
/bin/mail -s "$bt" "$sjr" <$FILE
:wq
[root@server ~]# chmod 777 /usr/local/zabbix/share/zabbix/alertscripts/2.sh
[root@server ~]# chown zabbix:zabbix /usr/local/zabbix/share/zabbix/alertscripts/2.sh 
[root@server ~]# touch /tmp/mailtmp.txt
[root@server ~]# chmod 777 /tmp/mailtmp.txt
[root@server ~]# chown zabbix:zabbix /tmp/mailtmp.txt //注意文件以及报警脚本

的归属以及权限,注:脚本文件和存放邮件消息文件归属必须是 zabbix;
[root@server ~]# /usr/local/zabbix/share/zabbix/alertscripts/2.sh [email protected] "测试标
题 2" "测试内容 2" //测试脚本邮件接收情况
dos2unix: converting file /tmp/mailtmp.txt to Unix format ...
配置 zabbix web 网站进行监控项的邮件报警,每一张图片后附带解释和注意事项,大体
步骤分为 监控--创建报警媒介类型--更新用户使用的报警媒介类型--创建动作(根据触发器
触发)--验证;
创建报警媒介类型:
Zabbix 监控结合 Grafana 绘图_第75张图片

输入创建的报警媒介类型的名称,指定类型为脚本的方式,并且输入 zabbix_server 端
/usr/local/zabbix/share/zabbix/alertscripts 目录下的脚本名称,确保脚本的归属是 zabbix,
并且脚本的权限是 777,下边设置脚本参数,也就是发送邮件的语法:脚本 收件人 标题 内
容,必须严格按照此标准填写;
Zabbix 监控结合 Grafana 绘图_第76张图片
创建报警媒介类型成功后,进行确认;
Zabbix 监控结合 Grafana 绘图_第77张图片
配置 zabbix 中的用户所使用的报警媒介类型以及接收邮件的邮箱;
Zabbix 监控结合 Grafana 绘图_第78张图片
选择报警媒介类型为刚刚创建的类型,并且输入接收邮件的地址,指定报警时间和报警级
别;
Zabbix 监控结合 Grafana 绘图_第79张图片Zabbix 监控结合 Grafana 绘图_第80张图片Zabbix 监控结合 Grafana 绘图_第81张图片
创建动作,也就是发送邮件的动作;
Zabbix 监控结合 Grafana 绘图_第82张图片
输入动作名,动作名最好为英文,可以选择触发这个动作的条件(可以选择触发器=触发器
的名称或者选择触发器似触发器名称),作为条件,如若如图不选择触发器的条件,那么任
何消息都会提示到邮箱;
Zabbix 监控结合 Grafana 绘图_第83张图片Zabbix 监控结合 Grafana 绘图_第84张图片
添加报警动作,一旦此触发器添加触发,添加报警邮件的标题和内容,默认操作步骤持续
时间(修改持续时间为 60 秒 (一分钟发送一次邮件)),添加操作(添加接收邮件的用户);
默认接收人内容:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
默认信息内容:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
Zabbix 监控结合 Grafana 绘图_第85张图片
添加操作(添加接收邮件的用户),步骤(指定邮件发送的次数),仅送到(选择创建的媒
介类型);
Zabbix 监控结合 Grafana 绘图_第86张图片
添加恢复操作(指故障恢复之后发送邮件的动作),具体步骤和添加操作相同;
Zabbix 监控结合 Grafana 绘图_第87张图片
确认动作创建的完成;
Zabbix 监控结合 Grafana 绘图_第88张图片Zabbix 监控结合 Grafana 绘图_第89张图片
开始测试邮件报警
测试一:首先关闭 agent.zabbix.com 主机的 ftp 服务,测试邮件报警情况;
[root@agent ~]# /etc/init.d/vsftpd stop
关闭 vsftpd: [确定]
Zabbix 监控结合 Grafana 绘图_第90张图片Zabbix 监控结合 Grafana 绘图_第91张图片Zabbix 监控结合 Grafana 绘图_第92张图片
测试二:关闭 win2k8 主机,测试邮件报警情况;
Zabbix 监控结合 Grafana 绘图_第93张图片Zabbix 监控结合 Grafana 绘图_第94张图片Zabbix 监控结合 Grafana 绘图_第95张图片Zabbix 监控结合 Grafana 绘图_第96张图片

9.安装并配置 Grafana;

[root@server ~]# wget 
https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.1-1.x86_64.rpm
[root@server ~]# yum -y localinstall grafana-4.6.1-1.x86_64.rpm 
[root@server ~]# grafana-cli plugins install alexanderzobnin-zabbix-app ##安装 zabbix 插
件
[root@server ~]# mkdir -p /opt/grafana/data/plugins/
[root@server ~]# cp -r /var/lib/grafana/plugins/alexanderzobnin-zabbix-app/ 
/opt/grafana/data/plugins/
[root@server ~]# ls /opt/grafana/data/plugins/
alexanderzobnin-zabbix-app
[root@server ~]# chmod 777 /opt/grafana/data/plugins/ -R
[root@server ~]# systemctl start grafana-server
[root@server ~]# netstat -utpln |grep gra
Proto Recv-Q Send-Q Local Address Foreign Address State 
PID/Program name 
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 
57103/grafana-serve

访问测试 http://192.168.100.101:3000,默认用户名 admin,密码 admin,在此是谷歌浏览器
翻译过后的界面,大家可以自行下载谷歌浏览器,下载翻译插件,在此不做过多介绍;
安装 grafana;
Zabbix 监控结合 Grafana 绘图_第97张图片Zabbix 监控结合 Grafana 绘图_第98张图片

10.配置 Grafana 的 web 界面,呈现效果;

启用插件;
Zabbix 监控结合 Grafana 绘图_第99张图片Zabbix 监控结合 Grafana 绘图_第100张图片Zabbix 监控结合 Grafana 绘图_第101张图片Zabbix 监控结合 Grafana 绘图_第102张图片
添加数据源;
Zabbix 监控结合 Grafana 绘图_第103张图片Zabbix 监控结合 Grafana 绘图_第104张图片Zabbix 监控结合 Grafana 绘图_第105张图片Zabbix 监控结合 Grafana 绘图_第106张图片
创建仪表盘;
Zabbix 监控结合 Grafana 绘图_第107张图片
创建仪表盘时指定显示的图形;
Zabbix 监控结合 Grafana 绘图_第108张图片Zabbix 监控结合 Grafana 绘图_第109张图片
输入图形名称;
Zabbix 监控结合 Grafana 绘图_第110张图片
选择数据源和图中需要显示的主机和主机的监控项;
Zabbix 监控结合 Grafana 绘图_第111张图片Zabbix 监控结合 Grafana 绘图_第112张图片
创建完成,保存此仪表盘,输入仪表盘的名称;
Zabbix 监控结合 Grafana 绘图_第113张图片Zabbix 监控结合 Grafana 绘图_第114张图片
验证创建的仪表盘;
Zabbix 监控结合 Grafana 绘图_第115张图片Zabbix 监控结合 Grafana 绘图_第116张图片
在现有的 dashboard 中添加图形;
Zabbix 监控结合 Grafana 绘图_第117张图片Zabbix 监控结合 Grafana 绘图_第118张图片Zabbix 监控结合 Grafana 绘图_第119张图片Zabbix 监控结合 Grafana 绘图_第120张图片Zabbix 监控结合 Grafana 绘图_第121张图片Zabbix 监控结合 Grafana 绘图_第122张图片Zabbix 监控结合 Grafana 绘图_第123张图片
验证最终的仪表盘显示图形;
Zabbix 监控结合 Grafana 绘图_第124张图片

四.项目实验总结(遇到的错误及解决方案,

难点、重点解说,扩展学习)
1.错误及解决方案:
错误一:监控 Mysql 数据库时,没有图形;
错误及解决方案:P/13-18
错误二:配置报警邮件时,邮箱收到的邮件为 ATT00001.bin 的内容;
错误及解决方案:P/38
邮箱收到邮件出现 ATT00001.bin 的内容:
原因:zabbix 无法将内容转义成中英文,需要借助 dos2unix工具进行转换