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

3 篇文章 0 订阅
1 篇文章 0 订阅

做这个的目的是因为有一次办公室机房空调故障,温度升高,导致机房的服务器全部被热死,为了必免再次出现此情况,所以就想到用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

 3、添加监控项

 configuration==>Templates==>选择创建好的模板【GET-CPU-TEMP】==>items==>create item

*号的都需要填写

Name:监控项名称

Type:一般选zabbix agent

Key:这个很重要,要跟zabbix-agent的脚本上取温度脚本一样

Type of information:取数字浮点数就行

Units:这里监控是温度

Update interval:间隔5s更新一次。

后面都 默认就行

 4、添加触发器

configuration==>Templates==>选择创建好的模板【GET-CPU-TEMP】==>Triggers==>create trigger

最重要的添加表达式,前面监控项item添加完了,再点Add时,就可以看到这个item里,然后就选择表达方式,我这里用的是5分钟内,平均温度>=50度,就报警。

 5、添加Action

configuration==>Action==>Trigger actions==>create action

条件就是选择我们创建好的触发器就行。 

configuration==>Action==>Trigger actions==>create action==>操作

选择发送对像、用什么发送,这里面就需要选择用钉钉,后面会介绍如何创建用钉钉发送

 6、添加报警媒介类型

#创建媒介类型

Administration==>Media types==>Create media type==>Media type

 #创建媒介消息模板

添加二个消息类型,一个出现问题 发送的模板,一个是问题恢复时发送的模板

 三、钉钉上添加机器人设置

1、建一个需要接收报警消息的组,把需要接收报警的人都添加到这个组

2、添加机器人

右上角==>群设置==>智能群助手==>添加机器人==>选择“自定义通过webhook接入自定义服务”

 这里面安全设置比较重要,我这边设置“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/alertscripts

vim 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={
    "msgtype": "text",
    "text": {
        "content": text
    },
    "at": {
        "atMobiles": [
            user
        ],
        "isAtAll": False
    }
}
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()
chmod 777 /var/log/zabbix/dingding.log

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

# ./dingding.py test test test

#重启zabbix-server服务

 六、zabbix-server上 设置用户报警模板

管理===>用户==>报警媒介==>添加建好的DingDing,这时收件人选“手机号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归海听雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值