linux|zabbix监控服务器cpu温度,通过钉钉来报警

做这个的目的是因为有一次办公室机房空调故障,温度升高,导致机房的服务器全部被热死,为了必免再次出现此情况,所以就想到用zabbix来监控服务器的cpu温度,然后通过钉钉来报警,这样就能及时发现了。其实现在环境监控有很多专业设备,如果觉得麻烦,也是可以购买专业设备的。
一、系统环境
CentOS Linux release 7.9.2009 (Core)
zabbix-server-mysql-5.0.12-1.el7.x86_64
zabbix-apache-conf-scl-5.0.12-1.el7.noarch
zabbix-release-5.0-1.el7.noarch
zabbix-agent-5.0.12-1.el7.x86_64
zabbix-web-5.0.12-1.el7.noarch
zabbix-web-deps-scl-5.0.12-1.el7.noarch
zabbix-get-5.0.12-1.el7.x86_64
zabbix-web-mysql-scl-5.0.12-1.el7.noarch
zabbix-agent-5.0.12-1.el7.x86_64
二、zabbix server配置
1、建一个新的host groups
configuration==>Host groups==>create host group 取个名字就行。
2、建一个新的Template
configuration==>Templates==>create Template
linux|zabbix监控服务器cpu温度,通过钉钉来报警
文章图片

3、添加监控项
configuration==>Templates==>选择创建好的模板【GET-CPU-TEMP】==>items==>create item
【linux|zabbix监控服务器cpu温度,通过钉钉来报警】标*号的都需要填写
Name:监控项名称
Type:一般选zabbix agent
Key:这个很重要,要跟zabbix-agent的脚本上取温度脚本一样
Type of information:取数字浮点数就行
Units:这里监控是温度
Update interval:间隔5s更新一次。
后面都 默认就行
linux|zabbix监控服务器cpu温度,通过钉钉来报警
文章图片

4、添加触发器
configuration==>Templates==>选择创建好的模板【GET-CPU-TEMP】==>Triggers==>create trigger
linux|zabbix监控服务器cpu温度,通过钉钉来报警
文章图片

最重要的添加表达式,前面监控项item添加完了,再点Add时,就可以看到这个item里,然后就选择表达方式,我这里用的是5分钟内,平均温度>=50度,就报警。
5、添加Action
configuration==>Action==>Trigger actions==>create action
linux|zabbix监控服务器cpu温度,通过钉钉来报警
文章图片

条件就是选择我们创建好的触发器就行。
configuration==>Action==>Trigger actions==>create action==>操作
选择发送对像、用什么发送,这里面就需要选择用钉钉,后面会介绍如何创建用钉钉发送
linux|zabbix监控服务器cpu温度,通过钉钉来报警
文章图片

6、添加报警媒介类型
#创建媒介类型
Administration==>Media types==>Create media type==>Media type
linux|zabbix监控服务器cpu温度,通过钉钉来报警
文章图片

#创建媒介消息模板
添加二个消息类型,一个出现问题 发送的模板,一个是问题恢复时发送的模板
linux|zabbix监控服务器cpu温度,通过钉钉来报警
文章图片

三、钉钉上添加机器人设置
1、建一个需要接收报警消息的组,把需要接收报警的人都添加到这个组
2、添加机器人
右上角==>群设置==>智能群助手==>添加机器人==>选择“自定义通过webhook接入自定义服务”
linux|zabbix监控服务器cpu温度,通过钉钉来报警
文章图片


linux|zabbix监控服务器cpu温度,通过钉钉来报警
文章图片

这里面安全设置比较重要,我这边设置“IP地址段”
四、被控端设置
1、需安装提取cpu温度的软件

apt-get install lm-sensors

2、配置脚本
cd /etc/zabbix/zabbix_agentd.conf.d #文件名自已随便取一个就行 #这个cpu_temp很重要,一定要跟前面的监控项设的key要一样 echo "UserParameter=cpu_temp[*],sensors|grep "Core $1"|cut -c 16-19|tail -n 1|cut -c 2-3 " >>userparameter_gpus.conf

3、重启zabbix-agent服务
systemctl restart zabbix-agent

4、在zabbix-Server端测试一下是否能取到cpu温度
zabbix_get -s 192.168.10.104 -p 10050 -k cpu_temp

五、zabbix-server上脚本设置
cd /usr/lib/zabbix/alertscriptsvim dingding.py

#!/usr/bin/env python #coding:utf-8 #zabbix钉钉报警 import requests,json,sys,os,datetime webhook="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxx"#说明:这里改为自己创建的机器人的webhook的值 user=sys.argv[1] text=sys.argv[3] data=https://www.it610.com/article/{"msgtype": "text", "text": { "content": text }, "at": { "atMobiles": [ user ], "isAtAll": False } } headers = {'Content-Type': 'application/json'} x=requests.post(url=webhook,data=https://www.it610.com/article/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()

chmod 777 /var/log/zabbix/dingding.log

#测试一下脚本是否可以用,如果在钉钉里创建的组可以收到此消息,说明是成功的,如果没有成功,根据日志解决问题
# ./dingding.py test test test

#重启zabbix-server服务
六、zabbix-server上 设置用户报警模板
管理===>用户==>报警媒介==>添加建好的DingDing,这时收件人选“手机号”
linux|zabbix监控服务器cpu温度,通过钉钉来报警
文章图片








    推荐阅读