Обновления проекта

This commit is contained in:
2025-10-30 22:12:40 +03:00
parent d0677b0503
commit f8712ad195
23 changed files with 72 additions and 67 deletions
+1 -1
View File
@@ -1 +1 @@
24144 17588
+13 -8
View File
@@ -656,13 +656,13 @@ DEVELOPER_CHAT_ID=your_chat_id
### 📁 Файлы мониторинга: ### 📁 Файлы мониторинга:
- `core/monitoring.py` - ядро системы мониторинга - `metrics/monitoring.py` - ядро системы мониторинга
- `core/alerts.py` - менеджер алертов - `metrics/alerts.py` - менеджер алертов
- `prometheus_server.py` - сервер метрик - `metrics/prometheus_server.py` - сервер метрик
- `test_monitoring_integration.py` - интеграционные тесты - `metrics/test_monitoring_integration.py` - интеграционные тесты
- `MONITORING.md` - подробная документация - `metrics/MONITORING.md` - подробная документация
- `README_MONITORING.md` - быстрый старт - `metrics/README_MONITORING.md` - быстрый старт
- `GLITCHTIP_SETUP.md` - настройка GlitchTip - `metrics/GLITCHTIP_SETUP.md` - настройка GlitchTip
- `WEBHOOK_ALERTS.md` - webhook для алертов - `WEBHOOK_ALERTS.md` - webhook для алертов
### 🚀 Быстрый старт мониторинга: ### 🚀 Быстрый старт мониторинга:
@@ -697,6 +697,11 @@ DEVELOPER_CHAT_ID=your_chat_id
- GlitchTip: http://localhost:8000 - GlitchTip: http://localhost:8000
- Логи: bot.log - Логи: bot.log
### 📚 Документация:
- Все файлы метрик в папке `metrics/`
- Основная документация: `metrics/MONITORING.md`
- Быстрый старт: `metrics/README_MONITORING.md`
### 🎯 Результат: ### 🎯 Результат:
Система мониторинга готова к использованию! Все ошибки, метрики и алерты настроены и протестированы. 📈 Система мониторинга готова к использованию! Все ошибки, метрики и алерты настроены и протестированы. 📈
@@ -705,7 +710,7 @@ DEVELOPER_CHAT_ID=your_chat_id
## Лицензия ## Лицензия
MIT License - см. файл LICENSE для подробностей. MIT License - см. файл [LICENSE](LICENSE) для подробностей.
--- ---
+2 -2
View File
@@ -6,8 +6,8 @@
from .application import Application from .application import Application
from .config import Config from .config import Config
from .exceptions import BotException, DatabaseError, ValidationError from .exceptions import BotException, DatabaseError, ValidationError
from .monitoring import MetricsCollector, structured_logger, measure_time, error_handler from metrics.monitoring import MetricsCollector, structured_logger, measure_time, error_handler
from .alerts import AlertManager from metrics.alerts import AlertManager
__all__ = [ __all__ = [
'Application', 'Config', 'BotException', 'DatabaseError', 'ValidationError', 'Application', 'Config', 'BotException', 'DatabaseError', 'ValidationError',
+2 -2
View File
@@ -42,8 +42,8 @@ from telegram.ext import CommandHandler, MessageHandler, CallbackQueryHandler, f
# Импорты из текущего пакета # Импорты из текущего пакета
from .config import Config from .config import Config
from .exceptions import BotException, ConfigurationError from .exceptions import BotException, ConfigurationError
from .monitoring import MetricsCollector, structured_logger, measure_time, error_handler from metrics.monitoring import MetricsCollector, structured_logger, measure_time, error_handler
from .alerts import AlertManager from metrics.alerts import AlertManager
from .single_instance import check_single_instance from .single_instance import check_single_instance
# Репозитории # Репозитории
+2 -2
View File
@@ -23,8 +23,8 @@ async def test_monitoring_integration():
try: try:
# Тест 1: Проверка импорта модулей # Тест 1: Проверка импорта модулей
print("\n📦 Тест импорта модулей...") print("\n📦 Тест импорта модулей...")
from core.monitoring import MetricsCollector, structured_logger from metrics.monitoring import MetricsCollector, structured_logger
from core.alerts import AlertManager from metrics.alerts import AlertManager
from core.config import Config from core.config import Config
print("✅ Все модули импортированы успешно") print("✅ Все модули импортированы успешно")
+1 -1
View File
@@ -11,7 +11,7 @@ from telegram import Update
from telegram.ext import ContextTypes from telegram.ext import ContextTypes
from core.exceptions import BotException, ValidationError, PermissionError from core.exceptions import BotException, ValidationError, PermissionError
from utils.formatters import MessageFormatter from utils.formatters import MessageFormatter
from core.monitoring import MetricsCollector from metrics.monitoring import MetricsCollector
class BaseHandler(ABC): class BaseHandler(ABC):
+1 -1
View File
@@ -101,7 +101,7 @@ telegram_bot_status
### Добавление нового правила алерта ### Добавление нового правила алерта
```python ```python
from core.alerts import AlertManager from .alerts import AlertManager
# В Application или где-то еще # В Application или где-то еще
alert_manager = AlertManager(config, metrics) alert_manager = AlertManager(config, metrics)
+11 -11
View File
@@ -3,13 +3,13 @@
## 🔧 Ядро системы мониторинга ## 🔧 Ядро системы мониторинга
### Core модули (новые) ### Core модули (новые)
- **`core/monitoring.py`** - 276 строк - **`metrics/monitoring.py`** - 276 строк
- MetricsCollector для сбора метрик Prometheus - MetricsCollector для сбора метрик Prometheus
- Интеграция с Sentry/GlitchTip - Интеграция с Sentry/GlitchTip
- Структурированное логирование в JSON формате - Структурированное логирование в JSON формате
- Декораторы для мониторинга (@measure_time, @error_handler) - Декораторы для мониторинга (@measure_time, @error_handler)
- **`core/alerts.py`** - 249 строк - **`metrics/alerts.py`** - 249 строк
- AlertManager для управления алертами - AlertManager для управления алертами
- Настраиваемые правила алертов - Настраиваемые правила алертов
- Уведомления в Telegram, email, webhook - Уведомления в Telegram, email, webhook
@@ -28,18 +28,18 @@
## 🧪 Тесты ## 🧪 Тесты
- **`test_monitoring_integration.py`** - 91 строка, интеграционные тесты - **`metrics/test_monitoring_integration.py`** - 91 строка, интеграционные тесты
- **`test_metrics_simple.py`** - 69 строк, простой тест метрик - **`metrics/test_metrics_simple.py`** - 69 строк, простой тест метрик
- **`final_test.py`** - 91 строка, финальное тестирование - **`final_test.py`** - 91 строка, финальное тестирование
- **`tests/test_monitoring.py`** - 144 строки, unit тесты - **`tests/test_monitoring.py`** - 144 строки, unit тесты
## 📚 Документация ## 📚 Документация
- **`MONITORING.md`** - 313 строк, подробная документация - **`metrics/MONITORING.md`** - 313 строк, подробная документация
- **`README_MONITORING.md`** - 65 строк, быстрый старт - **`metrics/README_MONITORING.md`** - 65 строк, быстрый старт
- **`GLITCHTIP_SETUP.md`** - 59 строк, настройка GlitchTip - **`metrics/GLITCHTIP_SETUP.md`** - 59 строк, настройка GlitchTip
- **`WEBHOOK_ALERTS.md`** - 56 строк, webhook для алертов - **`metrics/WEBHOOK_ALERTS.md`** - 56 строк, webhook для алертов
- **`START_MONITORING.md`** - 146 строк, инструкция по запуску - **`metrics/START_MONITORING.md`** - 146 строк, инструкция по запуску
- **`README_SYSTEM.md`** - 82 строки, обзор системы - **`README_SYSTEM.md`** - 82 строки, обзор системы
- **`README_PROJECT.md`** - 49 строк, обзор проекта - **`README_PROJECT.md`** - 49 строк, обзор проекта
- **`README_DEVELOPER.md`** - 185 строк, руководство для разработчиков - **`README_DEVELOPER.md`** - 185 строк, руководство для разработчиков
@@ -50,8 +50,8 @@
## 🛠 Утилиты ## 🛠 Утилиты
- **`setup_monitoring.py`** - 166 строк, автоматическая настройка - **`metrics/setup_monitoring.py`** - 166 строк, автоматическая настройка
- **`prometheus_server.py`** - 45 строк, HTTP сервер метрик - **`metrics/prometheus_server.py`** - 45 строк, HTTP сервер метрик
## 📊 Обновленные файлы проекта ## 📊 Обновленные файлы проекта
@@ -11,15 +11,15 @@
- Система алертов в Telegram - Система алертов в Telegram
2. **🛠 Инструменты мониторинга:** 2. **🛠 Инструменты мониторинга:**
- `core/monitoring.py` - ядро системы мониторинга - `metrics/monitoring.py` - ядро системы мониторинга
- `core/alerts.py` - менеджер алертов - `metrics/alerts.py` - менеджер алертов
- `prometheus_server.py` - сервер метрик - `metrics/prometheus_server.py` - сервер метрик
- `test_monitoring_integration.py` - тесты - `metrics/test_monitoring_integration.py` - тесты
3. **📚 Документация:** 3. **📚 Документация:**
- `MONITORING.md` - подробная документация (313 строк) - `metrics/MONITORING.md` - подробная документация (313 строк)
- `README_MONITORING.md` - быстрый старт - `metrics/README_MONITORING.md` - быстрый старт
- `GLITCHTIP_SETUP.md` - настройка GlitchTip - `metrics/GLITCHTIP_SETUP.md` - настройка GlitchTip
- `WEBHOOK_ALERTS.md` - webhook для алертов - `WEBHOOK_ALERTS.md` - webhook для алертов
- Обновленный `README.md` с историей проекта - Обновленный `README.md` с историей проекта
@@ -5,28 +5,28 @@
### ✅ Что было создано: ### ✅ Что было создано:
#### 🔧 Ядро системы мониторинга #### 🔧 Ядро системы мониторинга
- **`core/monitoring.py`** - 276 строк кода - **`metrics/monitoring.py`** - 276 строк кода
- MetricsCollector для сбора метрик Prometheus - MetricsCollector для сбора метрик Prometheus
- Интеграция с Sentry/GlitchTip - Интеграция с Sentry/GlitchTip
- Структурированное логирование в JSON формате - Структурированное логирование в JSON формате
- Декораторы для измерения времени и обработки ошибок - Декораторы для измерения времени и обработки ошибок
- **`core/alerts.py`** - 249 строк кода - **`metrics/alerts.py`** - 249 строк кода
- AlertManager для управления алертами - AlertManager для управления алертами
- Настраиваемые правила алертов - Настраиваемые правила алертов
- Уведомления в Telegram, email, webhook - Уведомления в Telegram, email, webhook
#### 🧪 Тесты и проверка #### 🧪 Тесты и проверка
- **`test_monitoring_integration.py`** - интеграционные тесты - **`metrics/test_monitoring_integration.py`** - интеграционные тесты
- **`test_metrics_simple.py`** - простой тест метрик - **`metrics/test_metrics_simple.py`** - простой тест метрик
- **`final_test.py`** - финальное тестирование всей системы - **`final_test.py`** - финальное тестирование всей системы
#### 📚 Документация #### 📚 Документация
- **`MONITORING.md`** - подробная документация (313 строк) - **`metrics/MONITORING.md`** - подробная документация (313 строк)
- **`README_MONITORING.md`** - быстрый старт - **`metrics/README_MONITORING.md`** - быстрый старт
- **`GLITCHTIP_SETUP.md`** - настройка GlitchTip - **`metrics/GLITCHTIP_SETUP.md`** - настройка GlitchTip
- **`WEBHOOK_ALERTS.md`** - webhook для алертов - **`metrics/WEBHOOK_ALERTS.md`** - webhook для алертов
- **`START_MONITORING.md`** - полная инструкция по запуску - **`metrics/START_MONITORING.md`** - полная инструкция по запуску
- **`README_PROJECT.md`** - обзор проекта - **`README_PROJECT.md`** - обзор проекта
- Обновленный **`README.md`** с историей - Обновленный **`README.md`** с историей
+10 -10
View File
@@ -27,22 +27,22 @@
### 📁 **Созданные файлы:** ### 📁 **Созданные файлы:**
#### Ядро мониторинга: #### Ядро мониторинга:
- `core/monitoring.py` - 276 строк - `metrics/monitoring.py` - 276 строк
- `core/alerts.py` - 249 строк - `metrics/alerts.py` - 249 строк
#### Тесты: #### Тесты:
- `test_monitoring_integration.py` - 91 строка - `test_monitoring_integration.py` - 91 строка
- `final_test.py` - 91 строка - `final_test.py` - 91 строка
#### Документация: #### Документация:
- `MONITORING.md` - 313 строк (основная документация) - `metrics/MONITORING.md` - 313 строк (основная документация)
- `README_MONITORING.md` - 65 строк (быстрый старт) - `metrics/README_MONITORING.md` - 65 строк (быстрый старт)
- `GLITCHTIP_SETUP.md` - 59 строк (настройка) - `metrics/GLITCHTIP_SETUP.md` - 59 строк (настройка)
- `START_MONITORING.md` - 146 строк (инструкция) - `metrics/START_MONITORING.md` - 146 строк (инструкция)
#### Утилиты: #### Утилиты:
- `setup_monitoring.py` - 166 строк (автонастройка) - `metrics/setup_monitoring.py` - 166 строк (автонастройка)
- `test_metrics_simple.py` - 69 строк (тест метрик) - `metrics/test_metrics_simple.py` - 69 строк (тест метрик)
### 🚀 **Для запуска:** ### 🚀 **Для запуска:**
@@ -83,9 +83,9 @@
### 📞 **Для команды:** ### 📞 **Для команды:**
1. **Изучите документацию:** `MONITORING.md` 1. **Изучите документацию:** `metrics/MONITORING.md`
2. **Запустите тесты:** `python final_test.py` 2. **Запустите тесты:** `python final_test.py`
3. **Проверьте настройку:** `python setup_monitoring.py` 3. **Проверьте настройку:** `python metrics/setup_monitoring.py`
4. **Следуйте руководству:** `README_DEVELOPER.md` 4. **Следуйте руководству:** `README_DEVELOPER.md`
**Проект завершен успешно!** 🎊 Ваш телеграм-бот теперь имеет профессиональную систему мониторинга. **Проект завершен успешно!** 🎊 Ваш телеграм-бот теперь имеет профессиональную систему мониторинга.
+1 -1
View File
@@ -8,7 +8,7 @@ import logging
from typing import Dict, List, Optional, Callable from typing import Dict, List, Optional, Callable
from datetime import datetime, timedelta from datetime import datetime, timedelta
import requests import requests
from .config import Config from core.config import Config
from .monitoring import MetricsCollector from .monitoring import MetricsCollector
+1 -1
View File
@@ -12,7 +12,7 @@ from typing import Optional, Dict, Any, Callable
from prometheus_client import Counter, Histogram, Gauge, start_http_server from prometheus_client import Counter, Histogram, Gauge, start_http_server
import sentry_sdk import sentry_sdk
from sentry_sdk.integrations.logging import LoggingIntegration from sentry_sdk.integrations.logging import LoggingIntegration
from .config import Config from core.config import Config
class MetricsCollector: class MetricsCollector:
@@ -6,7 +6,7 @@
import logging import logging
from prometheus_client import start_http_server, REGISTRY from prometheus_client import start_http_server, REGISTRY
from core.monitoring import MetricsCollector from .monitoring import MetricsCollector
from core.config import Config from core.config import Config
@@ -11,8 +11,8 @@ import time
import sys import sys
import io import io
from core.config import Config from core.config import Config
from core.monitoring import MetricsCollector, structured_logger from .monitoring import MetricsCollector, structured_logger
from core.alerts import AlertManager from .alerts import AlertManager
# Установка UTF-8 кодировки для вывода # Установка UTF-8 кодировки для вывода
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
+5 -5
View File
@@ -229,7 +229,7 @@ OPENAI_API_KEY = "test_key"
# Создаем обработчик с правильным metrics объектом # Создаем обработчик с правильным metrics объектом
from handlers.user_handlers import UserHandlers from handlers.user_handlers import UserHandlers
from core.monitoring import MetricsCollector from metrics.monitoring import MetricsCollector
metrics = MetricsCollector(config) metrics = MetricsCollector(config)
user_handlers = UserHandlers(config, metrics, user_service) user_handlers = UserHandlers(config, metrics, user_service)
@@ -277,7 +277,7 @@ OPENAI_API_KEY = "test_key"
# Создаем обработчик с правильным metrics объектом # Создаем обработчик с правильным metrics объектом
from handlers.user_handlers import UserHandlers from handlers.user_handlers import UserHandlers
from core.monitoring import MetricsCollector from metrics.monitoring import MetricsCollector
metrics = MetricsCollector(config) metrics = MetricsCollector(config)
user_handlers = UserHandlers(config, metrics, user_service) user_handlers = UserHandlers(config, metrics, user_service)
@@ -319,7 +319,7 @@ OPENAI_API_KEY = "test_key"
# Создаем обработчик с правильным metrics объектом # Создаем обработчик с правильным metrics объектом
from handlers.user_handlers import UserHandlers from handlers.user_handlers import UserHandlers
from core.monitoring import MetricsCollector from metrics.monitoring import MetricsCollector
metrics = MetricsCollector(config) metrics = MetricsCollector(config)
user_handlers = UserHandlers(config, metrics, user_service) user_handlers = UserHandlers(config, metrics, user_service)
@@ -363,7 +363,7 @@ OPENAI_API_KEY = "test_key"
# Создаем обработчик с правильным metrics объектом # Создаем обработчик с правильным metrics объектом
from handlers.user_handlers import UserHandlers from handlers.user_handlers import UserHandlers
from core.monitoring import MetricsCollector from metrics.monitoring import MetricsCollector
metrics = MetricsCollector(config) metrics = MetricsCollector(config)
user_handlers = UserHandlers(config, metrics, user_service) user_handlers = UserHandlers(config, metrics, user_service)
@@ -407,7 +407,7 @@ OPENAI_API_KEY = "test_key"
# Создаем обработчик с правильным metrics объектом # Создаем обработчик с правильным metrics объектом
from handlers.user_handlers import UserHandlers from handlers.user_handlers import UserHandlers
from core.monitoring import MetricsCollector from metrics.monitoring import MetricsCollector
metrics = MetricsCollector(config) metrics = MetricsCollector(config)
user_handlers = UserHandlers(config, metrics, user_service) user_handlers = UserHandlers(config, metrics, user_service)
+3 -3
View File
@@ -9,7 +9,7 @@ import time
import os import os
from unittest.mock import patch, MagicMock from unittest.mock import patch, MagicMock
from prometheus_client import REGISTRY from prometheus_client import REGISTRY
from core.monitoring import MetricsCollector, structured_logger from metrics.monitoring import MetricsCollector, structured_logger
from core.config import Config from core.config import Config
@@ -227,7 +227,7 @@ class TestErrorHandling:
def test_measure_time_decorator(self, metrics): def test_measure_time_decorator(self, metrics):
"""Тест декоратора measure_time""" """Тест декоратора measure_time"""
from core.monitoring import measure_time from metrics.monitoring import measure_time
@measure_time(metrics, 'test_api') @measure_time(metrics, 'test_api')
def test_function(): def test_function():
@@ -240,7 +240,7 @@ class TestErrorHandling:
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_error_handler_decorator(self, metrics): async def test_error_handler_decorator(self, metrics):
"""Тест декоратора error_handler""" """Тест декоратора error_handler"""
from core.monitoring import error_handler from metrics.monitoring import error_handler
@error_handler(metrics, 'test_handler') @error_handler(metrics, 'test_handler')
async def failing_function(): async def failing_function():