硬盘空间告急?监控服务器容量,钉钉及时提醒!

在日常的服务器维护中,硬盘容量的监控是非常重要的。如果硬盘容量超过某个阈值,可能会导致服务器无法正常运行,影响业务的正常运作。为了避免这种情况,我们可以编写一个Shell脚本,定期检查硬盘容量,当超过设定的阈值时,通过钉钉推送告警消息给管理员,以便及时处理。

本文将介绍如何实现这个功能,并提供详细的步骤和代码示例。

实现思路

  1. 定义监控阈值和目标目录

    • 确定要监控的硬盘分区或目录,并设定一个合理的使用率阈值(如80%)。
  2. 编写Shell脚本

    • 编写脚本检查目标目录的硬盘使用情况。

    • 当使用率超过设定的阈值时,构建告警消息。

    • 使用curl命令将告警消息发送到钉钉。

钉钉机器设置

钉钉机器人配置请参考这篇文章

编写Shell脚本

以下是监控硬盘容量并通过钉钉发送告警的Shell脚本:

bash 复制代码
#!/bin/bash

# 设置警告阈值
THRESHOLD=20

#钉钉WEBHOOK_URL
WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=$DingDingToken"


# 筛选需要检查的磁盘并进行检查
df -lPh | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  used=$(echo $output | awk '{print $1}' | cut -d'%' -f1)
  partition=$(echo $output | awk '{print $2}'| head -n 1)

  if (( used >= THRESHOLD )); then
    # 构建payload
    PAYLOAD=$(cat <<-EOF
{
"msgtype": "markdown",
"markdown": {
"title":"Linux服务器磁盘空间告警",
"text":"
##### Linux服务器磁盘空间告警 \n
>  ##### <font color=#67C23A> 【服务器: </font> <font color=#FF0000> $HOSTNAME</font>】 的磁盘空间超过阀值</font> :<font color=#FF0000> $THRESHOLD%  </font> \n
>  ##### <font color=#67C23A> 【服务器IP】</font> :<font color=#FF0000> $( hostname -I | awk '{print $1}') </font> \n
>  ##### <font color=#67C23A> 【告警时间】</font> :<font color=#FF0000> $(date +"%Y-%m-%d %H:%M:%S") </font> \n
>  ##### <font color=#67C23A> 【磁盘空间占用高的分区】:<font color=#FF0000> $partition </font> 已使用 <font color=#FF0000>$used%</font> \n
>  ##### <font color=#67C23A>  该分区具体df -PTh信息如下: </font> \n
>  ##### <font color=#FF0000>  $(df -lPTh | head -n 1) </font> \n
>  ##### <font color=#FF0000>  $(df -lPTh| grep $partition) </font> \n
"
}
}
EOF
    )

    # 发送告警 (自行替换钉钉Webhook机器人的URL)
    curl -H "Content-Type: application/json" -X POST -d "$PAYLOAD"  $WEBHOOK_URL
    echo $PAYLOAD
  fi
done

脚本使用

把上述的代码,拷贝到服务器上,新建一个名为disk_usage_check.sh,并赋予执行的权限,本案为了测试,把硬盘的阈值设置了20%。当我们执行脚本后,钉钉就会收到如下图的一条告警。

shell 复制代码
root@racknerd-a7aa50:~/script# ./disk_usage_check.sh

设置定时任务

为了定期执行这个脚本,可以将其添加到crontab中。使用以下命令编辑crontab

bash 复制代码
crontab -e

在打开的编辑器中添加以下内容,每小时检查一次硬盘容量:

bash 复制代码
0 * * * * /root/script/disk_usage_check.sh

/root/script/cript.sh替换为实际脚本的路径。

总结

通过上述思路,我们实现了一个简单的硬盘容量监控脚本,能够在硬盘使用率超过设定的阈值时,通过钉钉发送告警消息。这种方式能够帮助管理员及时发现和处理服务器硬盘空间不足的问题,保障服务器的稳定运行。您可以根据实际需求调整阈值和检测频率,并结合其他监控手段,构建更加完善的服务器监控体系。

相关推荐
Diamond技术流42 分钟前
从0开始学习Linux——环境变量详解
linux·服务器·学习·centos·软件安装·环境变量
疯狂吧小飞牛42 分钟前
openssl颁发包含主题替代名的证书–SAN
运维·服务器·网络
疯狂吧小飞牛44 分钟前
openssl创建自签名证书
linux·服务器·ssl
qhd吴飞1 小时前
在linux下用二进制方式安装mysql8
linux·运维·服务器
刘登辉1 小时前
雷电模拟器charles代理抓包
运维·服务器
股票GPT分析1 小时前
《Python 股票交易分析:开启智能投资新时代》(二)
大数据·服务器·python·c#·fastapi
Wang's Blog1 小时前
RocketMQ: Broker 使用指南
服务器·网络·rocketmq
抽象文学带师2 小时前
配置ssh免密登陆
运维·服务器·ssh
YiSLWLL2 小时前
Django+Nginx+uwsgi网站使用Channels+redis+daphne实现简单的多人在线聊天及消息存储功能
服务器·数据库·redis·python·nginx·django
Viktor_Ye2 小时前
实现金蝶云星空与钉钉数据无缝集成的技术方法
java·大数据·钉钉