云服务器监控脚本怎么写
在远程办公的日常中,很多人会用云服务器跑项目、搭网站或者做数据同步。一旦服务器出问题,比如CPU飙高、内存爆满、磁盘写满,可能直接导致服务中断。这时候,一个简单的监控脚本就能帮你提前发现问题,避免半夜被报警电话吵醒。
其实写一个基础的云服务器监控脚本并不难,用Shell就能搞定。下面这个例子,能检查CPU、内存、磁盘使用率,并在超过设定阈值时输出提示信息。你可以把它加到crontab里定时运行。
#!/bin/bash
# 监控脚本:check_server.sh
# 设置阈值
CPU_THRESHOLD=80
MEM_THRESHOLD=80
DISK_THRESHOLD=85
# 获取CPU使用率(取1分钟平均值)
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1 | awk '{printf "%d", $1}')
# 获取内存使用率
MEM_USAGE=$(free | grep Mem | awk '{printf("%.0f", $3/$2 * 100)}')
# 获取根分区磁盘使用率
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | cut -d'%' -f1)
# 输出当前时间
echo "[监控时间] $(date '+%Y-%m-%d %H:%M:%S')"
# 判断并告警
if [ $CPU_USAGE -gt $CPU_THRESHOLD ]; then
echo "警告:CPU使用率过高:${CPU_USAGE}%"
fi
if [ $MEM_USAGE -gt $MEM_THRESHOLD ]; then
echo "警告:内存使用率过高:${MEM_USAGE}%"
fi
if [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then
echo "警告:磁盘使用率过高:${DISK_USAGE}%"
fi
# 如果一切正常
if [ $CPU_USAGE -le $CPU_THRESHOLD ] && [ $MEM_USAGE -le $MEM_THRESHOLD ] && [ $DISK_USAGE -le $DISK_THRESHOLD ]; then
echo "系统状态正常:CPU ${CPU_USAGE}%,内存 ${MEM_USAGE}%,磁盘 ${DISK_USAGE}%"
fi把这个脚本保存为 check_server.sh,然后给它执行权限:
chmod +x check_server.sh接着可以手动试运行一下:
./check_server.sh如果想让它每5分钟检查一次,可以编辑crontab:
crontab -e添加一行:
*/5 * * * * /path/to/check_server.sh >> /var/log/server_monitor.log 2>&1这样日志就会记录到指定文件里。你还可以进一步扩展功能,比如让脚本通过邮件或企业微信发送告警。例如,在检测到异常时调用 curl 发送消息到钉钉机器人,这样手机就能实时收到提醒。
别小看这个几行的脚本,它就像你服务器的“体温计”。远程办公期间,没人盯着机房,自动化监控就是最靠谱的值班员。我朋友就在家里用这招发现了数据库日志疯狂增长的问题,及时清理,避免了服务崩溃。
脚本可以根据实际需求调整,比如监控特定进程是否存在、网络延迟是否异常,甚至检查Web服务能否正常访问。核心思路都一样:获取数据、判断阈值、触发动作。不需要复杂的工具,一个bash脚本就能撑起基本的运维防线。