zabbix4.4邮箱、钉钉报警
zabbix监控主机指标参数,当监控项满足触发器要求时发生报警,可以采用邮箱、钉钉、企业微信、短信报警,由于没有企业微信和短信猫,只演示邮箱和钉钉报警。
一、安装zabbix
二、配置邮箱报警
收发邮箱已我的QQ邮箱为例,163等主流的邮箱大致一样
1.设置邮件模板
管理-报警媒介类型(系统自带Emali模板)
2.设置发件箱
管理-报警媒介类型
注意:密码需要登录qq邮箱生成授权码,具体获取如下
配置完成
3.配置收件箱
管理-用户-报警媒介
4.添加一个触发器
添加故障报警信息
添加恢复信息
5.故障测试
已磁盘空间不能小于10G为例
通过dd模拟占用磁盘空间
dd if=/dev/zero of=test bs=6M count=1000
占用前
占用后
查看报警
收到告警
6.恢复测试
删除dd创建的文件块
二、配置钉钉告警
1.创建钉钉机器人
下载钉钉电脑版-创建群-群助手-添加机器人-得到Webhook
,复制下来
启动ip地址通过zabbix_server服务器运行curl ip.sb
获取
2.zabbix_server配置文件修改
mkdir -p /usr/local/Zabbix/alertscripts
cd /usr/local/Zabbix/alertscripts
编写dingding.py脚本(网上找py大神的案例)
将上面复制的Webhook
添加至脚本中
vim dingding.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=7c143476006b59ea176e1033e56dfe9acc6daf2160c77f14d3936b8e264d1152"
# 改成自己的Webhook
def msg(text):
json_text= {
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
"186..."
],
"isAtAll": False
}
}
print requests.post(api_url,json.dumps(json_text),headers=headers).content
if __name__ == '__main__':
text = sys.argv[1]
msg(text)
增加执行权限
chmod +x dingding.py
更改用户组
chown zabbix:zabbix dingding.py
3.修改zabbix_server配置文件
vim /usr/local/Zabbix/etc/zabbix_server.conf
末尾添加
AlertScriptsPath=/usr/local/Zabbix/alertscripts
4.重启zabbix
/etc/init.d/zabbix_server restart
5.创建报警媒介
添加以下参数
{ALERT.MESSAGE}
6.设置接收用户
7.创建触发器
参照邮箱报警设置
8.故障测试
dd if=/dev/zero of=test bs=6M count=1000
测试正常
附:告警模板
告警模板
默认标题:故障{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}