微信报警的优点:方便查看,降低成本。

本篇文章分为:

1. 申请公众号

2. 利用脚本给微信发送报警

3. 实现秒级接收报警邮件

一、申请微信企业号及如何操作——传送门:http://qy.weixin.qq.com/

wKioL1jrPzGx4jYDAACwewFzQic607.png-wh_50

wKiom1jrP0qTFIuLAABmX1V7jp0996.png-wh_50

wKiom1jrP16jqwEjAAGD7DqEoW0849.png-wh_50

wKioL1jrP3jRfFApAADUTDGHTpA364.png-wh_50

wKiom1jrP43icch8AACyOgNbbVM017.png-wh_50

wKiom1jrP7CQZwppAABxqi9DZOY305.png-wh_50

wKioL1jrQHfQyaD0AAFeJS8ZYR8825.png-wh_50

wKiom1jrQc_zcIFdAABcD0LRLOw159.png-wh_50

wKioL1jrQdCRAxLLAAEdlakhgPw122.png-wh_50

wKiom1jrQdbyZ4MYAAsKOsvtyzA237.png-wh_50

wKiom1jrQdaShzCXAAJaSvp1dPM122.png-wh_50

wKioL1jrQdezjk6jAAEkgUQkDoQ182.png-wh_50

wKiom1jrQdjhJ7MsAACpEaBd3OE495.png-wh_50

wKioL1jrQdjQfnCtAACu4K44nqY994.png-wh_50

wKiom1jrQdiCxxavAABd9EFDNbI562.png-wh_50

wKioL1jrQdmAv5HWAADtljELAsU048.png-wh_50

wKiom1jrQdmCniVjAACbVuWOJsE564.png-wh_50

wKioL1jrQf_gGvUBAABtzUabKFw534.png-wh_50

wKiom1jrQf-RTXhzAABbIGR3Xx4234.png-wh_50

wKioL1jrQf_AdPGFAAAujf6Yhi8047.png-wh_50

wKioL1jrQgDxEpwiAACk3VnJ-o8765.png-wh_50

wKiom1jrQgDT_W-gAABX9MEc2Y8731.png-wh_50

wKiom1jrQgHgK2IJAACNayrJ0aI043.png-wh_50

wKioL1jrQgGQ_pHHAAA91W9zxVY843.png-wh_50

wKiom1jrQgKRvhipAABdDB5RDvQ353.png-wh_50

wKioL1jrQgKRY9-UAACKrkaYNqA740.png-wh_50

wKiom1jrQgKhQcEYAABr4Palb9U891.png-wh_50

wKioL1jrQhLikoAqAABup_8mtbU145.png-wh_50

二、微信脚本配置

通过上面的操作已完成企业号配置,同时收集了几个至关重要的信息:

应用ID、部门ID、成员账号、cropidSecret

下面需要将这几个信息添加至报警脚本,内容如下:

