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

在日常的服务器维护中,硬盘容量的监控是非常重要的。如果硬盘容量超过某个阈值,可能会导致服务器无法正常运行,影响业务的正常运作。为了避免这种情况,我们可以编写一个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替换为实际脚本的路径。

总结

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

相关推荐
gx23485 分钟前
HCLP--MGER综合实验
运维·服务器·网络
angushine21 分钟前
鲲鹏服务器部署Kafka2.8.1
运维·服务器
-XWB-30 分钟前
【安全漏洞】防范未然:如何有效关闭不必要的HTTP请求方法,保护你的Web应用
服务器·网络·http
一个网络学徒1 小时前
MGRE综合实验
运维·服务器·网络
墨痕砚白2 小时前
VMware Workstation Pro虚拟机的下载和安装图文保姆级教程(附下载链接)
服务器·windows·vmware·虚拟机
白鹭2 小时前
基于LNMP架构的分布式个人博客搭建
linux·运维·服务器·网络·分布式·apache
无敌的牛4 小时前
Linux文件理解,基础IO理解
linux·运维·服务器
angushine4 小时前
鲲鹏服务器logstash采集nginx日志
运维·服务器·nginx
未来之窗软件服务4 小时前
跨平台 WebSocket 服务器的设计与实现 —— 基于.NET 8 的跨操作系统解决方案linux,macos,windows——开发工具
linux·服务器·websocket·仙盟创梦ide·东方仙盟