Zabbix 监控结合 Grafana 绘图

Zabbix 监控结合 Grafana 绘图

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

实施步骤:
步骤 说明
第一步 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 绘图
    组件说明:
    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: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图

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

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

4Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图

勾选以下三个监控模板,点击选择按钮;
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
在上个界面会显示此主机的监控项,此主机的图形,可以自行跟据监控项进行创建图形;
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
选择监控项,点击选择;
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
查看监控主机的图形;
Zabbix 监控结合 Grafana 绘图
但是意外出现了,关于 Mysql 数据库的所有监控项没有图形,如图所示;
Zabbix 监控结合 Grafana 绘图
经过查看,问题如下图,监控 Mysql 服务器的键值不使用;
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
解决方案如下;
设置监控失效的键值,打开 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 绘图
按照如上方法将 server.linuxfan.cn 的 httpd 服务的状态添加到 zabbix 的图形中;

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

首先安装 zabbix_agentd 端的测试服务(ftp)并且确保网络通信;
[root@agent ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
添加 agent.zabbix.com 主机完成,默认的图形之后五个,无 ftp 服务图形,接下来手动添加
ftp 服务图形显示;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图

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

首先配置 windows2008 主机的网络;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
其次用宿主机访问 zabbix 官网下载监控 windows2008 的插件;
Zabbix 监控结合 Grafana 绘图
Zabbix 监控结合 Grafana 绘图
下载完成,将下载后的插件复制到测试主机 win2k8dc1 中,进行配置;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
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 绘图
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
添加完成,默认图形为 2 个,可以手动添加,在此不做过多说明,验证当前图形如下;
Zabbix 监控结合 Grafana 绘图

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 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
监控项添加完成后,创建触发器(根据条件进行触发某个告警操作);
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
触发器创建完成后,创建监控显示的图形;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
打开首页,很明显的提示;

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 绘图

输入创建的报警媒介类型的名称,指定类型为脚本的方式,并且输入 zabbix_server 端
/usr/local/zabbix/share/zabbix/alertscripts 目录下的脚本名称,确保脚本的归属是 zabbix,
并且脚本的权限是 777,下边设置脚本参数,也就是发送邮件的语法:脚本 收件人 标题 内
容,必须严格按照此标准填写;
Zabbix 监控结合 Grafana 绘图
创建报警媒介类型成功后,进行确认;
Zabbix 监控结合 Grafana 绘图
配置 zabbix 中的用户所使用的报警媒介类型以及接收邮件的邮箱;
Zabbix 监控结合 Grafana 绘图
选择报警媒介类型为刚刚创建的类型,并且输入接收邮件的地址,指定报警时间和报警级
别;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
创建动作,也就是发送邮件的动作;
Zabbix 监控结合 Grafana 绘图
输入动作名,动作名最好为英文,可以选择触发这个动作的条件(可以选择触发器=触发器
的名称或者选择触发器似触发器名称),作为条件,如若如图不选择触发器的条件,那么任
何消息都会提示到邮箱;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
添加报警动作,一旦此触发器添加触发,添加报警邮件的标题和内容,默认操作步骤持续
时间(修改持续时间为 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 绘图
添加操作(添加接收邮件的用户),步骤(指定邮件发送的次数),仅送到(选择创建的媒
介类型);
Zabbix 监控结合 Grafana 绘图
添加恢复操作(指故障恢复之后发送邮件的动作),具体步骤和添加操作相同;
Zabbix 监控结合 Grafana 绘图
确认动作创建的完成;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
开始测试邮件报警
测试一:首先关闭 agent.zabbix.com 主机的 ftp 服务,测试邮件报警情况;
[root@agent ~]# /etc/init.d/vsftpd stop
关闭 vsftpd: [确定]
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
测试二:关闭 win2k8 主机,测试邮件报警情况;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图

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 绘图Zabbix 监控结合 Grafana 绘图

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

启用插件;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
添加数据源;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
创建仪表盘;
Zabbix 监控结合 Grafana 绘图
创建仪表盘时指定显示的图形;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
输入图形名称;
Zabbix 监控结合 Grafana 绘图
选择数据源和图中需要显示的主机和主机的监控项;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
创建完成,保存此仪表盘,输入仪表盘的名称;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
验证创建的仪表盘;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
在现有的 dashboard 中添加图形;
Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图Zabbix 监控结合 Grafana 绘图
验证最终的仪表盘显示图形;
Zabbix 监控结合 Grafana 绘图

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章