在日常的 Linux 运维工作中,Centos系统监控 是保障服务器稳定运行的重要环节。当 CPU 使用率过高、磁盘空间不足或内存耗尽时,如果没有及时收到通知,可能会导致服务中断甚至数据丢失。本文将带你从零开始,编写一个简单但实用的 Centos监控告警脚本,即使你是运维小白,也能轻松上手!
在开始之前,请确保你的 CentOS 服务器满足以下条件:
首先,我们需要安装 mailx 用于发送告警邮件:
sudo yum install -y mailx
如果你使用的是阿里云、腾讯云等云服务器,可能还需要配置 SMTP 邮件转发。这里我们假设你已配置好本地邮件服务,或使用外部 SMTP(配置方法可参考官方文档)。
我们将监控三个关键指标:CPU 使用率、内存使用率和磁盘使用率。当任一指标超过阈值(例如 85%),就发送告警邮件。
创建脚本文件 /opt/monitor_alert.sh:
#!/bin/bash# 配置项THRESHOLD=85EMAIL="your_email@example.com"HOSTNAME=$(hostname)# 获取 CPU 使用率(排除空闲时间)CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}')CPU_USAGE=${CPU_USAGE%.*} # 取整数部分# 获取内存使用率MEM_INFO=$(free | grep Mem)MEM_TOTAL=$(echo $MEM_INFO | awk '{print $2}')MEM_USED=$(echo $MEM_INFO | awk '{print $3}')MEM_USAGE=$((100 * MEM_USED / MEM_TOTAL))# 获取根分区磁盘使用率DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | tr -d '%')# 检查并发送告警ALERT_MSG=""if [ $CPU_USAGE -gt $THRESHOLD ]; then ALERT_MSG+="⚠️ CPU 使用率过高: ${CPU_USAGE}%\n"fiif [ $MEM_USAGE -gt $THRESHOLD ]; then ALERT_MSG+="⚠️ 内存使用率过高: ${MEM_USAGE}%\n"fiif [ $DISK_USAGE -gt $THRESHOLD ]; then ALERT_MSG+="⚠️ 磁盘使用率过高: ${DISK_USAGE}%\n"fi# 如果有告警内容,发送邮件if [ -n "$ALERT_MSG" ]; then echo -e "服务器 [$HOSTNAME] 出现资源告警:\n\n$ALERT_MSG\n请及时处理!" | \ mail -s "【告警】$HOSTNAME 资源使用异常" $EMAIL echo "$(date): 告警已发送"else echo "$(date): 所有资源正常"fi 保存脚本后,赋予执行权限:
sudo chmod +x /opt/monitor_alert.sh
手动运行一次测试:
/opt/monitor_alert.sh
如果一切正常,你会在终端看到“所有资源正常”或“告警已发送”的提示。
为了让脚本每5分钟自动运行一次,添加到 crontab:
crontab -e
在打开的编辑器中添加以下行:
*/5 * * * * /opt/monitor_alert.sh >> /var/log/monitor.log 2>&1
这样,系统会每5分钟检查一次资源,并将日志记录到 /var/log/monitor.log 中。
这个基础脚本适合小型项目或学习用途。在生产环境中,你可以考虑:
通过这个简单的 服务器告警脚本,你已经迈出了 Linux运维自动化 的第一步!坚持实践,你会越来越熟练。
本文详细介绍了如何在 CentOS 上编写并部署一个轻量级的监控告警脚本。无论你是刚入门的运维新手,还是希望简化监控流程的开发者,这套方案都能为你提供即时的系统状态反馈,有效预防故障发生。
本文由主机测评网于2025-12-14发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025127411.html