Files
aiapply/monitor.sh
2025-09-14 09:50:52 +08:00

49 lines
1.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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