基本思路就是:
- 1、先设置一个触发器
- 2、在设置一个动作,发送到邮箱、钉钉、企业微信、短信
- 2.1 设置一个动作,绑定一个监控项
- 2.1 操作,收集那些监控项的服务的信息,发送给那些用户,然后执行另外的操作,比如尝试恢复服务,尝试三次失败后再次发送一个更加严重的信息给用户,使用户加快解决的脚步
- 2.2 恢复操作,在收集到服务被恢复的信息后继续发一份服务运行正常的信息给用户
- 3、设置一些报警媒介
- 3.1 发送到邮箱 需要一个收件邮箱和这个邮箱的授权码
- 3.2 编写一个脚本 发送给能够使用token的软件 比如钉钉、企业微信等
- 3.3 发送短信给用户
启动zabbix-server容器
# docker run --name zabbix-appliance -t \
-p 10051:10051 \
-p 81:80 \
-d zabbix/zabbix-appliance:latest
设置触发器 配置--->主机--->触发器
查看设置完成后的信息 监测--->最新数据
添加动作 配置--->动作--->右上角创建动作
操作内容信息
告警主机: {HOSTNAME1}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME} : {ITEM.VALUE}
当前状态: {TRIGGER.STATUS} : {ITEM.VALUE1}
事件ID: {EVENT.ID}
添加用户报警媒介 管理--->用户--->右上角创建用户
查看邮箱中的邮件
设置可以在钉钉机器人和邮箱同时发送 并在报警后恢复服务
编写报警媒介
ding_msg.sh脚本详细
#!/bin/sh
if [ -z $1 ];then
echo "ding_msg:
$0 msg_content"
exit
fi ----设置帮助信息
msg_content=$1 ---从外面获取变量
web_hook='https://oapi.dingtalk.com/robot/send?access_token=0bc28ec73b870e692e4e25384d55f3896c2a80e03461fc2d877ce7023d079522
curl "${web_hook}" \
-H 'Content-Type: application/json' \
-d "{'msgtype': 'text',
'text': {
'content': 'zabbix.........${msg_content}'
}
}"
---hook是在钉钉机器人中获取到的
---content的信息是从外面获取到的信息
ding_msg.py
import requests
import sys
try:
msg_conment=sys.argv[1]
except Exception as e:
sys.exit("bye")
content = {
"msgtype": "text",
"text": {
"content": "zabbix...... {}".format(msg_conment)
},
"at": {
"atMobiles": [
#
],
"isAtAll": True ----设置艾特所有人
}
}
headers = {"Content-Type": "application/json;charset=utf-8"}
url="https://oapi.dingtalk.com/robot/send?access_token=0bc28ec73b870e692e4e25384d55f3896c2a80e03461fc2d877ce7023d079522"
r = requests.post(url=url,headers=headers,json=content)
print(r.content)
在这执行恢复操作时候需要将zabbix这个用户加入到sudo 容器中需要yum安装一个sudo
visudo进入后 将zabbix加进去
执行远程命令的时候需要在客户端修改一下配置文件
vi /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
将这个注释打开并置为1 意思是允许执行远程命令 就可以执行远程命令
在客户端将服务给停掉会发触发发消息
首先钉钉会收到,其次是邮箱
查看发送信息 监测--->问题
会看到没有报红说明已经报警后执行恢复操作了 那么你就可以看一下钉钉和邮箱,但是邮箱有可能进去后看不到,别着急,邮箱会有个时间间隔才能够收到
现在服务已经被恢复了