[root@Zabbix-Server ~]# cat /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh 
CropID=''
Secret=''
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}')
echo $Gtoken
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
function body() {
local int AppID=2
local UserID=$1
local PartyID=1
local Msg=$(echo "$@" | cut -d " " -f3-)
printf '{\n'
printf '\t"touser": "'"$UserID"\"",\n"
printf '\t"toparty": "'"$PartyID"\"",\n"
printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'"$AppID "\"",\n"
printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n"
printf '\t"},\n'
printf '\t"safe:":0\n'
printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL


wKiom1jrQmSjs9g1AAInxX0xkbM145.png-wh_50

chownzabbix:zabbix weixin.sh

chmod u+xweixin.sh

/usr/local/zabbix/share/zabbix/alertscripts

测试一下脚本可否正常运行,如果返回“ok”则说明正常接收。

wKioL1jrQsDyGxKZAACzFipI7W4614.png-wh_50

wKioL1jrQwqgZramAAEmmoaEr4w331.jpg-wh_50

Zabbixweb端配置

1.配置报警媒介,点击zabbix管理,然后点击报警媒介类型,再点击右上角的创建媒体类型

wKiom1jrQzaiObeSAABat5kegSw727.png

2.填写报警媒介内容、选择脚本、脚本内容、添加脚本参数,完成之后点下面的“更新”,然后可以看见刚新增的报警媒介—微信报警

wKioL1jrQ1LTPAmLAABm5IkHSBg019.png-wh_50

wKiom1jrQ2ugzZS7AAA73umvJoM752.png-wh_50

3.创建好报警媒介后,就需要将报警媒介关联到我们的用户。点击管理,用户,然后选择我们的用户admin也可新建一个用户,点击用户名就进入到用户配置界面。点击报警媒介,然后点添加,选择我们上一步创建的邮件报警脚本,输入收件人,选择报警时间和类型,然后点击添加,就将创建好的报警媒介关联到我们的用户上面了。

wKioL1jrQ4myFaE2AAA2R4-07xo207.png-wh_50

wKioL1jrQ6DxT1VjAAAvde_vX78025.png-wh_50

4添加报警动作,点击配置,然后点击动作,再点击右上角的创建动作。

wKiom1jrQ_KijqdBAABIqRmLak4511.png

5动作参数和条件参数如下图所示,添加完成后点击下面的“添加”按钮保存动作,后面在动作页可以看见新添加的动作。

wKioL1jrQ_3BURO2AADImeenCHk097.png-wh_50

wKiom1jrRC3y_9sZAABXzp03C04017.png-wh_50

6.添加完成后可以开始测试,这里将agent主机的服务关了,可以看到已经触发脚本告警。

wKiom1jrREyjHAadAABYfQ3ExQE753.png-wh_50

wKioL1jrRGbADQkFAANcTeHwOW0374.jpg-wh_50

7.我们到动作日志里去看一下报警情况,点击报表-->动作日志

wKiom1jrRIHC_bxgAAEEYaG1u5o694.png-wh_50

至此微信告警已经验证成功!

这里还考虑到一个问题,当出现故障时我们需要等待5分钟才可以收到报警通知,为了保证安全即时处理故障和提高工作效率,如何实现立即报警功能呢?下面一起来看一下具体的操作。

三、实现秒级接收报警邮件

监控vsftpd服务:

wKiom1jrRJ6DLcgLAAF9eA0PZYk037.png-wh_50

通过netstat–anpt | grep vsftpd | wc –l 这个命令来判断vsftpd是否有工作进程,如果不等于1表示进程挂了,则触发报警。

在被监控端(zabbix-agent)添加监控参数:

wKioL1jrRLPRBw_GAAEHmbis6Cg600.png-wh_50

重启zabbix-agentd服务使配置生效

wKiom1jrRXzQ6aZdAACv75rotJA095.png-wh_50

zabbix-server测试是否ok,当端口不是默认的10050时,需要添加-p指定端口:

zabbix_get -s1.1.1.1 -p 20050 –k hcp

wKiom1jrRZnAomBvAACAZj-33mY674.png-wh_50

这种提示是因为权限问题,zabbix_agentd是zabbix用户启动的,默认不能执行netstat -p等命令,导致从服务器取到的自动发现脚本为空。

解决方法:chmod +s /bin/netstat

wKioL1jrRcHDaRPDAAA9WFR_YLI249.png-wh_50

添加监控项

wKioL1jrRdqylOAkAACK5vKiqe4835.png-wh_50

点击右侧创建监控项:

wKiom1jrRfHykkBwAABuyWbEL2s481.png-wh_50

名称可以自定义,但是这个键值必须要zabbix_agent.conf文件中参数UserParameter的值一样

UserParameter=hcp,netstat -anpt| grep ftp | wc –l

创建对监控项的触发器:

wKioL1jrRhbwotSyAABhZ6uIiE8004.png-wh_50

点击右上角“创建触发器”

wKioL1jrRjLgfFqCAABDX72O6dY782.png-wh_50

名称随意

表达式的意思就是如果值不为1就说明服务挂了

表达式可以点击添加新建一个表达式

进行发报警邮件测试

要注意:

wKiom1jrRk7x23mMAABu29mxBac524.png-wh_50

wKioL1jrRm6T5VHuAACFXoHhnVo833.png-wh_50

在动作里选择刚创建好的触发器

wKiom1jrRonwdik8AADRXWx4uvI443.png-wh_50

现在vsftpd服务是正常的,把服务停掉验证一下是不是立即发送报警信息。

wKiom1jrRqfQEuW1AABPlE_WuJM578.png-wh_50

wKiom1jrRt7ydzi9AAA1iK7uXG0846.png

再查看动作日志

wKiom1jrRvSRMV9IAABCnUVzcHw146.png-wh_50

从上图可以看出key值已经为0,证明刚才设置的表达式成立,也验证成功了即时发送报警邮件。

端口监控

wKioL1jrRxSSovGVAABHXRpdYZ8971.png-wh_50

单击选择

wKioL1jrRzuir1kNAAAMqcr4mpQ224.png

由于这个key是自带所以就不用往zabbix_agent.conf文件里写入key值了

对触发器的更改

wKiom1jrR1KCzq9-AABFyTpFYvg786.png-wh_50

冒号前面的就是zabbix_server.conf文件里的Hostname主机名

wKiom1jrR2eDiV57AAC83wxZiI4111.png-wh_50

修改完,点击下面“更新”

测试一下key

wKioL1jrR4eipZkNAABIMFZt_7Y660.png-wh_50

把vsftpd服务停掉

wKioL1jrR53xHh-wAABSCqaG2Tw081.png-wh_50

查看动作日志

wKioL1jrR7vgPhd5AABEQoQUKeA981.png-wh_50

此时微信消息已爆炸,特此附上部分截图:

wKioL1jrR9Twp9mNAASoS1QgGoA993.jpg-wh_50

端口监控验证成功!

由于时间仓促,加上自己学疏才浅,有些地方可能还需改进,欢迎广大朋友指正!