第14章 Zabbix发现&注册实战

1.1 Zabbix自动发现及注册

熟练通过Zabbix监控平台监控单台客户端之后,企业中有成千上万台服务器,如果手工添加会非常耗时间,造成大量的人力成本的浪费,有没有什么好的自动化添加客户端的方法呢?

Zabbix自动发现就是为了解决批量监控而设计的功能之一,什么是自动发现呢,简单来说就是Zabbix Server端可以基于设定的规则,自动批量的去发现局域网若干服务器,并自动把服务器添加至Zabbix监控平台,省去人工手动频繁的添加,节省大量的人力成本。

Zabbix相对于Nagios、Cacti监控来说,如果要想批量监控,Nagios、Cacti需要手动单个添加设备、分组、项目、图像,也可以使用脚本,但是不能实现自发方式添加。

Zabbix最大的特点之一就是可以批量自动主机并监控,利用发现(Discovery)模块,实现自动发现主机、自动将主机添加到主机组、自动加载模板、自动创建项目(Items)、自动创建监控图像,操作步骤如下:

  1. Configurationdiscovery Create discovery rule,如图13-14所示:

图13-14 创建客户端发现规则

Name: 规则名称;

Discovery by proxy : 通过代理探索;

IP range : zabbix_server 探索区域的IP范围;

Delay : 搜索一次的时间间隔;

Checks : 检测方式,如用ping方式去发现主机,zabbix_server需安装fping,此处使用Agent方式发现;

Device uniqueness criteria: 以IP地址作为被发现主机的标识。

  1. Zabbix客户端安装Agent

由于发现规则里选择checks方式为Agent,所以需在所有被监控的服务器安装zabbix Agent,安装的方法可以手动安装,也可以使用Shell脚本,附Zabbix客户端安装脚本,脚本运行方法:sh auto_install_zabbix.sh。

#!/bin/bash

#auto install zabbix

#by jfedu.net 2017

#############

ZABBIX_SOFT=”zabbix-3.2.6.tar.gz”

INSTALL_DIR=”/usr/local/zabbix/”

SERVER_IP=”192.168.149.128″

IP=`ifconfig|grep Bcast|awk ‘{print $2}’|sed ‘s/addr://g’`

AGENT_INSTALL(){

yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI

groupadd zabbix ;useradd -g zabbix zabbix;usermod -s /sbin/nologin zabbix

tar -xzf $ZABBIX_SOFT;cd `echo $ZABBIX_SOFT|sed ‘s/.tar.*//g’`

./configure –prefix=/usr/local/zabbix –enable-agent&&make install

if [ $? -eq 0 ];then

ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/

fi

cd – ;cd zabbix-3.2.6

cp misc/init.d/tru64/zabbix_agentd /etc/init.d/zabbix_agentd ;chmod o+x /etc/init.d/zabbix_agentd

#config zabbix agentd

cat >$INSTALL_DIR/etc/zabbix_agentd.conf<<EOF

LogFile=/tmp/zabbix_agentd.log

Server=$SERVER_IP

ServerActive=$SERVER_IP

Hostname = $IP

EOF

#start zabbix agentd

/etc/init.d/zabbix_agentd restart

/etc/init.d/iptables stop

setenforce 0

}

AGENT_INSTALL

  1. 创建发现Action

Zabbix发现规则创建完毕,客户端Agent安装完后,被发现的IP主机不会自动添加至Zabbix监控列表,需要添加发现动作,添加方法如下:

Configuration Actions Event source(选择Discovery) Create action

添加规则时,系统默认存在一条发现规则,可以新建规则,也可以编辑默认规则,如图13-15(a)、13-15(b)、13-15(c)所示,编辑默认发现规则,单击Operations设置发现操作,分别设置Add host、Add to host groups、Link to templates,最后启用规则即可:

图13-15(a) 创建客户端发现动作

图13-15(b) 客户端发现自动添加至Zabbix

图13-15(c) 客户端发现自动添加至Zabbix

