# Observability Review — 2026-06-03

**Tool:** SigNoz
**Period:** last 24h (comparison: last 168h / 7 дней)

## Key Metrics

| Metric | Value (24h) | vs 7 days avg |
|---|---|---|
| Error rate | **0%** (0 / 12,147) | ↓ улучшение (было 1.71% / 1,598 ошибок за 7д) |
| p99 latency (MCP SSE) | 4,222,448 ms (~70 мин) | long-lived SSE — ожидаемо |
| p99 latency (cron/refresh-tokens) | 274 ms | норма |
| Slow DB queries (> 100 ms) | N/A — данных нет | инструментация Prisma отсутствует |
| Request volume (24h) | 12,147 span-ов | ~12k/день — baseline |

## Findings

### Ошибки
- **0 ошибок за последние 24h** — значительное улучшение по сравнению с 1,598 ошибками за предыдущие 7 дней.
- Ошибки 7-дневного окна — в основном `refresh_connection` сбои (circuit breaker, issue #75), которые, судя по всему, теперь устранены.
- HTTP 400: 3 POST-запроса (вероятно, боты / невалидные `next-action` заголовки).
- HTTP 404: 2 запроса (`POST /` и `POST`).

### Латентность
- **`GET /api/mcp/[apiKey]`** p99 = 4,222 с — SSE keep-alive (долгоживущие соединения), ожидаемо. Не является признаком проблем с производительностью.
- **`GET`** (без маршрута) p99 = 1,928 с — вероятно, исходящий long-lived HTTP/fetch спан. Причина неясна.
- **`POST /api/cron/refresh-tokens`** p99 = 274 ms — в норме.
- **`oauth.fetch_token`** p99 = 215 ms — в норме.
- **OpenRouter credits** p99 = 209 ms — в норме.

### База данных
- `slow_db_queries: []` — DB-запросы не трекаются в SigNoz.
- Пакет `@opentelemetry/instrumentation-prisma` не установлен — **пробел в наблюдаемости**.
- Issue #81 создан.

### Интеграции
- Все маршруты репортятся: `GET /api/mcp/[apiKey]`, `POST /api/cron/refresh-tokens` видны корректно.
- Некоторые исходящие спаны (`GET`, `POST`) по-прежнему без атрибута `http.route` — issue #56 (закрыт) частично решил проблему для входящих запросов.

## Recurring Issues

- **Unnamed span `GET` (p99 ~32 мин)** — появляется во 2-й раз подряд; не связан с SSE endpoint. Требует расследования.

## Hypotheses

- Unnamed `GET` с p99 32 мин — возможно, исходящий WebSocket или keep-alive соединение к внешнему API (OpenRouter, GSC?). Мониторить в следующих снапшотах.
- HTTP 400 (3 запроса) — вероятно, боты. Мониторить на рост.

## Recommendations

1. **[P2 — issue #81]** Добавить `@opentelemetry/instrumentation-prisma` — без него невозможно диагностировать медленные DB-запросы и N+1 паттерны.
2. **[Мониторить]** Unnamed `GET` спан с p99 ~32 мин — если появится в следующем снапшоте, создать issue.
3. **[Позитив]** 0 ошибок за 24h — circuit breaker (#75) работает; issue #78 и #79 (approved) можно брать в работу.
