当前位置:网站首页 >  百科

Linux通用服务器磁盘告警设置从零到一完整实操指南

时间:2026年06月01日 17:16:02 来源:易频IT社区

一、方案说明

本文采用shell脚本+定时任务的方案实现磁盘告警,兼容所有主流Linux发行版(CentOS/Debian/Ubuntu都可用),不需要部署复杂的监控服务,零成本10分钟就能配置完成,告警支持企业微信机器人、邮件两种常用方式,可按需选择。

二、前置准备

2.1 选择告警接收方式

目前企业微信机器人是最常用的告警方式,实时推送、免配置邮箱,本文默认用这个方案,文末给出邮件告警的替代配置。

获取企业微信机器人Webhook步骤:

  • 打开你要接收告警的企业微信群聊,点击群设置 → 添加群机器人
  • 新建机器人后复制生成的Webhook地址,保存备用

2.2 确定告警阈值

常规服务器建议设置80%使用率触发告警,也就是磁盘用了超过80%就发通知,可根据自己的需求调整。

三、编写监控告警脚本

首先登录你的服务器,执行以下命令创建脚本文件:

```
vi /usr/local/bin/disk_alert.sh
```

insert进入编辑模式,粘贴以下完整可运行的脚本内容:

```bash
!/bin/bash
-- 可修改配置区域开始 --
ALERT_THRESHOLD=80   告警阈值,单位%,按需修改
WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/xxx"   替换成你的企业微信机器人Webhook地址
-- 可修改配置区域结束 --
获取所有实体磁盘的使用率,过滤虚拟文件系统
DISK_INFO=$(df -P | grep -vE 'Filesystem|tmpfs|devtmpfs|overlay')
ALERT_CONTENT="【服务器磁盘告警】\n服务器IP: $(curl -s ifconfig.me)\n"
遍历检查每个磁盘
while read line; do
USAGE=$(echo $line | awk '{print $5}' | sed 's/%//g')
MOUNT_POINT=$(echo $line | awk '{print $6}')
DEVICE=$(echo $line | awk '{print $1}')
if [ $USAGE -ge $ALERT_THRESHOLD ]; then
ALERT_CONTENT="${ALERT_CONTENT}> 设备:${DEVICE}\n> 挂载点:${MOUNT_POINT}\n> 当前使用率:${USAGE}%\n> 阈值:${ALERT_THRESHOLD}%\n\n"
fi
done <<< "$DISK_INFO"
有超阈值磁盘则发送告警
if [ "$(echo -n $ALERT_CONTENT | wc -c)" -gt 50 ]; then
curl -s -X POST $WEBHOOK_URL -H 'Content-Type: application/json' -d "{
\"msgtype\": \"text\",
\"text\": {
\"content\": \"$ALERT_CONTENT\"
}
}" > /dev/null 2>&1
fi
```

粘贴完成后,修改脚本开头可修改配置区域的内容:把阈值改成你需要的数值,把Webhook地址替换成你刚才复制的地址,然后按ESC,输入:wq回车保存退出。

3.1 添加执行权限并测试

执行以下命令给脚本添加可执行权限:

```
chmod +x /usr/local/bin/disk_alert.sh
```

接下来测试脚本是否正常工作:临时把阈值改成1(所有磁盘使用率都会超过1,触发告警),手动运行脚本:

```
/usr/local/bin/disk_alert.sh
```

10秒内如果能在企业微信群收到告警,说明配置正常,然后再把脚本里的阈值改回你需要的数值即可。如果收不到,参考本文最后的排查步骤解决。

四、配置定时自动检查

配置定时任务让脚本每30分钟自动检查一次磁盘,这个频率足够及时发现问题,也不会消耗服务器资源。

执行以下命令打开crontab定时任务编辑器:

Linux通用服务器磁盘告警设置从零到一完整实操指南

```
crontab -e
```

在文件的最后一行添加以下内容:

```
/30     /usr/local/bin/disk_alert.sh
```

保存退出后,执行以下命令验证定时任务是否添加成功:

```
crontab -l
```

输出内容里能看到刚才添加的那一行说明配置成功,接下来验证crond服务是否正常运行:

```
systemctl status crond
```

如果显示active (running)就是正常,如果未运行,执行以下命令启动并设置开机自启:

```
systemctl start crond && systemctl enable crond
```

五、邮件告警替代配置

如果你需要用邮件接收告警,按照以下步骤修改即可:

5.1 安装邮件工具

CentOS执行:

```
yum install -y mailx curl
```

Debian/Ubuntu执行:

```
apt install -y mailutils curl
```

5.2 配置邮件授权

打开配置文件/etc/mail.rc,在文件末尾添加以下内容,替换成你自己的邮箱信息:

```
set from=your_alert@163.com
set smtp=smtp.163.com
set smtp-auth-user=your_alert@163.com
set smtp-auth-password=your_email_auth_code
set smtp-auth=login
```

注意这里的密码是邮箱的授权码,不是邮箱登录密码,可在邮箱设置里生成。

5.3 修改脚本发送逻辑

把原来脚本里的curl发送部分替换成以下内容,替换成你的收件邮箱:

```
echo "$ALERT_CONTENT" | mail -s "服务器磁盘告警" your_receive@xxx.com
```

其余步骤和企业微信方案完全一致。

六、常见问题排查

  • 测试收不到告警:首先检查curl是否安装,没有安装就执行对应命令安装;然后检查Webhook地址是否复制完整,服务器能否访问公网;
  • 手动运行正常,定时不触发:检查脚本路径是不是写了绝对路径,检查crond服务是否正常运行,检查脚本有没有加可执行权限;
  • 错误统计虚拟磁盘:脚本已经默认过滤了tmpfs等虚拟文件系统,如果还有不需要监控的挂载点,可在脚本的grep过滤规则里添加对应名称即可。

完成以上所有步骤后,磁盘告警就配置完成,后续磁盘使用率超阈值会自动推送通知,不需要人工定期登录检查。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图