Files
telegram-helper-bot/docs/OPERATIONS.md
Andrey d2d7c83575 Обновлен Python до версии 3.11.9 и изменены зависимости в Dockerfile и pyproject.toml. Удалены устаревшие файлы RATE_LIMITING_SOLUTION.md и тесты для rate limiting.
Обновлены пути к библиотекам в Dockerfile для соответствия новой версии Python.
Исправлены все тесты, теперь все проходят
2026-01-25 16:07:27 +03:00

9.6 KiB
Raw Blame History

Операционные команды для управления ботом

⚠️ ВАЖНО: Все команды выполняются из корневой директории проекта

🔧 Основные команды

Запуск и остановка

# Запустить всю инфраструктуру (Prometheus + Бот)
docker-compose up -d

# Запустить только бота
docker-compose up -d telegram-bot

# Запустить только Prometheus
docker-compose up -d prometheus

# Остановить все сервисы
docker-compose down

# Остановить только бота
docker-compose stop telegram-bot

# Остановить только Prometheus
docker-compose stop prometheus

Сборка

# Собрать все контейнеры
docker-compose build

# Собрать только бота
docker-compose build telegram-bot

# Собрать только Prometheus
docker-compose build prometheus

# Пересобрать и запустить все
docker-compose up -d --build

# Пересобрать и запустить только бота
docker-compose up -d --build telegram-bot

📊 Мониторинг и логи

Просмотр логов

# Логи всех сервисов
docker-compose logs -f

# Логи только бота
docker-compose logs -f telegram-bot

# Логи Prometheus
docker-compose logs -f prometheus

# Логи в реальном времени (последние 100 строк)
docker-compose logs -f --tail=100

Статус и здоровье

# Статус всех контейнеров
docker-compose ps

# Проверить здоровье всех сервисов
docker-compose ps | grep -E "(unhealthy|starting)"

# Проверить здоровье бота
curl -f http://localhost:8080/health || echo "❌ Бот недоступен"

# Проверить здоровье Prometheus
curl -f http://localhost:9090/-/healthy || echo "❌ Prometheus недоступен"

🔄 Управление сервисами

Перезапуск

# Перезапустить все сервисы
docker-compose restart

# Перезапустить только бота
docker-compose restart telegram-bot

# Перезапустить только Prometheus
docker-compose restart prometheus

Обновление

# Обновить код и перезапустить
git pull origin main && docker-compose up -d --build

# Обновить только бота
git pull origin main && docker-compose up -d --build telegram-bot

# Обновить только Prometheus
docker-compose pull prometheus && docker-compose up -d prometheus

🧪 Тестирование

Запуск тестов

# Запустить все тесты
docker-compose run --rm telegram-bot sh -c "pip install --no-cache-dir -r requirements-dev.txt && pytest"

# Тесты с покрытием
docker-compose run --rm telegram-bot sh -c "pip install --no-cache-dir -r requirements-dev.txt && pytest --cov=helper_bot --cov-report=term-missing"

# Тесты только бота
docker-compose run --rm telegram-bot sh -c "pip install --no-cache-dir -r requirements-dev.txt && pytest helper_bot/"

# Тесты с HTML отчетом
docker-compose run --rm telegram-bot sh -c "pip install --no-cache-dir -r requirements-dev.txt && pytest --cov=helper_bot --cov-report=html"

# Тесты конкретного модуля
docker-compose run --rm telegram-bot sh -c "pip install --no-cache-dir -r requirements-dev.txt && pytest helper_bot/handlers/admin/"

🛠️ Разработка

Отладка

# Проверить версию Python в контейнере
docker exec bots_telegram_bot python --version

# Открыть shell в контейнере бота
docker exec -it bots_telegram_bot sh

# Проверить установленные пакеты
docker exec bots_telegram_bot pip list

# Проверить переменные окружения
docker exec bots_telegram_bot env | grep TELEGRAM

# Проверить логи бота в реальном времени
docker exec bots_telegram_bot tail -f /app/logs/helper_bot_$(date +%Y-%m-%d).log

База данных

# Создать backup базы
tar -czf "backup-$(date +%Y%m%d-%H%M%S).tar.gz" database/ logs/ .env

# Восстановить из backup
tar -xzf backup-20241231-120000.tar.gz

# Подключиться к базе данных
docker exec -it bots_telegram_bot sqlite3 /app/database/tg-bot-database.db

