# πŸ›  ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° систСмы ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ## πŸ“ž Руководство ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΈ troubleshooting --- ## πŸ” Диагностика ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ### **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° статуса систСмы:** #### 1. **ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Prometheus** ```bash curl http://localhost:8000/metrics | grep telegram_bot ``` ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ошибок, ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ #### 2. **GlitchTip** ```bash curl http://localhost:8000/api/1/projects/ ``` ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: список ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² #### 3. **Π›ΠΎΠ³ΠΈ Π±ΠΎΡ‚Π°** ```bash tail -f bot.log | grep -E "(ERROR|CRITICAL)" ``` ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: отсутствиС критичСских ошибок #### 4. **Бтатус Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²** ```bash docker-compose ps ``` ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: всС сСрвисы Π² статусС "Up" --- ## πŸ› РаспространСнныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ### **ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ** **Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹:** `curl http://localhost:8000/metrics` Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пустой ΠΎΡ‚Π²Π΅Ρ‚ **РСшСниС:** 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π±ΠΎΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½: `python new_bot.py` 2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€Ρ‚ 8000 свободСн 3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π² `config_local.py` ### **ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: GlitchTip Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚** **Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹:** http://localhost:8000 Π½Π΅ открываСтся **РСшСниС:** ```bash # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° docker-compose logs glitchtip # ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ docker-compose restart glitchtip # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΡ€Ρ‚Π° netstat -tlnp | grep 8000 ``` ### **ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: АлСрты Π½Π΅ приходят** **Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹:** Ошибки Π΅ΡΡ‚ΡŒ, Π½ΠΎ увСдомлСния Π½Π΅ приходят **РСшСниС:** 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ `DEVELOPER_CHAT_ID` Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ 2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΎΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Ρ‡Π°Ρ‚ 3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° Π±ΠΎΡ‚Π° Π² Ρ‡Π°Ρ‚Π΅ ### **ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π›ΠΎΠ³ΠΈ Π½Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ** **Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹:** Π€Π°ΠΉΠ» `bot.log` Π½Π΅ обновляСтся **РСшСниС:** 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° Π½Π° запись Π² ΠΏΠ°ΠΏΠΊΡƒ 2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³Π³Π΅Ρ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ 3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ логирования Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ --- ## πŸ”§ Настройка ΠΈ конфигурация ### **Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ:** ```python # Π’ core/monitoring.py self.new_metric = Counter('telegram_bot_custom_total', 'Description') # Π’ handlers metrics.new_metric.labels(type='example').inc() ``` ### **Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π°Π»Π΅Ρ€Ρ‚ΠΎΠ²:** ```python # Π’ core/alerts.py self.alert_rules['new_alert'] = { 'enabled': True, 'threshold': 50, 'cooldown': 300, 'last_alert': None } ``` ### **Настройка ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ:** ```python # Π’ config_local.py TELEGRAM_TOKEN = "your-bot-token" CHAT_ID = "your-chat-id" ENABLE_DEVELOPER_NOTIFICATIONS = True ``` --- ## πŸ“Š ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ### **Health checks:** #### 1. **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π±ΠΎΡ‚Π°:** ```bash # ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ тСстовоС сообщСниС Π±ΠΎΡ‚Ρƒ # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 10 сСкунд ``` #### 2. **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ:** ```bash curl -s http://localhost:8000/metrics | grep "telegram_bot_status" | grep "1" ``` #### 3. **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° GlitchTip:** ```bash curl -s http://localhost:8000/api/1/projects/ | grep -q "name" && echo "GlitchTip OK" ``` ### **АвтоматичСскиС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:** ```bash # ЗапуститС Π°Π²Ρ‚ΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ python setup_monitoring.py # ЗапуститС тСсты python final_test.py ``` --- ## πŸš€ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ### **Для высоких Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ:** 1. **ΠšΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ:** ```python # Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Redis для ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ REDIS_URL = "redis://localhost:6379" ``` 2. **БэмплированиС:** ```python # Π’ monitoring.py traces_sample_rate = 0.1 # 10% сэмплированиС ``` 3. **АсинхронныС Π°Π»Π΅Ρ€Ρ‚Ρ‹:** ```python # Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ asyncio для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ await self._send_telegram_alert_async(...) ``` ### **ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅:** 1. **ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ:** ```bash # Prometheus Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ сСрвСрС docker run -p 9090:9090 prom/prometheus ``` 2. **Балансировка Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ:** ```bash # Nginx для распрСдСлСния запросов upstream metrics { server localhost:8000; } ``` --- ## πŸ”„ ОбновлСниС систСмы ### **ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:** 1. **ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ:** ```python # Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½ΠΎΠ²Ρ‹Π΅ counters/histograms self.new_feature_metric = Counter('telegram_bot_new_feature_total') ``` 2. **ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ:** ```markdown ### НовыС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ - `telegram_bot_new_feature_total` - Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ``` 3. **Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ тСсты:** ```python def test_new_feature_metric(): assert metrics.new_feature_metric._value.get() >= 0 ``` 4. **ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ:** ```python # Π’ config_local.py NEW_FEATURE_ENABLED = True ``` --- ## πŸ“ž Эскалация ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ### **Π£Ρ€ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ:** #### πŸ”΄ **ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹** (нСмСдлСнная рСакция): - Π‘ΠΎΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ - ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ошибки Π² Π»ΠΎΠ³Π°Ρ… - ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ нСдоступны - АлСрты Π½Π΅ приходят #### 🟑 **Π’Π°ΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹** (Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ часа): - ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ - ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сниТСна - ЧастыС ошибки ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° #### πŸ”΅ **НСкритичСскиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹** (Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ дня): - ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ Π² Π»ΠΎΠ³Π°Ρ… - ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ - Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ### **ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹:** - **ВСхничСский Π»ΠΈΠ΄:** ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ `README_DEVELOPER.md` - **Команда:** Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `README_TEAM.md` - **ДокумСнтация:** ВсС инструкции Π² README Ρ„Π°ΠΉΠ»Π°Ρ… --- ## πŸ“š ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ### **ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³:** ```bash # ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π»ΠΎΠ³ΠΎΠ² tail -f bot.log # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ curl http://localhost:8000/metrics # Бтатус GlitchTip docker-compose logs glitchtip ``` ### **ΠžΡ‚Π»Π°Π΄ΠΊΠ°:** ```bash # ВСстированиС систСмы python final_test.py # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ python setup_monitoring.py # ВСст ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ python test_metrics_simple.py ``` ### **Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅:** ```bash # ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ GlitchTip docker-compose restart glitchtip # ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° всСх сСрвисов docker-compose down # ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π»ΠΎΠ³ΠΎΠ² всСх ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² docker-compose logs -f ``` --- ## 🎯 Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ### **Π•ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ:** 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ основныС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ 2. ΠŸΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΠΉΡ‚Π΅ Π»ΠΎΠ³ΠΈ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок 3. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π°Π»Π΅Ρ€Ρ‚Ρ‹ приходят ### **Π•ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ:** 1. АнализируйтС Ρ‚Ρ€Π΅Π½Π΄Ρ‹ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ 2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 3. ΠžΠ±Π½ΠΎΠ²Π»ΡΠΉΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ измСнСниях ### **ЕТСмСсячно:** 1. ΠŸΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ тСстированиС систСмы 2. ΠžΠ±Π½ΠΎΠ²Π»ΡΠΉΡ‚Π΅ зависимости 3. ΠŸΠ»Π°Π½ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ --- **БистСма ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° настроСна для Π»Π΅Π³ΠΊΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ развития!** πŸš€ *Для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ для быстрого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ*