1.1 Zabbix自动发现及注册
熟练通过Zabbix监控平台监控单台客户端之后,企业中有成千上万台服务器,如果手工添加会非常耗时间,造成大量的人力成本的浪费,有没有什么好的自动化添加客户端的方法呢?
Zabbix自动发现就是为了解决批量监控而设计的功能之一,什么是自动发现呢,简单来说就是Zabbix Server端可以基于设定的规则,自动批量的去发现局域网若干服务器,并自动把服务器添加至Zabbix监控平台,省去人工手动频繁的添加,节省大量的人力成本。
Zabbix相对于Nagios、Cacti监控来说,如果要想批量监控,Nagios、Cacti需要手动单个添加设备、分组、项目、图像,也可以使用脚本,但是不能实现自发方式添加。
Zabbix最大的特点之一就是可以批量自动主机并监控,利用发现(Discovery)模块,实现自动发现主机、自动将主机添加到主机组、自动加载模板、自动创建项目(Items)、自动创建监控图像,操作步骤如下:
- 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地址作为被发现主机的标识。 |
- 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 |
- 创建发现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邮件报警设置步骤如下:
- 设置邮件模板及邮件服务器
AdministrationMedia typesCreate media type,填写邮件服务器信息,根据提示设置完毕,如图13-19(a)、13-19(b)所示:
图13-19(a) Zabbix邮件报警邮箱设置
图13-19(b) Zabbix邮件报警邮箱设置
- 配置接收报警的邮箱
Administration-user-Admin (Zabbix Administrator)-user-admin,选择Media,单击Add添加发送邮件的类型“Email”,同时指定接收邮箱地址:wgkgood@163.com,根据实际需求改成自己的接收人,如图13-20所示:
图13-20 Zabbix邮件报警添加接收人
- 添加报警触发器
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恢复发送邮件