012 remove signoz

This commit is contained in:
Раис Юсупалиев
2026-03-08 22:59:11 +03:00
parent 81e484d7d1
commit f799f2ba03
29 changed files with 118 additions and 1323 deletions
+4 -3
View File
@@ -1,7 +1,7 @@
# Spec Tasks Index
> ⚠️ This file is generated. Do not edit manually.
> Generated at (UTC): `2026-03-08T19:06:27+00:00`
> Generated at (UTC): `2026-03-08T19:58:23+00:00`
## Tasks
@@ -19,9 +19,10 @@
| 009 | DONE | 2026-03-07 | Add local infrastructure stack | `spec/tasks/009_add_local_infra_stack.md` |
| 010 | DONE | 2026-03-08 | Migrate to YAML-only configuration loading | `spec/tasks/010_migrate_to_yaml_only_configuration.md` |
| 011 | DONE | 2026-03-08 | Migrate Redis repository client to aioredis | `spec/tasks/011_migrate_redis_repository_to_aioredis.md` |
| 012 | DONE | 2026-03-08 | Remove observability and SigNoz stack for phase 1 | `spec/tasks/012_remove_observability_and_signoz_for_phase1.md` |
## Summary
- Total: **12**
- Total: **13**
- TODO: **0**
- DONE: **12**
- DONE: **13**
+1 -26
View File
@@ -20,8 +20,6 @@
- Возвращать унифицированный список тарифов, отсортированных по цене
- Если провайдер вернул ошибку или не ответил вовремя — исключить его из результата, не падая целиком
- Кешировать ответы провайдеров для исключения повторных внешних запросов. Время кэширования вынести в конфиг
- Обеспечивать структурированную наблюдаемость: трейсы, метрики, логи — связанные по request ID
- Отправлять алерты в Telegram при аномалиях (ошибки, всплески задержки, недоступность провайдера). token вынести в конфиг
---
@@ -113,27 +111,6 @@ delivery_days_max: int
| Кеш | Redis |
| Конфигурация | pydantic-settings |
| Сервер | Uvicorn |
| Инструментация | OpenTelemetry SDK |
| Бэкенд наблюдаемости | SigNoz (self-hosted) |
| Структурные логи | structlog |
| Алерты | SigNoz Alert Rules → Webhook → Telegram Bot API |
---
## Наблюдаемость
- Каждому запросу присваивается `request_id` (UUID) через middleware
- `request_id` привязывается ко всем логам через `structlog.contextvars`
- Трейсы отправляются через OpenTelemetry; FastAPI и httpx инструментируются автоматически
- Ручные спаны оборачивают: `AggregatorService.get_all_prices`, `get_price` каждого провайдера, обращения к кешу
- Атрибуты спанов: `provider`, `from_city`, `to_city`, `weight_kg`, `cache_hit`, `tariffs_found`
- Отслеживаемые метрики: количество запросов, количество ошибок, время ответа (p50/p99), доступность каждого провайдера
- Все три сигнала (трейсы, метрики, логи) связаны через `trace_id`
### Условия алертов (Telegram)
- Провайдер вернул 5xx — порог: 5 ошибок за 5 минут
- p99 времени ответа провайдера > 5000ms в течение 10 минут
- Провайдер недоступен более 5 минут
---
@@ -143,7 +120,6 @@ delivery_days_max: int
app/
├── controllers/
│ ├── http_client.py
│ ├── middleware.py
│ └── v1/
│ └── delivery.py # Controller
├── services/
@@ -174,5 +150,4 @@ app/
# docker-compose сервисы
app # FastAPI-приложение
redis # Кеш тарифов
signoz # Бэкенд наблюдаемости (трейсы + метрики + логи + алерты)
```
```
@@ -0,0 +1,47 @@
---
id: 012
title: Remove observability and SigNoz stack for phase 1
status: DONE
created: 2026-03-08
---
## Context
На первом этапе принято решение отказаться от логирования, мониторинга, алертинга и инфраструктуры SigNoz. Текущая кодовая база и тесты содержат эти зависимости и сценарии.
## Goal
Удалить из проекта все runtime- и test-артефакты, связанные с логами, мониторингом, алертами, Telegram alerting и SigNoz, сохранив рабочий API расчета доставки и кеширование.
## Constraints
- Соблюдать layered architecture из `AGENTS.md`; не переносить бизнес-правила между слоями.
- Scope задачи ограничен удалением observability/alerting/SigNoz и зависимых конфигураций, инфраструктурных и тестовых артефактов.
- Не изменять бизнес-логику расчета тарифов, provider integration и API-контракт `POST /api/v1/delivery/price`.
- Не добавлять новую систему мониторинга или алертинга в рамках этой задачи.
- Не изменять файлы в `spec/`.
## Acceptance criteria
- Из runtime-приложения удалены middleware, instrumentation и иные механизмы, реализующие request/log correlation, tracing, metrics и alerting.
- В коде и конфигурации приложения отсутствуют секции и параметры `observability` и `alerts`, связанные с OpenTelemetry, structlog, SigNoz и Telegram.
- Из инфраструктурных файлов удалены сервис/настройки SigNoz и маршрутизация алертов.
- Удалены или обновлены тесты observability/alerts; тестовый набор для контроллера, сервиса, репозитория и конфигурации остается зеленым.
- По файлам приложения и инфраструктуры нет упоминаний `signoz`, `opentelemetry`, `structlog`, `telegram`.
## Definition of Done
- [ ] Удалены runtime-компоненты observability/alerting.
- [ ] Обновлены YAML-конфиги и config schemas без секций observability/alerts.
- [ ] Обновлены инфраструктурные файлы без SigNoz.
- [ ] Удалены/обновлены тесты observability и alerts.
- [ ] Пройдены все команды из раздела Commands.
## Tests
- Обновить `tests/config/test_config_sections.py` под конфигурацию без observability/alerts.
- Удалить или заменить `tests/config/test_alerts_config.py` и `tests/observability/*` в соответствии с новым scope.
- Обновить `tests/smoke/test_local_infra_stack.py` под инфраструктуру без SigNoz.
- Подтвердить, что `tests/controllers/v1/test_delivery.py`, `tests/services/test_aggregator.py`, `tests/repositories/cache/test_redis_cache.py` проходят без observability-зависимостей.
## Commands
- `poetry run pytest tests/controllers/v1/test_delivery.py -q`
- `poetry run pytest tests/services/test_aggregator.py -q`
- `poetry run pytest tests/repositories/cache/test_redis_cache.py -q`
- `poetry run pytest tests/config/test_config_sections.py -q`
- `poetry run pytest tests/smoke/test_local_infra_stack.py -q`
- `! rg -n "(signoz|opentelemetry|structlog|telegram)" app tests docker-compose.yml pyproject.toml config.yaml config.example.yaml config.test.yaml infra`