一、前言
生产服务器需要实时监控资源使用率,防止 CPU、内存、磁盘爆满导致业务宕机。本脚本实现:CPU使用率监控、内存监控、磁盘空间监控、异常日志告警、阈值自定义,可定时巡检服务器健康状态。
二、服务器资源监控完整脚本(可直接上线)
#!/bin/bash # 服务器资源监控告警脚本 LOG_FILE="/var/log/monitor.log" # 阈值定义 CPU_THRESH=85 MEM_THRESH=85 DISK_THRESH=85 log_warn(){ echo "[$(date +%Y-%m-%d\ %H:%M:%S)] [WARN] $1" | tee -a $LOG_FILE } # 1. CPU使用率监控 CPU_USE=$(top -bn1 | grep Cpu | awk '{print $2}' | cut -d% -f1) if [ ${CPU_USE%.*} -gt $CPU_THRESH ];then log_warn "CPU使用率过高!当前使用率:$CPU_USE%" fi # 2. 内存使用率监控 MEM_USE=$(free | grep Mem | awk '{print $3/$2 * 100}') if [ ${MEM_USE%.*} -gt $MEM_THRESH ];then log_warn "内存使用率过高!当前使用率:$MEM_USE%" fi # 3. 磁盘使用率监控 DISK_USE=$(df -h / | grep / | awk '{print $5}' | cut -d% -f1) if [ $DISK_USE -gt $DISK_THRESH ];then log_warn "根磁盘使用率过高!当前使用率:$DISK_USE%" fi三、脚本功能详解
监控 CPU 瞬时使用率,超过85%告警
监控系统内存占用,高负载告警
监控根分区磁盘使用率,防止磁盘爆满
所有异常写入日志,方便溯源排查
四、配置定时巡检(每10分钟监控一次)
crontab -e # 每10分钟执行一次 */10 * * * * /bin/bash /data/monitor.sh五、扩展:邮件/企业微信告警(进阶)
企业环境可搭配 mail 工具或企业微信机器人,触发阈值后实时推送告警消息,实现无人值守运维。
六、生产使用总结
备份脚本是运维必备兜底方案,必须定时执行;
监控脚本可提前发现服务器资源瓶颈;
所有自动化脚本必须:传参灵活、日志完整、容错完善。