zabbix5.0微信告警,zabbix 微信告警
Zabbix微信告警
企业微信注册地址:https://work.weixin.qq.com
登录进来的首页
设置总部门名称添加成员
创建应用
收集信息 部门ID
AgentId和Secret ID
企业ID(corpid)
企业微信只要这些信息拿到手就可以了
我的zabbix_server配置如下
[root@133 ~]# cat /usr/local/etc/zabbix_server.conf|grep ^[^#]LogFile=/usr/local/etc/logs/zabbix_server.logPidFile=/tmp/zabbix_server.pidDBHost=192.168.100.133DBName=zabbixDBUser=zabbixDBPassword=zabbix123!DBSocket=/var/lib/mysql/mysql.sockTimeout=4AlertScriptsPath=/usr/local/etc/scriptsLogSlowQueries=3000Include=/usr/local/etc/zabbix_server.conf.d/*.confStatsAllowedIP=127.0.0.1 # 脚本目录和日志目录没有要创建[root@133 ~]# cd /usr/local/etc[root@133 etc]# mkdir scripts/[root@133 etc]# mkdir logs[root@133 etc]# touch logs/zabbix_server.log[root@133 etc]# chown -R zabbix.zabbix scripts/ logs/[root@133 etc]# lldrwxr-xr-x. 2 zabbix zabbix 31 6月 11 18:25 logsdrwxr-xr-x. 2 zabbix zabbix 23 6月 11 18:42 scripts-rw-r--r--. 1 root root 13823 6月 9 22:49 zabbix_agentd.confdrwxr-xr-x. 2 root root 6 6月 9 22:49 zabbix_留胡子的中心 root 19572 6月 11 18:24 zabbix_server.confdrwxr-xr-x. 2 root root 6 6月 9 22:50 zabbix_server.conf.d[root@133 etc]# pwd/usr/local/etc
微信报警脚本
[root@133 ~]# cd /usr/local/etc/scripts/[root@133 scripts]# vim weixin.sh#!/xydhm/bashCorpID="wwd5932acb806b41850c"# 你的企业idSecret="BbUbI_g_4zwvgYjlRinxBu5V_xK8R1VRT-QiNLYW5O0"#你的SecretIDGURL="https://qyapi.weixin.qq.com/cgi-xydhm/gettoken?corpid=$CorpID&corpsecret=$Secret"Token=$(/usr/xydhm/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')# echo $TokenPURL="https://qyapi.weixin.qq.com/cgi-xydhm/message/send?access_token=$Token"function body(){ local int agentid=1000002# 你的agentdid local UserID="@all" # 发送的用户ID local PartyID=1 # 部门ID 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": "'"$agentid"\"",\n" printf '\t"text": {\n' printf '\t\t"content": "'"$Msg"\""\n" printf '\t},\n' printf '\t"safe":"0"\n' printf '}\n'}/usr/xydhm/curl --data-ascii "$(body $1 $2 $3)" $PURL[root@133 etc]# chmod +x scripts/weixin.sh[root@133 etc]# chown -R zabbix:zabbix /usr/local/etc/scripts/[root@133 etc]# kill -9 zabbix_server[root@133 etc]# zabbix_server测试:[root@133 scripts]# ./weixin.sh test{"errcode":0,"errmsg":"ok","invaliduser":""}# 此时微信就会收到信息‘test’
设置zabbix报警配置
创建报警用户和组
报警媒介添加用户
收件人为部门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}设置恢复:恢复:恢复主旨:恢复{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}
到这里微信报警就设置好了,下面就来触发一下
可以使用自定义监控的方式,也可以是用模板的方式,这里就演示一下自定义的监控方式:
这里以httpd为例监控80端口
# 在客户端安装httpd[root@agentd ~]# yum -y install httpd[root@agentd ~]# systemctl start httpd# 在客户端创建脚本存放目录[root@agentd ~]# mkdir /scripts# 写脚本[root@agentd ~]# cat /scripts/check_process.sh #!/xydhm/bashprocess=$(ps -ef|grep -Ev "grep|$0"|grep -c $1)if [ $process -gt 0 ];then echo "0"else echo "1"fi# 给脚本执行权限[root@agentd ~]# chmod a+x /scripts/check_process.sh [root@agentd ~]# ll /scripts/check_process.sh-rwxr-xr-x 1 zabbix zabbix 135 8月 24 15:26 /scripts/check_process.sh# 改脚本存放目录的属主[root@agentd ~]# chown -R zabbix.zabbix /scripts/[root@agentd ~]# ll -d /scripts/drwxr-xr-x 2 zabbix zabbix 30 8月 24 16:34 /scripts/# 改客户端配置文件agentd.conf[root@agentd ~]# echo "UnsafeUserParameters=1" >>/usr/local/etc/zabbix_agentd.conf[root@agentd scripts]# echo 'UserParameter=check_process[*],/xydhm/bash /scripts/check_process.sh $1' >>/usr/local/etc/zabbix_agentd.conf# 重启zabbix_agent[root@agentd ~]# pkill zabbix_agentd[root@agentd ~]# zabbix_agentd # 在服务端手动测试[root@133 etc]# zabbix_get -s 192.168.100.138 -k check_process[httpd]0 # 0代表没有问题# 停掉httpd服务再测试[root@agentd ~]# systemctl stop httpd[root@133 etc]# zabbix_get -s 192.168.100.138 -k check_process[httpd]1 # 1代表服务没有进程运行
添加主机
创建应用集
添加监控项
添加触发器
查看监控到的最新数据
停止agentd端的httpd触发一下看微信能否收到信息
[root@138 scripts]# systemctl stop httpd
在微信这里收到了故障报警,现在恢复agentd端的httpd看能否收到恢复报警通知
[root@138 scripts]# systemctl start httpd