Zabbix监控配置 邮件 微信告警

时间:2022-04-13 08:47:07


Zabbix监控配置邮件微信告警


一、基于SendEmail的邮件告警配置

sendEmail是一个免费、轻量级、命令行的SMTP邮件客户端。如果你需要使用命令行方式发送邮件,那么sendEmail是非常完美的选择:使用简单、功能强大。
sendEmail下载地址:
http://caspian.dotconf.net/menu/Software/SendEmail/

1. 安装SendEmail

# tar xvzf sendEmail-v1.56.tar.gz
# cp sendEmail-v1.56/sendEmail /usr/local/bin/
# chmod +x /usr/local/bin/sendEmai

sendEmail命令选项:

Zabbix监控配置 邮件 微信告警 Zabbix监控配置 邮件 微信告警

2. zabbix服务器端发送邮件脚本

修改zabbix_server.conf

AlertScriptsPath=/etc/zabbix/alertscripts

修改后重启zabbix server

创建发送邮件脚本

#vim /etc/zabbix/alertscripts/SendEmail.sh

#!/bin/bash

SMTP_server='*******'    # SMTP服务器

username='*********     #用户名

password='*********'          # 密码

from_email_address='********' #发件人Email地址

to_email_address="$1"          # 收件人Email地址,zabbix传入的第一个参数

message_subject_utf8="$2"           # 邮件标题,zabbix传入的第二个参数

message_body_utf8="$3"              # 邮件内容,zabbix传入的第三个参数

 

# 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。

message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF

$message_subject_utf8

EOF`

[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"

 

# 转换邮件内容为GB2312

message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF

$message_body_utf8

EOF`

[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"

 

# 发送邮件

sendEmail='/usr/local/bin/sendEmail'

$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312

# chown zabbix:zabbix /etc/zabbix/alertscripts/SendEmail.sh

# chmod +x /etc/zabbix/alertscripts/SendEmail.sh

3. 配置Email告警方式 Media Types

进入告警方式配置界面(Media types),创建Email告警方式,如下图:

 Zabbix监控配置 邮件 微信告警Zabbix监控配置 邮件 微信告警

4. 定义action

修改用户action创建略过,截图为触发action后操作配置,发送邮件.

 Zabbix监控配置 邮件 微信告警Zabbix监控配置 邮件 微信告警

 

zabbix默认的告警内容不丰富,信息不足,所以把我的配置介绍给大家,大家可以参照修改:

Zabbix监控配置 邮件 微信告警Zabbix监控配置 邮件 微信告警

告警主机:{HOST.NAME}
主机IP  {HOST.IP}
告警时间:{EVENT.DATE}  {EVENT.TIME} 
告警等级:{TRIGGER.SEVERITY} 
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
事件ID  {EVENT.ID}

二、WebChat微信告警配置

微信的第三方接口要求我们先申请一个企业号——传送门:https://qy.weixin.qq.com/
  1.通讯录添加企业成员
       我们要提前把成员信息添加进组织部门,必填项+手机号或者微信号,这样别人扫描二维码的时候才能成功关注企业号。
       注意:这里有两个我们要用到信息,一个组织部门的ID,一个部门成员的账号(账号是自己手动指定的,不同于微信号,最好是字母加数字)

组织部门ID

 Zabbix监控配置 邮件 微信告警Zabbix监控配置 邮件 微信告警

部门成员账号

 Zabbix监控配置 邮件 微信告警Zabbix监控配置 邮件 微信告警

2.应用中心创建应用
         创建应用,通过应用发送消息给部门成员.这里要记住一个值,应用ID
应用ID

Zabbix监控配置 邮件 微信告警Zabbix监控配置 邮件 微信告警
  3.给部门设置管理员
       设置--->功能设置---->权限管理---->新建管理组
       管理员必须事先已经关注了企业号,并且已经设置好邮箱地址

CorpIDSecret

Zabbix监控配置 邮件 微信告警Zabbix监控配置 邮件 微信告警

       确定管理员可以读取通讯录,可以使用应用发消息。
        注意:我们需要管理员的CorpIDSecret

总结:

准备这些东西:
   个微信企业号
    企业号已经被部门成员关注
    企业号里有一个可以发消息的应用 ,一个授权管理员,可以使用该应用给成员发消息
我们要取到这些信息:
成员账号

组织部门ID
    应用ID
    CropID    Secret
如何调用微信接口?
       调用微信接口需要一个调用接口的凭证:access_token
       通过 :CropID 、Secret  才能获取到access_token,但是获取到的token有效期为两分钟
        微信企业号接口调试工具传送门:http://qydev.weixin.qq.com/debug 
Shell脚本原理
        使用:
        curl -s -G  url           获取 AccessToken
        使用:
        curl --data  url     传送凭证调用企业号接口
        zabbix会传递三个参数给脚本,$1是消息接收账号,$2报警标题,$3报警内容
#!/bin/bash

CropID='**************'#公司ID

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}')#获取token

PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"

Msg=$3

function body() {

        local int AppID=1#企业号中应用ID

        local UserID=$1#部门成员账号,添加时自定义的,zabbix中定义的微信接收者

        local PartyID=2#部门ID 

printf "{\n"

printf "\"touser\":\"$UserID\",\n"

printf "\"toparty\":\"$PartyID\",\n"

printf "\"msgtype\":\"text\",\n"

printf "\"agentid\": \"$AppID\",\n"

printf "\"text\": {\n"

printf "\"content\": \"$Msg\"\n"

printf "},\n"

printf "\"safe\":\"0\"\n"

printf "}\n"

}

 

/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL#调用接口发消息
      企业号支持的格式:http://qydev.weixin.qq.com/wiki/index.php?title=消息类型及数

mv WebChat.sh /usr/local/zabbix/share/zabbix/alertscripts
chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh

      服务器端最后配置与email发送类似,设置

Media type > User > Action

详细步骤省略