domovoy_bot/bot-monitor.sh

69 lines
2.5 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) - ОТКЛЮЧЕНО, бот сам запускает сервер в main.py
# 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