zabbix笔记之告警配置
告警配置
告警的必要性
为什么要有告警?
ZABBIX告警的原理是什么?
每个zabbix触发器是由一个唯一的trigger id进行标识,触发器满足条件的时候,zabbix生成事件,例如CPU使用率连续5分钟大于90%是一个条件,根据这个条件可以定义一个触发器。CPU使用率的数据在zabbix的术语中叫做一个item监控项。Zabbix监控大量的item,例如CPU,磁盘,网络带宽,ping状态,web服务的可用性等等
触发器有切只有两种状态:OK和PROBLEM,OK表示正常状态,PROBLEM表示出现问题,超出了规定的阈值,当触发器的状态变化的时候,一个event发生了。进入了 Problem状态的触发器,就是一个zabbix problem
用来对应一个event的动作叫做action,一个action是一个操作及其结果,例如发送告警信息,执行远程操作等等
告警方式
ZABBIX的告警方式有以下几种:
-
电子邮件
-
脚本
-
短信
-
Jabber
-
这里主要是讲解邮件告警和微信告警(脚本告警)
#检测是否已经安装mailx软件,如果安装则跳过,未安装则安装mailx [root@zabbix ~]# rpm -qa | grep mailx && echo "mailx 已经安装" || yum install mailx -y 配置mailx服务,我的告警邮箱是腾讯企业邮箱 [root@zabbix ~]#vim /etc/mail.rc # 设置zabbix告警发件箱,配置smtp域名 set from=邮箱名 smtp=smtp.exmail.qq.com # zabbix告警发件箱的用户名和登陆密码 set smtp-auth-user=邮箱名 smtp-auth-password=邮箱密码 # 将zabbix告警发件箱设置成自动登陆 set smtp-auth=login [root@zabbix ~]#echo "test" | mail -s "zabbix" 收件箱 //测试邮件能否正常发送邮件,如果可以正常发送邮件就表明你的配置没有问题,可以继续下一步
我的告警媒介类型配置如下
名称:Email
类型:电子邮件
SMTP服务器:smtp.exmail.qq.com
SMTP服务器端口:465
SMTP HELO:exmail.qq.com.cn
配置告警邮件收件人
配置动作
克隆zabbix自带的动作,然后编辑
故障告警:{TRIGGER.NAME}
告警主机:{HOST.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
配置恢复操作,与配置操作的步骤一样
告警主机:{HOST.NAME}
主机IP地址:{HOST.IP}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
测试邮件告警
修改触发器的触发条件,即可完成测试
企业微信告警
企业微信web端配置
注册企业微信账号或使用公司的企业微信账号,并创建应用
主要流程如下:
1.创建微信用户成员。
2.创建应用,这是关键,企业微信创建的应用ID为1000002
3.创建应用管理组,添加组成员(也就是设置哪些用户可以接收到报警的通知信息)。
4.创建成功后需要获取到以下信息:CropID 和Secret 当然还包括创建的用户信息。
申请企业微信,创建对应的组成员这些就不介绍了,按照注册向导创建即可,主要写下创建应用获取应用Secret 和CorpID
企业微信配置
创建应用并获取Agentld和Secret
获取Agentld和secert
获取部门ID
#ZABBIX脚本配置 #找到放置告警脚本的目录 [root@zabbix ~]# find / -name alertscripts /usr/lib/zabbix/alertscripts #进入目录配置脚本 [root@zabbix ~]# cd /usr/lib/zabbix/alertscripts [root@zabbix alertscripts]# vim weixin.sh #!/bin/bash # @Date: 2019-09-26 21:05:59 # @Author: zhangcheng (3359957053@qq.com) # @Description: 微信告警脚本 ##################################### #填写企业ID CropID='wx9ac8f9478320ea89 ' #应用的secret,下面的GURL和PURL 地址无需变动 Secret='qUwDxMnL73w0VAR807O0X57KAaI7GJ4YP_RFau5quEI' GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}') PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" function body() { #这里是创建的应用ID local int AppID=1000002 #接收消息用户,系统传参 local UserID=$1 #接收消息的部门ID local PartyID=2 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 #脚本权限配置 [root@zabbix alertscripts]# chown zabbix.zabbix weixin.sh [root@zabbix alertscripts]# chmod -v +x weixin.sh
web端配置
这里的设置和邮件告警的步骤基本相同了,创建【动作】、【示警媒介】、【接收消息的用户】
脚本传参: {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
用户这里添加需要增加用户的示警媒介【管理】-【用户】-选择对应的用户-【示警媒介】添加的收件人 则为企业微信中的账号
配置action
告警动作
服务器:{HOST.NAME}出现故障!\n
主机:{HOSTNAME1}\n
IP地址:{HOST.IP}\n
时间:{EVENT.DATE} {EVENT.TIME}\n
等级:{TRIGGER.SEVERITY}\n
信息: {TRIGGER.NAME}\n
项目:{TRIGGER.KEY1}\n
详情:{ITEM.NAME}:{ITEM.VALUE}\n
状态:{TRIGGER.STATUS}:{ITEM.VALUE1}\n
事件ID:{EVENT.ID}\n
注意:恢复信息中 时间:{EVENT.DATE} {EVENT.TIME}\n 要修改为 时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}\n 否则不能获取到正确的恢复时间。
测试告警,和邮件告警一样