# Проверить размер базы данных
docker exec bots_telegram_bot ls -lh /app/database/tg-bot-database.db

# Очистить логи (⚠️ ОСТОРОЖНО!)
docker exec bots_telegram_bot find /app/logs -name "*.log" -mtime +7 -delete

🚨 Аварийные ситуации

Диагностика

# Проверить использование ресурсов
docker stats --no-stream

# Проверить сетевые соединения
docker network ls
docker network inspect prod_bots_network

# Проверить логи ошибок
docker-compose logs | grep -i error

# Проверить использование диска
docker system df

# Проверить свободное место
docker exec bots_telegram_bot df -h

Восстановление

# Принудительная перезагрузка всех сервисов
docker-compose down && docker-compose up -d

# Очистка всех контейнеров и образов
docker-compose down -v --rmi all
docker system prune -f

# Восстановление из последнего backup
ls -t backup-*.tar.gz | head -1 | xargs -I {} tar -xzf {}

# Принудительная перезагрузка только бота
docker-compose stop telegram-bot
docker-compose rm -f telegram-bot
docker-compose up -d --build telegram-bot

📱 Доступ к сервисам

Веб-интерфейсы

Полезные команды

# Открыть Prometheus в браузере
open http://localhost:9090

# Открыть метрики бота в браузере
open http://localhost:8080/metrics

# Открыть health check бота в браузере
open http://localhost:8080/health

# Проверить доступность сервисов
curl -s http://localhost:8080/health | jq . || echo "Бот недоступен"
curl -s http://localhost:9090/-/healthy || echo "Prometheus недоступен"

🔍 Отладка проблем

Частые проблемы

# Бот не отвечает
docker-compose restart telegram-bot && docker-compose logs -f telegram-bot

# Prometheus недоступен
docker-compose restart prometheus && curl -f http://localhost:9090/-/healthy

# Проблемы с базой данных
docker exec bots_telegram_bot sqlite3 /app/database/tg-bot-database.db ".tables"

# Проблемы с сетью
docker network inspect prod_bots_network

# Проблемы с правами доступа
docker exec bots_telegram_bot ls -la /app/database/
docker exec bots_telegram_bot ls -la /app/logs/

Полезные alias'ы для .bashrc/.zshrc

# Добавить в ~/.bashrc или ~/.zshrc
alias bot='cd /Users/andrejkatyhin/PycharmProjects/prod && docker-compose'
alias bot-logs='cd /Users/andrejkatyhin/PycharmProjects/prod && docker-compose logs -f telegram-bot'
alias bot-restart='cd /Users/andrejkatyhin/PycharmProjects/prod && docker-compose restart telegram-bot'
alias bot-status='cd /Users/andrejkatyhin/PycharmProjects/prod && docker-compose ps'
alias bot-shell='cd /Users/andrejkatyhin/PycharmProjects/prod && docker exec -it bots_telegram_bot sh'
alias prometheus='cd /Users/andrejkatyhin/PycharmProjects/prod && docker-compose logs -f prometheus'

📝 Примеры использования

Типичный workflow разработки

# 1. Внести изменения в код
cd /Users/andrejkatyhin/PycharmProjects/prod/bots/telegram-helper-bot
# ... редактируем код ...

# 2. Пересобрать и перезапустить бота
cd /Users/andrejkatyhin/PycharmProjects/prod
docker-compose up -d --build telegram-bot

# 3. Проверить логи
docker-compose logs -f telegram-bot

# 4. Запустить тесты
docker-compose run --rm telegram-bot sh -c "pip install --no-cache-dir -r requirements-dev.txt && pytest helper_bot/"

Мониторинг в продакшене

# Проверить здоровье всех сервисов
docker-compose ps | grep -E "(unhealthy|starting)"

# Посмотреть статус
docker-compose ps

# Проверить логи ошибок
docker-compose logs | grep -i error

# Создать backup
tar -czf "backup-$(date +%Y%m%d-%H%M%S).tar.gz" database/ logs/ .env

# Проверить метрики
curl -s http://localhost:8080/metrics | head -20

Отладка проблем

# Бот не запускается
docker-compose logs telegram-bot

# Проверить конфигурацию
docker exec bots_telegram_bot cat /app/.env

# Проверить права доступа к файлам
docker exec bots_telegram_bot ls -la /app/

# Проверить сетевые соединения
docker exec bots_telegram_bot netstat -tulpn

# Проверить процессы
docker exec bots_telegram_bot ps aux