# Observability Review — 2026-06-01

**Tool:** SigNoz (`https://signoz.chatindex.app`)
**Period:** последние 24 ч (основной анализ) + 7 дней для контекста

## Key Metrics

| Метрика | Значение (24h) | Значение (7d) | vs предыдущий период |
|---|---|---|---|
| Всего span'ов | 11 662 | 68 450 | 7d avg: 8 179/day (+42.6% в 24h) |
| Ошибки (hasError=true) | 0 | 1 596 | ⬇️ Улучшение (0% vs 2.33% в 7d) |
| Error rate | 0.0% | 2.33% | ⬇️ с 2.81% (31 мая) → исторические ошибки вытесняются |
| p99 латентность MCP SSE | 2 401 627 ms | — | ℹ️ SSE-поток, ожидаемо |
| p99 латентность cron | 211.8 ms | — | 🟡 Норм |
| Медленные DB-запросы (>50 ms) | 0 | 0 | ✅ |
| Объём запросов / день | 11 662 | 8 179 avg | ⚠️ +42.6% vs среднего |

## Findings

### Ошибки

**Ошибок в последние 24 часа: 0 ✅**

Исторические 1 596 ошибок (7-дневное окно) продолжают вытесняться. Это span'ы периода до фикса #61/#62 (30 мая). Ожидается полное исчезновение к 7 июня.

Ошибки `refresh_connection`: 0 в 24h (было 175 за предыдущую неделю) — фикс #62 работает.

### Латентность

| Endpoint / Span | p99 (24h) | Оценка |
|---|---|---|
| GET /api/mcp/[apiKey] | 2 401 627 ms (~40 мин) | ℹ️ SSE-поток (ожидаемо) |
| GET (generic / outgoing) | 1 006 189 ms (~16.8 мин) | ℹ️ SSE или исходящие запросы |
| POST /api/cron/refresh-tokens | 211.8 ms | 🟡 Норм (внешние OAuth API) |
| fetch Google Search Console API | 209.9 ms | 🟢 Внешний API, норм |
| POST (generic MCP tools) | 209.6 ms | 🟢 |
| POST /api/mcp/[apiKey] | 202.5 ms | 🟢 |
| GET /login | 193.8 ms | 🟢 |
| refresh_connection | 187.1 ms | 🟢 |

> `GET /api/mcp/[apiKey]` и generic `GET` — это SSE-соединения. p99 отражает длительность сессии, а не задержку ответа. Не является проблемой.

### Database

Все DB-запросы в пределах нормы (нет данных о медленных запросах >50ms). Здоровье БД: ✅

### Интеграции

- Google Search Console API: `fetch POST .../searchAnalytics/query` зафиксирован с нормальной latency (209.9 ms) ✅
- OAuth refresh (`refresh_connection`): 0 ошибок в 24h ✅
- Неатрибутированные spans (`GET` generic, `POST` generic): присутствуют — это исходящие HTTP-запросы (undici/fetch), для которых нет входящего URL. Поведение ожидаемо после фикса маршрутизации (30 мая).

### Объём запросов (⚠️ Спайк)

**11 662 span'ов за 24 часа vs среднего 8 179/day (+42.6%).**

Возможные причины:
- Рост активных пользователей или MCP-сессий
- Краулер / автоматизированный клиент на MCP-эндпоинте
- Увеличение фоновых операций cron/refresh

Без алёртов в SigNoz невозможно отследить этот рост в режиме реального времени.

## Recurring Issues

- **Неатрибутированные `GET`/`POST` spans** — присутствуют во всех снэпшотах начиная с 31 мая. Частично решено (входящие запросы теперь имеют route), исходящие spans по-прежнему без атрибуции. Не критично.

## Hypotheses

- Спайк +42.6% в объёме запросов может отражать органический рост (новые пользователи) или разовый всплеск. Необходим алёрт-триггер для систематического отслеживания.
- Исторические ошибки (1 596) полностью исчезнут из 7-дневного окна к ~7 июня.

## Recommendations

1. **Настроить алёрт SigNoz на объём запросов** — baseline 8 000/день, алёрт при +30% в течение 1 часа. Без этого аномальный трафик незаметен.
2. **Закрыть #75 или снизить приоритет** — 0 ошибок refresh_connection за 24h. Circuit breaker полезен проактивно, но P1-приоритет можно снизить до P2.
3. **Мониторить спайк объёма** — проверить через 24–48 часов, сохраняется ли уровень 11k+ или это разовый всплеск.
