Files
aiapply/monitor.sh

49 lines
1.6 KiB
Bash
Raw Permalink Normal View History

2025-09-14 09:50:52 +08:00
#!/bin/bash
# PromptForge 服务监控脚本
LOG_FILE="/home/renjianbo/aiapply/logs/monitor.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
# 创建日志目录
mkdir -p /home/renjianbo/aiapply/logs
# 检查服务状态
if ! netstat -tlnp | grep -q :3000; then
echo "[$DATE] ❌ 服务未运行,尝试重启..." >> $LOG_FILE
cd /home/renjianbo/aiapply
pm2 restart promptforge
sleep 5
if netstat -tlnp | grep -q :3000; then
echo "[$DATE] ✅ 服务重启成功" >> $LOG_FILE
else
echo "[$DATE] ❌ 服务重启失败" >> $LOG_FILE
fi
else
echo "[$DATE] ✅ 服务运行正常" >> $LOG_FILE
fi
# 检查内存使用
MEMORY_USAGE=$(free | grep Mem | awk '{printf "%.1f", $3/$2 * 100.0}')
if (( $(echo "$MEMORY_USAGE > 80" | bc -l) )); then
echo "[$DATE] ⚠️ 内存使用率过高: ${MEMORY_USAGE}%" >> $LOG_FILE
fi
# 检查磁盘空间
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $DISK_USAGE -gt 80 ]; then
echo "[$DATE] ⚠️ 磁盘使用率过高: ${DISK_USAGE}%" >> $LOG_FILE
fi
# 检查 PM2 状态
PM2_STATUS=$(pm2 list | grep promptforge | awk '{print $10}' 2>/dev/null)
if [ "$PM2_STATUS" != "online" ]; then
echo "[$DATE] ⚠️ PM2 服务状态异常: $PM2_STATUS" >> $LOG_FILE
fi
# 记录系统负载
LOAD_AVG=$(uptime | awk -F'load average:' '{print $2}' | awk '{print $1}' | sed 's/,//')
echo "[$DATE] 📊 系统负载: $LOAD_AVG, 内存使用: ${MEMORY_USAGE}%, 磁盘使用: ${DISK_USAGE}%" >> $LOG_FILE
# 保持日志文件大小合理保留最近1000行
tail -n 1000 $LOG_FILE > $LOG_FILE.tmp && mv $LOG_FILE.tmp $LOG_FILE