MontoringDiscovery,查看通过发现规则找到的服务器IP列表,如图13-16所示:

图13-16 被发现的客户端列表

ConfigurationHosts,查看4台主机是否被自动监控至Zabbix监控平台,如图13-17所示:

图13-17 自动发现的主机被添加至Hosts列表

MonitoringGraphs,监控图像查看,如图13-18(a)、13-18(b)所示,可以选择Host、Graph分别查看各种的监控图像:

图13-18(a) 客户端监控图像

图13-18(b) 客户端监控图像

1.2 Zabbix监控邮件报警实战

Zabbix监控服务端、客户端都已经部署完成,被监控主机已经添加,Zabiix监控运行正常,通过查看Zabbix监控服务器,可以了解服务器的运行状态是否正常,运维人员不会时刻登录Zabbix监控平台刷新,查看服务器的状态。

可以在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到设定的触发器预设值时,不管任何时候,会自动发送报警邮件、微信信息到指定的人员,运维人员收到信息有利于第一时间解决故障。Zabbix邮件报警设置步骤如下:

  1. 设置邮件模板及邮件服务器

AdministrationMedia typesCreate media type,填写邮件服务器信息,根据提示设置完毕,如图13-19(a)、13-19(b)所示:

图13-19(a) Zabbix邮件报警邮箱设置

图13-19(b) Zabbix邮件报警邮箱设置

  1. 配置接收报警的邮箱

Administration-user-Admin (Zabbix Administrator)-user-admin,选择Media,单击Add添加发送邮件的类型“Email”,同时指定接收邮箱地址:wgkgood@163.com,根据实际需求改成自己的接收人,如图13-20所示:

图13-20 Zabbix邮件报警添加接收人

  1. 添加报警触发器

ConfigurationActionsAction Event sourceTriggers-Create Action,如图13-21(a)、13-21(b)、13-21(c)所示,分别设置Action、Operations、Recovery operations。

  • ActionNew condition选择“Trigger serverity>=Warning”;
  • Operations设置报警间隔为60s,自定义报警信息,报警信息发送至administrators组;
  • Recovery operations 自定义恢复信息,恢复信息发送至administrators组。

图13-21(a) 邮件报警Action设置

图13-21(b) 邮件报警Operations设置

图13-21(c) 邮件报警Recovery Operations设置

报警邮件标题可以使用默认信息,亦可使用如下中文报警内容:

名称:Action-Email

默认标题:故障{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}

恢复邮件标题可以使用默认信息,亦可使用如下中文报警恢复内容:

恢复标题:恢复{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}

MonitoringProblems,检查有问题的Action事件,单击Time下方时间,如图13-22(a)、13-22(b)所示,可以看到邮件是否执行成功或者失败:

图13-22(a) Zabbix查看有问题的事件

图13-22(b) Zabbix有问题的事件执行任务

Zabbix邮件发送失败,报错Support for SMTP authentication was not compiled in,原因是由于Zabbix CURL版本要求至少是7.20+版本,升级CURL,升级方法:

创建repo源,vim /etc/yum.repos.d/city-fan.repo,并且写入如下的语句:

cat>/etc/yum.repos.d/city-fan.repo<<EOF

[CityFan] name=City Fan Repo baseurl=http://www.city-fan.org/ftp/contrib/yum-repo/rhel5/x86_64/ enabled=1 gpgcheck=0

EOF

yum clean all

yum install curl

curl -V

CURL升级完毕之后,测试邮件发送,还是报同样的错误,原因是因为需要重新将Zabbix_Server服务通过源码编译安装一遍,安装完zabbx_server,重启服务,乱码问题是由于数据库字符集需改成UTF-8格式,同时将数Zabbix库导出,然后修改latin1为utf8,再将SQL导入,重启Zabbix即可,最终如图13-23(a)、13-23(b)、13-23(c)所示:

图13-23(a) Zabbix事情发送邮件进程

图13-23(b) Zabbix监控故障item发送报警邮件

图13-23(c) Zabbix监控故障item恢复发送邮件