邮件脚本报警
官方zabbix脚本文档
https://www.zabbix.com/documentation/4.0/zh/manual/
案例背景
企业使用centos6,zabbix2.* ,zabbix没有email报警媒介模块
1.关闭zabbix-server上的邮件服务,安装mailx
[root@zabbix-server ~]# systemctl stop postfix.service
[root@zabbix-server ~]# systemctl disable postfix.service
Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
[root@zabbix-server ~]# yum -y install mailx
2.编辑mailx的配置,指定收件邮箱和用户密码
[root@zabbix-server ~]# vim /etc/mail.rc
......
set from=3065455011@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=3065455011@qq.com
set smtp-auth-password=ljzxbtttimmbdgdh
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
3.测试邮件
[root@zabbix-server ~]# echo 欢迎使用! | mail -s 请柬 3065455011@qq.com
[root@zabbix-server ~]# Error in certificate: Peer's certificate issuer has been marked as not trusted by the.
4.登录qq邮箱查看
5.zabbix-server编写邮件报警脚本
[root@zabbix-server ~]# yum -y install dos2unix //安装工具
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim email_notice.sh
#!/bin/bash
#export UTF-8
FILE=/tmp/mail.txt
echo "$3" > $FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
[root@zabbix-server alertscripts]# chmod +x email_notice.sh //赋予执行权限
6.zabbix web控制台添加邮件报警脚本
(1)管理 – 报警媒介类型 – 关闭已有的email报警 – 右上角“创建媒体类型” – “名称,类型(脚本)–脚本名称(必须写对),参数添加3个:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}” – 更新
(2)右上角 – 小人(用户) – 报警媒介 – 添加 – “类型(邮件脚本,收件人:真实邮箱地址)” – 停用已有的 – 更新
7.登录qq邮箱查看
邮件脚本报警设置成功
微信报警(企业微信)
1.申请企业微信(步骤略)
2.创建应用(报警机器人)
应用管理 – 创建应用 – 上传logo – 创建应用名称(报警机器人) – 应用介绍(报警提示) – 设置课件范围 – 创建应用
3.复制应用数据
点击报警机器人复制
AgentId 1000002
Secret EKD_UTFTQSElUbTv36gPsArEkgAPQUAkgakQckPSz0E
4…编写python微信报警脚本,并修改企业id和用户密码
更改 企业ID、报警机器人密码、报警机器人ID
[root@zabbix-server alertscripts]# [root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim weixin.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')
corpid='ww367a17810d625bee' //企业微信的ID号
appsecret='EKD_UTFTQSElUbTv36gPsArEkgAPQUAkgakQckPSz0E' // 报警机器人的密码(上面复制的数据)
agentid=1000002 //报警机器人的ID号(上面复制的数据)
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]
params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
[root@zabbix-server alertscripts]# chmod 777 weixin.py //赋予执行权
[root@zabbix-server alertscripts]# dos2unix -k winxin.py //格式转换
[root@zabbix-server alertscripts]# ./weixin.py //执行完 不管出现什么提示或者报错都不用管 直接往下做
[root@zabbix-server alertscripts]# chown zabbix:zabbix /tmp/weixin.log ///赋权weixin.log
5.测试发送微信
[root@zabbix-server alertscripts]# ./weixin.py WangFuPing 报错 HTTP...
6.zabbix web添加微信报警
(1)管理 – 报警媒介类型 – 右上角“创建媒体类型” – “名称(企业微信),类型(脚本),脚本名称(必须写对),参数添加3个:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}” – 更新
(2)右上角 – 小人(用户) – 报警媒介 – “类型(企业微信,收件人:微信账号)” – 添加 – 停用已有的账户 – 更新
(微信报警设置成功)
拓展(修改邮件通知内容)
1.配置–动作–Report problems to Zabbix administrators
对应内容解释
操作:修改默认标题,修改消息内容
主题:Problem:
- {EVENT.NAME}故障
- {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}
ENT.DATE} {EVENT.TIME}
- 告警等级:{TRIGGER.SEVERITY}
- 告警信息: {TRIGGER.NAME}
- 告警项目:{TRIGGER.KEY1}
- 问题详情:{ITEM.NAME}:{ITEM.VALUE}
- 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
- 事件ID:{EVENT.ID}
2.修改后,更新