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