【运维】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.在设置里点击机器人选项

【运维】shell监控脚本结合钉钉机器人实现服务及服务器监控告警_第1张图片

3.再点击添加机器人

【运维】shell监控脚本结合钉钉机器人实现服务及服务器监控告警_第2张图片

4.再点击选择自定义机器人

【运维】shell监控脚本结合钉钉机器人实现服务及服务器监控告警_第3张图片

5.设置机器人名称、是否加密、是否限制ip、以及触发关键字

【运维】shell监控脚本结合钉钉机器人实现服务及服务器监控告警_第4张图片

6.获取机器人的Webhook地址

(不要公布在外部网站上,泄露后有安全风险)
【运维】shell监控脚本结合钉钉机器人实现服务及服务器监控告警_第5张图片
到这里你自定义的机器人就设置好了,如有不明可以参考钉钉官方文档。

三、编写监控脚本:

在服务器上创建一个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监控脚本结合钉钉机器人实现服务及服务器监控告警_第6张图片

脚本执行成功,消息发送成功。

总结

以上就是shell脚本+钉钉机器人实现监控服务器的内容,本文主要讲述了钉钉机器人的创建方法以及结合shell脚本的使用,大家可以根据个人的需求自行创建属于自己的机器人,监控脚本只作为参考,你可以写出更优秀的脚本。

你可能感兴趣的:(运维,服务器,钉钉,云计算)