第15章 Zabbix微信报警实战

1.1 Zabbix监控MYSQL主从实战

Zabbix监控除了可以使用Agent监控客户端服务器状态、CPU、内存、硬盘、网卡流量,同时Zabbix还可以监控MySQL主从用、监控LAMP、Nginx WEB服务器等等,如下为Zabbix监控MYSQL 主从复制的步骤:

  1. 在Zabbix Agent端/data/sh目录创建Shell脚本:mysql_ab_check.sh,写入如下代码:

#!/bin/bash
/usr/local/mysql/bin/mysql -uroot -e ‘show slave status\G’ |grep -E “Slave_IO_Running|Slave_SQL_Running”|awk ‘{print $2}’|grep -c Yes

  1. 在客户端Zabbix_agentd.conf配置文件中加入如下代码:

UserParameter=mysql.replication,sh /data/sh/mysql_ab_check.sh

  1. Zabbix服务器端获取监控数据,如果返回值为2,则证明丛库I/O、SQL线程均为YES,表示主从同步成功:

/usr/local/zabbix/bin/zabbix_get -s 192.168.149.129 -k mysql.replication

  1. Zabbix WEB平台,在192.168.149.129 hosts中创建item监控项,如图13-24(a)、13-24(b)所示,单击右上角create item,Key填写Zabbix Agentd配置文件中的mysql.replication即可:

图13-24(a) Zabbix添加MYSQL主从item

图13-24(b) Zabbix添加MYSQL主从item

MYSQL主从监控项创建Graph图像,如图13-25(a)、13-25(b)所示:

图13-25(a) 创建MYSQL主从监控图像

图13-25(b) 创建MYSQL主从监控图像

MYSQL主从监控项创建触发器,如图13-26(a)、13-26(b)所示,MYSQL主从状态监控,设置触发器条件为key值不等于2即可,不等于2即表示MYSQL主从同步状态异常,匹配触发器,执行Actions:

图13-26(a) 创建MYSQL主从监控触发器

图13-26(b) 创建MYSQL主从监控触发器

如果主从同步状态异常,Key值不等于2,会触发邮件报警,报警信息如图13-27所示:

图13-27 MYSQL主从监控报警邮件

1.2 Zabbix日常问题汇总

Zabbix 可以设置中文汉化,如果出现乱码解决办法,如果访问zabbix出现如下历史记录乱码, WEB界面乱码,原因是因为数据库导入前不是UTF-8字符集,需要修改为UTF-8模式,如图13-28所示:

图13-28 数据库原字符集latin1

MYSQL数据库修改字符集方法,vim /etc/my.cnf在配置段加入如下代码:

[mysqld]

character-set-server= utf8

[client]

default-character-set = utf8

[mysql]

default-character-set = utf8

备份zabbix数据库,并删除原数据库,重新创建,再导入备份的数据库,修改导入的zabbix.sql文件里面的latin1为utf8,然后再导入到zabbix库,乱码问题解决。

sed -i ‘s/latin1/utf8/g’ zabbix.sql

如果在查看graphs监控图像界面的时候时候出现乱码,如图13-29所示:

图13-29 Graphs图像乱码

从windows下控制面板->字体->选择一种中文字库,例如“楷体”,如图13-30所示:

图13-30 上传Windows简体中文字体

将字体文件cp至zabbix服务dauntfonts目录下,/var/www/html/zabbix/fonts,并且将STKAITI.TTF重命名为DejaVuSans.ttf,最好刷新Graph图像,乱码问题解决,如图13-31(a)、13-31(b)所示:

图13-31(a) 上传Windows简体中文字体

图13-31(b) Graph图像乱码问题解决

1.3 Zabbix触发命令及脚本

Zabbix监控在对服务或者设备进行监控的时候,如果被监控客户端服务异常,满足触发器,默认可以发送邮件报警、短信报警及微信报警。Zabbix还可以远程执行命令或者脚本对部分故障实现自动修复。具体可以执行的任务包括:

  • 重启应用程序,例如Apache、Nginx、MySQL、Tomcat服务等;
  • 通过IPMI接口重启服务器;
  • 删除服务器磁盘空间及数据;
  • 执行脚本及资源调度管理;
  • 远程命令最大长度为255字符;
  • 同时支持多个远程命令;
  • Zabbix代理不支持远程命令。

使用Zabbix远程执行命令,首先需在zabbix客户端配置文件开启对远程命令的支持,在zabbix_agentd.conf行尾加入如下代码,并重启服务,如图13-32所示:

EnableRemoteCommands = 1

图13-32 客户端配置远程命令支持

创建Action,ConfigurationActionsTriggers,如图13-33(a)、13-33(b)所示,类型选择“Remote Command”,steps表示执行命令1-3次, step duration设置每次命令间隔时间的5秒执行一次,执行命令方式选择Zabbix agent,基于sudo执行命令即可:

图13-33(a) 客户端触发器满足条件

图13-33(b) Operations类型选择Remote Command

Zabbix客户端Sudoer配置文件中添加zabbix用户拥有执行权限且无需密码登录:

Defaults:zabbix !requiretty

zabbix ALL=(ALL) NOPASSWD: ALL

Zabbix客户端/data/sh/,创建auto_clean_disk.sh,脚本代码如下:

