👁️ МОНИТОРИНГ ВЕБА: • Проверка uvicorn на порту 8000 • Автоперезапуск если упал • Проверка PID процесса • Проверка доступности панели ✅ РАБОТАЕТ: • Бот (systemd) • Веб-сервер (uvicorn) • Интервал: 30 секунд 📝 ФАЙЛЫ: • bot-monitor.sh: обновлён Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
69 lines
2.4 KiB
Bash
Executable file
69 lines
2.4 KiB
Bash
Executable file
#!/bin/bash
|
||
# Мониторинг Домового Бота
|
||
# Проверяет каждые 30 секунд и перезапускает если упал
|
||
|
||
LOG_FILE="/home/matrixhasyou/domovoy_bot/logs/monitor.log"
|
||
WEB_URL="http://localhost:8000"
|
||
CHECK_INTERVAL=30 # секунд
|
||
|
||
log() {
|
||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
||
}
|
||
|
||
check_bot() {
|
||
# Проверяем systemd сервис (бот)
|
||
if ! sudo systemctl is-active --quiet domovoy-bot; then
|
||
log "❌ Бот НЕ активен! Перезапуск..."
|
||
sudo systemctl restart domovoy-bot
|
||
sleep 5
|
||
if sudo systemctl is-active --quiet domovoy-bot; then
|
||
log "✅ Бот перезапущен успешно"
|
||
else
|
||
log "❌ НЕ удалось перезапустить бота!"
|
||
return 1
|
||
fi
|
||
fi
|
||
|
||
# Проверяем веб-сервер (uvicorn)
|
||
WEB_PID=$(pgrep -f "uvicorn.*8000")
|
||
if [ -z "$WEB_PID" ]; then
|
||
log "❌ Веб-сервер НЕ запущен! Перезапуск..."
|
||
cd /home/matrixhasyou/domovoy_bot
|
||
source venv/bin/activate
|
||
nohup python -m uvicorn web.app:app --host 0.0.0.0 --port 8000 >> logs/web.log 2>&1 &
|
||
sleep 5
|
||
WEB_PID=$(pgrep -f "uvicorn.*8000")
|
||
if [ -n "$WEB_PID" ]; then
|
||
log "✅ Веб-сервер перезапущен (PID: $WEB_PID)"
|
||
else
|
||
log "❌ НЕ удалось перезапустить веб-сервер!"
|
||
return 1
|
||
fi
|
||
fi
|
||
|
||
# Проверяем веб-панель
|
||
if ! curl -s --max-time 5 "$WEB_URL" > /dev/null; then
|
||
log "❌ Веб-панель НЕ отвечает! Перезапуск..."
|
||
pkill -f "uvicorn.*8000"
|
||
sleep 2
|
||
cd /home/matrixhasyou/domovoy_bot
|
||
source venv/bin/activate
|
||
nohup python -m uvicorn web.app:app --host 0.0.0.0 --port 8000 >> logs/web.log 2>&1 &
|
||
sleep 5
|
||
if curl -s --max-time 5 "$WEB_URL" > /dev/null; then
|
||
log "✅ Веб-панель восстановлена"
|
||
else
|
||
log "❌ Веб-панель НЕ восстановилась!"
|
||
return 1
|
||
fi
|
||
fi
|
||
|
||
return 0
|
||
}
|
||
|
||
log "🚀 Запуск мониторинга Домового Бота (интервал: ${CHECK_INTERVAL}с)"
|
||
|
||
while true; do
|
||
check_bot
|
||
sleep $CHECK_INTERVAL
|
||
done
|