【运维】shell监控脚本结合钉钉机器人实现服务及服务器监控告警
文章目录
前言一、监控shell脚本和钉钉机器人二、创建钉钉机器人:1.在钉钉群聊里点击设置2.在设置里点击机器人选项3.再点击添加机器人4.再点击选择自定义机器人5.设置机器人名称、是否加密、是否限制ip、以及触发关键字6.获取机器人的Webhook地址
三、编写监控脚本:1.代码编写2.解释主要与钉钉机器人联动的代码3.钉钉官网代码
四、设置定时任务1.使用Cron或其他工具设置定时任务来定期运行监控脚本2.给脚本加执行权限
五、测试和部署总结
前言
当我们运维服务和服务器时,监控告警是必不可少的一项工作。通过监控告警,我们可以及时发现并解决潜在的问题,保证服务的稳定性和可靠性。而结合shell脚本和钉钉机器人,能够更加方便地实现服务及服务器的监控告警。
本文将介绍如何利用shell脚本编写监控脚本,监控服务器的状态、服务的运行情况等,并通过钉钉机器人发送告警信息。文章将详细介绍如何编写一些常见的监控脚本,如检查HTTP服务的可用性、检查磁盘空间使用情况等。同时,还将介绍如何配置和使用钉钉机器人,将监控脚本的告警信息实时发送到指定的钉钉群组中。
通过本文的学习和实践,您将能够掌握利用shell脚本和钉钉机器人实现服务及服务器监控告警的方法,提升运维工作的效率和准确性。希望本文能为您在实现监控告警方面提供一些思路和帮助。
一、监控shell脚本和钉钉机器人
钉钉机器人是钉钉平台提供的一种自动化机器人,可以通过接口与其他系统进行集成,实现自动化的消息推送和交互。钉钉机器人可以用于各种场景,包括但不限于实时监控告警、任务提醒、数据推送等。
钉钉机器人的主要功能包括:
消息推送:可以向指定的钉钉群组或个人发送消息,包括文本、链接、图片等形式的消息。交互式应答:可以通过设置机器人的关键词和相应的回复内容,实现对用户消息的自动应答。定时任务:可以设置机器人定时发送消息,例如每天定时发送日报等。消息安全:可以通过设置密钥,对消息进行加密,确保消息的安全性。
我们可以实现监控shell脚本的告警功能,及时通知相关人员或群组,以便及时处理问题。接下来,我将介绍如何实现监控shell脚本结合钉钉机器人实现服务及服务器监控告警。
二、创建钉钉机器人:
1.在钉钉群聊里点击设置
2.在设置里点击机器人选项
3.再点击添加机器人
4.再点击选择自定义机器人
5.设置机器人名称、是否加密、是否限制ip、以及触发关键字
6.获取机器人的Webhook地址
(不要公布在外部网站上,泄露后有安全风险) 到这里你自定义的机器人就设置好了,如有不明可以参考钉钉官方文档。
三、编写监控脚本:
在服务器上创建一个shell脚本,用于监控服务或服务器的状态。 在脚本中添加相应的监控逻辑,例如检查服务是否正常运行、服务器负载是否过高等。 如果发现异常情况,可以使用curl命令将告警信息发送到钉钉机器人的Webhook地址。 使用curl发送告警信息:
1.代码编写
在监控脚本中,使用curl命令发送HTTP POST请求到钉钉机器人的Webhook地址。 在请求的数据中,包含告警信息的JSON格式,例如
#!/bin/bash
# 定义需要监控的端口列表(这里示例两个端口)
port_list="3306 46231"
# 定义接收通知的钉钉机器人的 Webhook URL
webhook_url="https://oapi.dingtalk.com/robot/send?access_token=xxxxx这里需要将xxxxxxxx替换为真实access_token"
#定义主机名称
zhujiname="我的服务器"
# 获取本机IP地址输出本机的ip地址
local_ip=$(hostname -I | awk '{print $1}')
# 遍历所有端口并检查其连接状态
for port in $port_list; do
if ! nc -z localhost $port; then
# 如果发现不正常连接,通过钉钉机器人发送通知消息
curl -H "Content-Type: application/json" \
-d '{
"msgtype": "text",
"text": {
"content": "服务器监控: Port '"$port"' is not active on ('"$zhujiname"') ('"$local_ip"') at '"$(date)"'"
}
}' $webhook_url
fi
done
# 检查系统内存用量是否大于 90%
mem_used=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
if (( $(echo "$mem_used > 90" | bc -l) )); then
# 如果内存用量过高,通过钉钉机器人发送通知消息
curl -H "Content-Type: application/json" \
-d '{
"msgtype": "text",
"text": {
"content": "服务器监控: Memory usage is too high ('"$mem_used"'%) on ('"$zhujiname"') ('"$local_ip"') at '"$(date)"'"
}
}' $webhook_url
fi
# 检查系统磁盘使用情况是否大于 90%
disk_used=$(df -h / | awk '/\//{print $(NF-1)}')
if (( ${disk_used%\%} > 90 )); then
# 如果磁盘使用情况过高,通过钉钉机器人发送通知消息
curl -H "Content-Type: application/json" \
-d '{
"msgtype": "text",
"text": {
"content": "服务器监控: Disk usage is too high ('"$disk_used"') on ('"$zhujiname"') ('"$local_ip"') at '"$(date)"'"
}
}' $webhook_url
fi
2.解释主要与钉钉机器人联动的代码
# 如果发现不正常连接,通过钉钉机器人发送通知消息
curl -H "Content-Type: application/json" \
-d '{
"msgtype": "text",
"text": {
"content": "服务器监控: Port '"$port"' is not active on ('"$zhujiname"') ('"$local_ip"') at '"$(date)"'"
}
}' $webhook_url #这里的$webhook_url 我上方已经定义webhook地址,上方content里的内容可以自行定义,如果设置了触发关键词就要填写,例如我的关键词设置了‘服务器监控’,就必须再加上关键词,否则不会触发脚本发送
3.钉钉官网代码
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content":"我就是我, 是不一样的烟火"}}'
四、设置定时任务
1.使用Cron或其他工具设置定时任务来定期运行监控脚本
crontab -e
*/10 * * * * /root/jiankong.sh
2.给脚本加执行权限
chmod +x jiankong.sh
五、测试和部署
运行监控脚本并确保能够正确发送告警消息
脚本执行成功,消息发送成功。
总结
以上就是shell脚本+钉钉机器人实现监控服务器的内容,本文主要讲述了钉钉机器人的创建方法以及结合shell脚本的使用,大家可以根据个人的需求自行创建属于自己的机器人,监控脚本只作为参考,你可以写出更优秀的脚本。