#!/bin/bash

#auto clean disk space

#2017年6月21日10:12:18

#by author jfedu.net

rm -rf /boot/test.img

find /boot/ -name “*.log” -size +100M -exec rm -rf {} \;

将192.168.149.129服务器/boot目录,临时写满,然后满足触发器,实现远程命令执行,查看问题事件命令执行结果,如图13-34(a)、13-34(b)所示:

图13-34(a) Remote Command执行成功

图13-34(b) Remote Command执行磁盘清理成功

如果Zabbix客户端脚本或者命令没有执行成功,http服务没有停止,可以在Zabbix server端执行如下命令,如图13-35所示:

/usr/local/zabbix/bin/zabbix_get -s 192.168.149.129 -k “system.run[sudo /etc/init.d/httpd restart]”

图13-35 测试Remote Command命令

1.4 Zabbix监控微信报警实战

Zabbix除了可以使用邮件报警之外,还可以通过多种方式把告警信息发送到指定人,例如短信报警方式,越来越多的企业开始使用Zabbix结合微信作为主要的告警方式,因为每个人每天都在使用微信,这样可以及时有效的把告警信息推送到接收人,方便告警的及时处理。Zabbix微信报警怎么设置呢,设置的步骤有哪些呢,方法步骤如下:

  1. 微信企业号注册

企业号注册地址:https://qy.weixin.qq.com/填写企业注册信息,等待审核完,并且微信扫描登录企业公众号,如图13-39(a)、13-39(b)所示:

图13-39(a) 微信企业公众号注册

图13-39(b) 微信企业公众号登录

  1. 通讯录添加运维部门及人员

登录新建的企业号,通过提前把企业成员信息添加到组织或者部门,需要填写手机号、微信号或邮箱,通过这样方式让别人扫码关注企业公众号,为了后面企业号推送消息给企业成员,如图13-40(a)、13-40(b)所示:

图13-40(a) 微信企业公众号通讯录 图13-40(b) 微信企业公众号通讯录

  1. 企业应用-创建应用

除了对个人添加微信报警之外,还可以添加不同管理组,接受同一个应用推送的消息,
成员账号,组织部门ID,应用Agent ID,CorpID和Secret,调用API接口需要用到这些信息,如图13-41(a)、13-41(b)、13-41(c)所示:

图13-41(a) 微信企业公众号创建应用 图13-41(b) 微信企业公众号创建应用 图13-41(c) 微信企业公众号创建应用

  1. 获取企业CorpID,单击企业公众号首页“我的企业”,即可看到,如图13-42所示:

图13-42 微信企业公众号CorpID

  1. 微信接口调试,调用微信接口需要一个调用接口的凭证:Access_token通过CorpID和Secret可以获得Access_token,微信企业号接口调试地址: http://qydev.weixin.qq.com/debug,如图 13-43(a)、13-43(b)所示:

图13-43(a) 微信企业公众号调试

图13-43(b) 微信企业公众号调试

  1. 获取微信报警工具

mkdir -p /usr/local/zabbix/alertscripts

cd /usr/local/zabbix/alertscripts

wget http://dl.cactifans.org/tools/zabbix_weixin.x86_64.tar.gz

tar zxvf zabbix_weixin.x86_64.tar.gz

mv zabbix_weixin/weixin .

chmod o+x weixin

mv zabbix_weixin/weixincfg.json /etc/

rm -rf zxvf zabbix_weixin.x86_64.tar.gz

rm -rf zabbix_weixin/

修改/etc/ weixincfg.json配置文件中corpid、secret、agentid,并测试脚本发送信息,如图13-44(a)、13-44(b)所示:

cd /usr/local/zabbix/alertscripts

./weixin wuguangke 京峰教育报警测试 Zabbix故障报警

./weixin contact subject body

标准信息格式:

Contact,为你的微信账号,注意不是微信号,不是微信昵称,可以把用户账号设置成微信号或微信昵称,Subject 告警主题,Body 告警详情。

图13-44(a) Zabbix Server端微信配置文件

图13-44(b) Zabbix Server端微信配置文件

  1. 脚本调用设置

Zabbix_Server端设置脚本执行路径,编辑zabbix_server.conf文件,添加如下内容:

AlertScriptsPath=/usr/local/zabbix/alertscripts

  1. Zabbix WEB端配置,设置Actions动作,并设置触发微信报警,如图13-45(a)、13-45(b)、13-45(c)所示:

图13-45(a) Zabbix Server Action动作配置

图13-45(b) Zabbix Server Action动作配置

图13-45(c) Zabbix Server Action动作配置

  1. 配置Media Type 微信脚本,AdministrationMedia TypesCreate Media Type如图13-46所示,脚本加入三个参数:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}:

图13-46 Zabbix Server Media Types配置

  1. 配置接收微信信息的用户,AdministrationUsersAdminMedia如图13-47所示:

图13-47 Zabbix Server Users Media

  1. 微信报警信息测试,磁盘容量剩余不足20%,会触发微信报警,如图13-48(a)、13-48(b)、13-48(c)所示:

图13-48(a)Zabbix 微信报警信息

图13-48(b)Zabbix 微信报警故障信息

图13-48(c)Zabbix 微信报警恢复信息