一、安装zabbix服务端
Linux系统上搭建,配置前先安装好apache或nginx和mysq或PostgreSQL数据库;
之后按照官网给出的各个系统版本对应的安装步骤安装zabbix。
官网安装步骤地址:https://www.zabbix.com/cn/download?zabbix=5.4&os_distribution=centos&os_version=8&db=mysql&ws=apache
具体步骤参见官网。
二、安装zabbix客户端
在被监控机上安装zabbix客户端
yum install -y zabbix-agent
之后修改agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
将以下三行取消注释,并将IP地址改成自己zabbix服务端的IP即可。
Server=203.57.202.125
ServerActive=203.57.202.125
ListenPort=10050
三、登录zabbix网页端
- 如机器公网IP没有备案,无法使用默认的80端口,需要修改 /etc/nginx/conf.d/zabbix.conf文件
如使用apache也需要修改默认的监听端口和主机IP。
将以上两项修改为自定义的端口和自己的公网IP
- 默认初始 账号:Admin
密码:zabbix
- 添加要被监控的主机
之后填写必填选项,Interfaces,之后在模板中选择想要监控的系统信息添加即可。
四、配置钉钉机器人
点击右上角加号=>发起群聊=>同学群=>将接受告警的人员拉入群聊。
点击刚刚创建的群聊,然后点击聊天消息界面右上角的群设置按钮=>智能群助手
在弹出的界面点击添加机器人=>自定义(通过webhook接入自定义服务)=>添加到刚才创建的群组=>安全设置选择自定义关键词=>将关键词设置为告警二字,完成即可。
留存Webhook地址一会儿使用。
五、配置监控脚本
默认存放zabbix脚本的目录为: /usr/lib/zabbix/alertscripts/
- 切换到该目录下,创建dingding.py脚本
cat > /usr/lib/zabbix/alertscripts/dingding.py <<EOF
#说明:以下脚本只要将webhook改为你自己的webhook值即可,其它的不需要改变。
#!/usr/bin/python
#-*- coding: utf-8 -*-
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=feb43aea482d9da72e781d92dbfc074f701642a166f31194ff347954f500a404"
#说明:这里改为自己创建的机器人的webhook的值
user=sys.argv[1]
#发给钉钉群中哪个用户
text=sys.argv[3]
#发送的报警内容
data={
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
user
],
"isAtAll": False
}
}
#钉钉API固定数据格式
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):
f=open("/var/log/zabbix/dingding.log","a+")
else:
f=open("/var/log/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))
f.close()
else:
f.write("\n"+str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + "\n" + str(text))
f.close()
#将发送的告警信息写入本地日志/var/log/zabbix/dingding.log中
EOF
- 将此脚本添加执行权限。
- 创建日志文件
touch /var/log/zabbix/dingding.log
chown zabbix.zabbix /var/log/zabbix/dingding.log
- 测试脚本是否正常
./dingding.py dingding test "告警,测试配置是否正常"
参数说明:
dingding:群组里接收消息的任意一人的钉钉号
test:这里因脚本中没有设置接收参数,所以无实际意义,仅仅起到变量占位的作用。
告警,测试配置是否正常:这段文字中为告警消息中显示的信息,必须包含刚才机器人安全设置中的关键词(告警)否则将不会收到消息。
报错解决:
如报错:ImportError: No module named requests
解决办法:
安装requests模块
pip install --upgrade pip
pip install requests
如pip无法使用,检查自己的python版本,如为python3.x,请使用 pip3 install requests
再次测试:
如未收到消息,也可到 /var/log/zabbix/dingding.log中查看日志信息。
六、配置zabbix告警
6.1 创建报警媒介类型
脚本参数:
{ALERT.SENDTO}
#对应脚本中的,user=sys.argv[1](发给钉钉群中哪个用户)。
{ALERT.SUBJECT}
#发送的信息的标题,在”报表”的”动作日志”中可以看到。
{ALERT.MESSAGE}
#对应脚本中的,text=sys.argv[3](发送的报警内容)。
6.2 创建报警动作
勾选需要的触发器,选择,添加。
参数解读:
“主题”对应”钉钉告警”媒介中的:{ALERT.SUBJECT}
“消息”对应”钉钉告警”媒介中的:{ALERT.MESSAGE}
主题:
故障名称(触发器名称):{EVENT.NAME}
消息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢复操作基本相同,添加细节操作
主题:
故障恢复:{EVENT.NAME}
消息:
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE}{EVENT.RECOVERY.TIME}
主机IP:{HOST.IP}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
6.3 给用户添加报警媒介
七、测试
添加一条触发器
添加成功后,在被监控机上停掉zabbix-agent,查看是否可以收到钉钉告警消息。
成功!!!
评论前必须登录!
立即登录 注册