微信报警的优点:方便查看,降低成本。
本篇文章分为:
1. 申请公众号
2. 利用脚本给微信发送报警
3. 实现秒级接收报警邮件
一、申请微信企业号及如何操作——传送门:
二、微信脚本配置
通过上面的操作已完成企业号配置,同时收集了几个至关重要的信息:
应用ID、部门ID、成员账号、cropid、Secret
下面需要将这几个信息添加至报警脚本,内容如下:
[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 $GtokenPURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"function body() {local int AppID=2local UserID=$1local PartyID=1local 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
chownzabbix:zabbix weixin.sh
chmod u+xweixin.sh
/usr/local/zabbix/share/zabbix/alertscripts
测试一下脚本可否正常运行,如果返回“ok”则说明正常接收。
Zabbix的web端配置
1.配置报警媒介,点击zabbix管理,然后点击报警媒介类型,再点击右上角的创建媒体类型
2.填写报警媒介内容、选择脚本、脚本内容、添加脚本参数,完成之后点下面的“更新”,然后可以看见刚新增的报警媒介—微信报警
3.创建好报警媒介后,就需要将报警媒介关联到我们的用户。点击管理,用户,然后选择我们的用户admin也可新建一个用户,点击用户名就进入到用户配置界面。点击报警媒介,然后点添加,选择我们上一步创建的邮件报警脚本,输入收件人,选择报警时间和类型,然后点击添加,就将创建好的报警媒介关联到我们的用户上面了。
4添加报警动作,点击配置,然后点击动作,再点击右上角的创建动作。
5动作参数和条件参数如下图所示,添加完成后点击下面的“添加”按钮保存动作,后面在动作页可以看见新添加的动作。
6.添加完成后可以开始测试,这里将agent主机的服务关了,可以看到已经触发脚本告警。
7.我们到动作日志里去看一下报警情况,点击报表-->动作日志
至此微信告警已经验证成功!
这里还考虑到一个问题,当出现故障时我们需要等待5分钟才可以收到报警通知,为了保证安全即时处理故障和提高工作效率,如何实现立即报警功能呢?下面一起来看一下具体的操作。
三、实现秒级接收报警邮件
监控vsftpd服务:
通过netstat–anpt | grep vsftpd | wc –l 这个命令来判断vsftpd是否有工作进程,如果不等于1表示进程挂了,则触发报警。
在被监控端(zabbix-agent)添加监控参数:
重启zabbix-agentd服务使配置生效
zabbix-server测试是否ok,当端口不是默认的10050时,需要添加-p指定端口:
zabbix_get -s1.1.1.1 -p 20050 –k hcp
这种提示是因为权限问题,zabbix_agentd是zabbix用户启动的,默认不能执行netstat -p等命令,导致从服务器取到的自动发现脚本为空。
解决方法:chmod +s /bin/netstat
添加监控项
点击右侧创建监控项:
名称可以自定义,但是这个键值必须要zabbix_agent.conf文件中参数UserParameter的值一样
UserParameter=hcp,netstat -anpt| grep ftp | wc –l
创建对监控项的触发器:
点击右上角“创建触发器”
名称随意
表达式的意思就是如果值不为1就说明服务挂了
表达式可以点击添加新建一个表达式
进行发报警邮件测试
要注意:
在动作里选择刚创建好的触发器
现在vsftpd服务是正常的,把服务停掉验证一下是不是立即发送报警信息。
再查看动作日志
从上图可以看出key值已经为0,证明刚才设置的表达式成立,也验证成功了即时发送报警邮件。
端口监控
单击选择
由于这个key是自带所以就不用往zabbix_agent.conf文件里写入key值了
对触发器的更改
冒号前面的就是zabbix_server.conf文件里的Hostname主机名
修改完,点击下面“更新”
测试一下key值
把vsftpd服务停掉
查看动作日志
此时微信消息已爆炸,特此附上部分截图:
端口监控验证成功!
由于时间仓促,加上自己学疏才浅,有些地方可能还需改进,欢迎广大朋友指正!