domovoy_bot/bot-monitor.sh
Admin b24a8834d5 v1.29 Мониторинг веб-сервера
👁️ МОНИТОРИНГ ВЕБА:
• Проверка uvicorn на порту 8000
• Автоперезапуск если упал
• Проверка PID процесса
• Проверка доступности панели

 РАБОТАЕТ:
• Бот (systemd)
• Веб-сервер (uvicorn)
• Интервал: 30 секунд

📝 ФАЙЛЫ:
• bot-monitor.sh: обновлён

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-14 13:00:22 +04:00

69 lines
2.4 KiB
Bash
Executable file
Raw 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
# Мониторинг Домового Бота
# Проверяет каждые 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