From f8712ad195264b8f12f1f3d10f3f95d8076a3514 Mon Sep 17 00:00:00 2001 From: FerraSoft Date: Thu, 30 Oct 2025 22:12:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bot.lock | 2 +- README.md | 21 +++++++++++------- core/__init__.py | 4 ++-- core/application.py | 4 ++-- final_test.py | 4 ++-- handlers/base_handler.py | 2 +- MONITORING.md => metrics/MONITORING.md | 2 +- README_FILES.md => metrics/README_FILES.md | 22 +++++++++---------- .../README_PROJECT.md | 14 ++++++------ README_SYSTEM.md => metrics/README_SYSTEM.md | 18 +++++++-------- README_TEAM.md => metrics/README_TEAM.md | 20 ++++++++--------- .../START_MONITORING.md | 0 {core => metrics}/alerts.py | 2 +- .../config_monitoring_sample.py | 0 {core => metrics}/monitoring.py | 2 +- {core => metrics}/payment_metrics.py | 0 .../prometheus_server.py | 2 +- .../setup_monitoring.py | 0 .../test_metrics_server.py | 0 .../test_metrics_simple.py | 0 .../test_monitoring_integration.py | 4 ++-- test_integration/test_commands.py | 10 ++++----- tests/test_monitoring.py | 6 ++--- 23 files changed, 72 insertions(+), 67 deletions(-) rename MONITORING.md => metrics/MONITORING.md (99%) rename README_FILES.md => metrics/README_FILES.md (82%) rename README_PROJECT.md => metrics/README_PROJECT.md (82%) rename README_SYSTEM.md => metrics/README_SYSTEM.md (84%) rename README_TEAM.md => metrics/README_TEAM.md (80%) rename START_MONITORING.md => metrics/START_MONITORING.md (100%) rename {core => metrics}/alerts.py (99%) rename config_monitoring_sample.py => metrics/config_monitoring_sample.py (100%) rename {core => metrics}/monitoring.py (99%) rename {core => metrics}/payment_metrics.py (100%) rename prometheus_server.py => metrics/prometheus_server.py (96%) rename setup_monitoring.py => metrics/setup_monitoring.py (100%) rename test_metrics_server.py => metrics/test_metrics_server.py (100%) rename test_metrics_simple.py => metrics/test_metrics_simple.py (100%) rename test_monitoring_integration.py => metrics/test_monitoring_integration.py (96%) diff --git a/.bot.lock b/.bot.lock index 4b41909..4688a14 100644 --- a/.bot.lock +++ b/.bot.lock @@ -1 +1 @@ -24144 \ No newline at end of file +17588 \ No newline at end of file diff --git a/README.md b/README.md index 6d181ac..84d6eec 100644 --- a/README.md +++ b/README.md @@ -656,13 +656,13 @@ DEVELOPER_CHAT_ID=your_chat_id ### 📁 Файлы мониторинга: -- `core/monitoring.py` - ядро системы мониторинга -- `core/alerts.py` - менеджер алертов -- `prometheus_server.py` - сервер метрик -- `test_monitoring_integration.py` - интеграционные тесты -- `MONITORING.md` - подробная документация -- `README_MONITORING.md` - быстрый старт -- `GLITCHTIP_SETUP.md` - настройка GlitchTip +- `metrics/monitoring.py` - ядро системы мониторинга +- `metrics/alerts.py` - менеджер алертов +- `metrics/prometheus_server.py` - сервер метрик +- `metrics/test_monitoring_integration.py` - интеграционные тесты +- `metrics/MONITORING.md` - подробная документация +- `metrics/README_MONITORING.md` - быстрый старт +- `metrics/GLITCHTIP_SETUP.md` - настройка GlitchTip - `WEBHOOK_ALERTS.md` - webhook для алертов ### 🚀 Быстрый старт мониторинга: @@ -697,6 +697,11 @@ DEVELOPER_CHAT_ID=your_chat_id - GlitchTip: http://localhost:8000 - Логи: 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) для подробностей. --- diff --git a/core/__init__.py b/core/__init__.py index a3b993d..f745e80 100644 --- a/core/__init__.py +++ b/core/__init__.py @@ -6,8 +6,8 @@ from .application import Application from .config import Config from .exceptions import BotException, DatabaseError, ValidationError -from .monitoring import MetricsCollector, structured_logger, measure_time, error_handler -from .alerts import AlertManager +from metrics.monitoring import MetricsCollector, structured_logger, measure_time, error_handler +from metrics.alerts import AlertManager __all__ = [ 'Application', 'Config', 'BotException', 'DatabaseError', 'ValidationError', diff --git a/core/application.py b/core/application.py index 1d189f8..9da89e1 100644 --- a/core/application.py +++ b/core/application.py @@ -42,8 +42,8 @@ from telegram.ext import CommandHandler, MessageHandler, CallbackQueryHandler, f # Импорты из текущего пакета from .config import Config from .exceptions import BotException, ConfigurationError -from .monitoring import MetricsCollector, structured_logger, measure_time, error_handler -from .alerts import AlertManager +from metrics.monitoring import MetricsCollector, structured_logger, measure_time, error_handler +from metrics.alerts import AlertManager from .single_instance import check_single_instance # Репозитории diff --git a/final_test.py b/final_test.py index 1e77984..229c9d1 100644 --- a/final_test.py +++ b/final_test.py @@ -23,8 +23,8 @@ async def test_monitoring_integration(): try: # Тест 1: Проверка импорта модулей print("\n📦 Тест импорта модулей...") - from core.monitoring import MetricsCollector, structured_logger - from core.alerts import AlertManager + from metrics.monitoring import MetricsCollector, structured_logger + from metrics.alerts import AlertManager from core.config import Config print("✅ Все модули импортированы успешно") diff --git a/handlers/base_handler.py b/handlers/base_handler.py index 8976a69..8992485 100644 --- a/handlers/base_handler.py +++ b/handlers/base_handler.py @@ -11,7 +11,7 @@ from telegram import Update from telegram.ext import ContextTypes from core.exceptions import BotException, ValidationError, PermissionError from utils.formatters import MessageFormatter -from core.monitoring import MetricsCollector +from metrics.monitoring import MetricsCollector class BaseHandler(ABC): diff --git a/MONITORING.md b/metrics/MONITORING.md similarity index 99% rename from MONITORING.md rename to metrics/MONITORING.md index 747586f..a2647d9 100644 --- a/MONITORING.md +++ b/metrics/MONITORING.md @@ -101,7 +101,7 @@ telegram_bot_status ### Добавление нового правила алерта ```python -from core.alerts import AlertManager +from .alerts import AlertManager # В Application или где-то еще alert_manager = AlertManager(config, metrics) diff --git a/README_FILES.md b/metrics/README_FILES.md similarity index 82% rename from README_FILES.md rename to metrics/README_FILES.md index f07822b..2932688 100644 --- a/README_FILES.md +++ b/metrics/README_FILES.md @@ -3,13 +3,13 @@ ## 🔧 Ядро системы мониторинга ### Core модули (новые) -- **`core/monitoring.py`** - 276 строк +- **`metrics/monitoring.py`** - 276 строк - MetricsCollector для сбора метрик Prometheus - Интеграция с Sentry/GlitchTip - Структурированное логирование в JSON формате - Декораторы для мониторинга (@measure_time, @error_handler) -- **`core/alerts.py`** - 249 строк +- **`metrics/alerts.py`** - 249 строк - AlertManager для управления алертами - Настраиваемые правила алертов - Уведомления в Telegram, email, webhook @@ -28,18 +28,18 @@ ## 🧪 Тесты -- **`test_monitoring_integration.py`** - 91 строка, интеграционные тесты -- **`test_metrics_simple.py`** - 69 строк, простой тест метрик +- **`metrics/test_monitoring_integration.py`** - 91 строка, интеграционные тесты +- **`metrics/test_metrics_simple.py`** - 69 строк, простой тест метрик - **`final_test.py`** - 91 строка, финальное тестирование - **`tests/test_monitoring.py`** - 144 строки, unit тесты ## 📚 Документация -- **`MONITORING.md`** - 313 строк, подробная документация -- **`README_MONITORING.md`** - 65 строк, быстрый старт -- **`GLITCHTIP_SETUP.md`** - 59 строк, настройка GlitchTip -- **`WEBHOOK_ALERTS.md`** - 56 строк, webhook для алертов -- **`START_MONITORING.md`** - 146 строк, инструкция по запуску +- **`metrics/MONITORING.md`** - 313 строк, подробная документация +- **`metrics/README_MONITORING.md`** - 65 строк, быстрый старт +- **`metrics/GLITCHTIP_SETUP.md`** - 59 строк, настройка GlitchTip +- **`metrics/WEBHOOK_ALERTS.md`** - 56 строк, webhook для алертов +- **`metrics/START_MONITORING.md`** - 146 строк, инструкция по запуску - **`README_SYSTEM.md`** - 82 строки, обзор системы - **`README_PROJECT.md`** - 49 строк, обзор проекта - **`README_DEVELOPER.md`** - 185 строк, руководство для разработчиков @@ -50,8 +50,8 @@ ## 🛠 Утилиты -- **`setup_monitoring.py`** - 166 строк, автоматическая настройка -- **`prometheus_server.py`** - 45 строк, HTTP сервер метрик +- **`metrics/setup_monitoring.py`** - 166 строк, автоматическая настройка +- **`metrics/prometheus_server.py`** - 45 строк, HTTP сервер метрик ## 📊 Обновленные файлы проекта diff --git a/README_PROJECT.md b/metrics/README_PROJECT.md similarity index 82% rename from README_PROJECT.md rename to metrics/README_PROJECT.md index 0aefa5d..3e698d3 100644 --- a/README_PROJECT.md +++ b/metrics/README_PROJECT.md @@ -11,15 +11,15 @@ - Система алертов в Telegram 2. **🛠 Инструменты мониторинга:** - - `core/monitoring.py` - ядро системы мониторинга - - `core/alerts.py` - менеджер алертов - - `prometheus_server.py` - сервер метрик - - `test_monitoring_integration.py` - тесты + - `metrics/monitoring.py` - ядро системы мониторинга + - `metrics/alerts.py` - менеджер алертов + - `metrics/prometheus_server.py` - сервер метрик + - `metrics/test_monitoring_integration.py` - тесты 3. **📚 Документация:** - - `MONITORING.md` - подробная документация (313 строк) - - `README_MONITORING.md` - быстрый старт - - `GLITCHTIP_SETUP.md` - настройка GlitchTip + - `metrics/MONITORING.md` - подробная документация (313 строк) + - `metrics/README_MONITORING.md` - быстрый старт + - `metrics/GLITCHTIP_SETUP.md` - настройка GlitchTip - `WEBHOOK_ALERTS.md` - webhook для алертов - Обновленный `README.md` с историей проекта diff --git a/README_SYSTEM.md b/metrics/README_SYSTEM.md similarity index 84% rename from README_SYSTEM.md rename to metrics/README_SYSTEM.md index 67be67d..a49f614 100644 --- a/README_SYSTEM.md +++ b/metrics/README_SYSTEM.md @@ -5,28 +5,28 @@ ### ✅ Что было создано: #### 🔧 Ядро системы мониторинга -- **`core/monitoring.py`** - 276 строк кода +- **`metrics/monitoring.py`** - 276 строк кода - MetricsCollector для сбора метрик Prometheus - Интеграция с Sentry/GlitchTip - Структурированное логирование в JSON формате - Декораторы для измерения времени и обработки ошибок -- **`core/alerts.py`** - 249 строк кода +- **`metrics/alerts.py`** - 249 строк кода - AlertManager для управления алертами - Настраиваемые правила алертов - Уведомления в Telegram, email, webhook #### 🧪 Тесты и проверка -- **`test_monitoring_integration.py`** - интеграционные тесты -- **`test_metrics_simple.py`** - простой тест метрик +- **`metrics/test_monitoring_integration.py`** - интеграционные тесты +- **`metrics/test_metrics_simple.py`** - простой тест метрик - **`final_test.py`** - финальное тестирование всей системы #### 📚 Документация -- **`MONITORING.md`** - подробная документация (313 строк) -- **`README_MONITORING.md`** - быстрый старт -- **`GLITCHTIP_SETUP.md`** - настройка GlitchTip -- **`WEBHOOK_ALERTS.md`** - webhook для алертов -- **`START_MONITORING.md`** - полная инструкция по запуску +- **`metrics/MONITORING.md`** - подробная документация (313 строк) +- **`metrics/README_MONITORING.md`** - быстрый старт +- **`metrics/GLITCHTIP_SETUP.md`** - настройка GlitchTip +- **`metrics/WEBHOOK_ALERTS.md`** - webhook для алертов +- **`metrics/START_MONITORING.md`** - полная инструкция по запуску - **`README_PROJECT.md`** - обзор проекта - Обновленный **`README.md`** с историей diff --git a/README_TEAM.md b/metrics/README_TEAM.md similarity index 80% rename from README_TEAM.md rename to metrics/README_TEAM.md index 4fb9a40..850bd93 100644 --- a/README_TEAM.md +++ b/metrics/README_TEAM.md @@ -27,22 +27,22 @@ ### 📁 **Созданные файлы:** #### Ядро мониторинга: -- `core/monitoring.py` - 276 строк -- `core/alerts.py` - 249 строк +- `metrics/monitoring.py` - 276 строк +- `metrics/alerts.py` - 249 строк #### Тесты: - `test_monitoring_integration.py` - 91 строка - `final_test.py` - 91 строка #### Документация: -- `MONITORING.md` - 313 строк (основная документация) -- `README_MONITORING.md` - 65 строк (быстрый старт) -- `GLITCHTIP_SETUP.md` - 59 строк (настройка) -- `START_MONITORING.md` - 146 строк (инструкция) +- `metrics/MONITORING.md` - 313 строк (основная документация) +- `metrics/README_MONITORING.md` - 65 строк (быстрый старт) +- `metrics/GLITCHTIP_SETUP.md` - 59 строк (настройка) +- `metrics/START_MONITORING.md` - 146 строк (инструкция) #### Утилиты: -- `setup_monitoring.py` - 166 строк (автонастройка) -- `test_metrics_simple.py` - 69 строк (тест метрик) +- `metrics/setup_monitoring.py` - 166 строк (автонастройка) +- `metrics/test_metrics_simple.py` - 69 строк (тест метрик) ### 🚀 **Для запуска:** @@ -83,9 +83,9 @@ ### 📞 **Для команды:** -1. **Изучите документацию:** `MONITORING.md` +1. **Изучите документацию:** `metrics/MONITORING.md` 2. **Запустите тесты:** `python final_test.py` -3. **Проверьте настройку:** `python setup_monitoring.py` +3. **Проверьте настройку:** `python metrics/setup_monitoring.py` 4. **Следуйте руководству:** `README_DEVELOPER.md` **Проект завершен успешно!** 🎊 Ваш телеграм-бот теперь имеет профессиональную систему мониторинга. diff --git a/START_MONITORING.md b/metrics/START_MONITORING.md similarity index 100% rename from START_MONITORING.md rename to metrics/START_MONITORING.md diff --git a/core/alerts.py b/metrics/alerts.py similarity index 99% rename from core/alerts.py rename to metrics/alerts.py index 0e359b3..87415f1 100644 --- a/core/alerts.py +++ b/metrics/alerts.py @@ -8,7 +8,7 @@ import logging from typing import Dict, List, Optional, Callable from datetime import datetime, timedelta import requests -from .config import Config +from core.config import Config from .monitoring import MetricsCollector diff --git a/config_monitoring_sample.py b/metrics/config_monitoring_sample.py similarity index 100% rename from config_monitoring_sample.py rename to metrics/config_monitoring_sample.py diff --git a/core/monitoring.py b/metrics/monitoring.py similarity index 99% rename from core/monitoring.py rename to metrics/monitoring.py index ea7e837..79b7420 100644 --- a/core/monitoring.py +++ b/metrics/monitoring.py @@ -12,7 +12,7 @@ from typing import Optional, Dict, Any, Callable from prometheus_client import Counter, Histogram, Gauge, start_http_server import sentry_sdk from sentry_sdk.integrations.logging import LoggingIntegration -from .config import Config +from core.config import Config class MetricsCollector: diff --git a/core/payment_metrics.py b/metrics/payment_metrics.py similarity index 100% rename from core/payment_metrics.py rename to metrics/payment_metrics.py diff --git a/prometheus_server.py b/metrics/prometheus_server.py similarity index 96% rename from prometheus_server.py rename to metrics/prometheus_server.py index e66c5e2..45ee723 100644 --- a/prometheus_server.py +++ b/metrics/prometheus_server.py @@ -6,7 +6,7 @@ import logging from prometheus_client import start_http_server, REGISTRY -from core.monitoring import MetricsCollector +from .monitoring import MetricsCollector from core.config import Config diff --git a/setup_monitoring.py b/metrics/setup_monitoring.py similarity index 100% rename from setup_monitoring.py rename to metrics/setup_monitoring.py diff --git a/test_metrics_server.py b/metrics/test_metrics_server.py similarity index 100% rename from test_metrics_server.py rename to metrics/test_metrics_server.py diff --git a/test_metrics_simple.py b/metrics/test_metrics_simple.py similarity index 100% rename from test_metrics_simple.py rename to metrics/test_metrics_simple.py diff --git a/test_monitoring_integration.py b/metrics/test_monitoring_integration.py similarity index 96% rename from test_monitoring_integration.py rename to metrics/test_monitoring_integration.py index 8f7dd7b..2e56e7a 100644 --- a/test_monitoring_integration.py +++ b/metrics/test_monitoring_integration.py @@ -11,8 +11,8 @@ import time import sys import io from core.config import Config -from core.monitoring import MetricsCollector, structured_logger -from core.alerts import AlertManager +from .monitoring import MetricsCollector, structured_logger +from .alerts import AlertManager # Установка UTF-8 кодировки для вывода sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') diff --git a/test_integration/test_commands.py b/test_integration/test_commands.py index 4074e41..b8e240a 100644 --- a/test_integration/test_commands.py +++ b/test_integration/test_commands.py @@ -229,7 +229,7 @@ OPENAI_API_KEY = "test_key" # Создаем обработчик с правильным metrics объектом from handlers.user_handlers import UserHandlers - from core.monitoring import MetricsCollector + from metrics.monitoring import MetricsCollector metrics = MetricsCollector(config) user_handlers = UserHandlers(config, metrics, user_service) @@ -277,7 +277,7 @@ OPENAI_API_KEY = "test_key" # Создаем обработчик с правильным metrics объектом from handlers.user_handlers import UserHandlers - from core.monitoring import MetricsCollector + from metrics.monitoring import MetricsCollector metrics = MetricsCollector(config) user_handlers = UserHandlers(config, metrics, user_service) @@ -319,7 +319,7 @@ OPENAI_API_KEY = "test_key" # Создаем обработчик с правильным metrics объектом from handlers.user_handlers import UserHandlers - from core.monitoring import MetricsCollector + from metrics.monitoring import MetricsCollector metrics = MetricsCollector(config) user_handlers = UserHandlers(config, metrics, user_service) @@ -363,7 +363,7 @@ OPENAI_API_KEY = "test_key" # Создаем обработчик с правильным metrics объектом from handlers.user_handlers import UserHandlers - from core.monitoring import MetricsCollector + from metrics.monitoring import MetricsCollector metrics = MetricsCollector(config) user_handlers = UserHandlers(config, metrics, user_service) @@ -407,7 +407,7 @@ OPENAI_API_KEY = "test_key" # Создаем обработчик с правильным metrics объектом from handlers.user_handlers import UserHandlers - from core.monitoring import MetricsCollector + from metrics.monitoring import MetricsCollector metrics = MetricsCollector(config) user_handlers = UserHandlers(config, metrics, user_service) diff --git a/tests/test_monitoring.py b/tests/test_monitoring.py index 89e82a7..41b5b5c 100644 --- a/tests/test_monitoring.py +++ b/tests/test_monitoring.py @@ -9,7 +9,7 @@ import time import os from unittest.mock import patch, MagicMock from prometheus_client import REGISTRY -from core.monitoring import MetricsCollector, structured_logger +from metrics.monitoring import MetricsCollector, structured_logger from core.config import Config @@ -227,7 +227,7 @@ class TestErrorHandling: def test_measure_time_decorator(self, metrics): """Тест декоратора measure_time""" - from core.monitoring import measure_time + from metrics.monitoring import measure_time @measure_time(metrics, 'test_api') def test_function(): @@ -240,7 +240,7 @@ class TestErrorHandling: @pytest.mark.asyncio async def test_error_handler_decorator(self, metrics): """Тест декоратора error_handler""" - from core.monitoring import error_handler + from metrics.monitoring import error_handler @error_handler(metrics, 'test_handler') async def failing_function():