文章目录
一. 邮件报警
主机—监控项—触发器—动作—媒介
1.qq的授权码
保存授权码
1.创建监控项
2. 触发器
3. 动作
报警信息
默认标题 {TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容 告警主机:{HOST.NAME}
告警IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}-{ITEM.VALUE}
事件ID:{EVENT.ID}
4.创建报警媒介
5. 关联至用户
6.测试
关掉httpd然后
zabbix监控端:测试授权码
yum -y install mailx
vim /etc/mail.rc
'//末尾添加'
set from=邮箱
#如果时163 就是smtp.163.com
set smtp=smtp.qq.com
set smtp-auth-user=邮箱
set smtp-auth-password=邮箱授权码
set smtp-auth=login
测试
echo "hello tomorrow" | mail -s "test" 邮箱
写脚本
cd /usr/lib/zabbix/alertscripts
vim mailx.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
创建日志文件并修改权限并测试
touch /tmp/mailx.log
chown -R zabbix.zabbix /tmp/mailx.log
chmod +x mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/
sh mailx.sh 邮箱 zabbix "this is test"
方法二
用户—添加报警邮箱—在报警媒介中,添加
配置—动作
报警媒介类型
类型:脚本方式—调用第三方接口
添加用户
创建动作
如果是多个条件:触发条件–计算方式–选或 or
动作
默认标题 {TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容 告警主机:{HOST.NAME}
告警IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}-{ITEM.VALUE}
事件ID:{EVENT.ID}
如果有多个操作细节。就涉及 分层报警
恢复操作,也得同上添加一个恢复操作
测试
systemctl stop sshd
在qq邮箱中
systemctl start sshd
二. 微信报警
1. 基础环境
注册一个企业微信
https://www.tanmarket.cn/production/business-wechat.html?tid=E67BBF294596AF35
创建账号
用于发送微信报警信息
企业信息:
企业 ID, 在发送微信报警信息的时候会调用
测试发送信息
点击发送
在手机端就会收到
脚本
参考
https://work.weixin.qq.com/api/doc#90000/90003/90487
先获取 token, token 是通过 corpid(企业 ID)和 corpsecret(应用 Secret)获取到发消息 api 见发送应用消息,可以看到其实就是一个 post 请求
在Server端:脚本
vim /usr/local/zabbix/share/zabbix/alertscropts/weixin.py
#!/usr/bin/env python
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='企业ID'
appsecret="秘钥"
agentid="AgentID"
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]
message=sys.argv[2] + "\n\n" +sys.argv[3]
params={
"touser": touser,
"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)
替换’企业ID’,“秘钥”,“AgentID”
安装requests模块
apt install python-pip
pip install requests
测试
chmod +x weixin.py
谁 主题 内容
python weixin.py qcq "这是主题" "这是内容"
zabbix 配置
- zabbix 添加报警媒介类型
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
-
联系添加报警媒介
-
配置动作
4. 测试,手动触发报警
出错—>脚本未放到指定位置
Cannot exectue command “/usr/local/zabbix/share/zabbix/alertscripts/weixin.py”: [2] No such file or directory
放到位置
/usr/local/zabbix/share/zabbix/alertscripts/weixin.py
三. 短信报警(收费的)
https://www.yunpian.com/
变量信息:
短信报警参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
脚本
vim linux.sh
#!/bin/bash
source /etc/profile
PHONE=$1
SUBJECT=$2
MESSAGE=$3
/usr/bin/curl -X "POST" "https://sms.yunpian.com/v2/sms/single_send.json" \
-H "content-type: application/x-www-form-urlencoded" \
-d "apikey=APIKEY" \
-d "mobile=${PHONE}" \
-d "text=${MESSAGE}"
echo $? >> /tmp/linux_zabbix_sms.txt
echo $1 $3 >> /tmp/linux_zabbix_sms.txt
测试
bash linux.sh 手机号 名称 信息
四. 第三方短信报警服务商(微信公众号、钉钉)
创建钉钉机器人、微信应用
钉钉报警:参考