# Observability Review — 2026-06-10

**Tool:** SigNoz (self-hosted, https://signoz.chatindex.app)
**Period:** last 24h (сравнение с предыдущими снапшотами)

## Key Metrics

| Metric | Value (24h) | vs вчера / тренд |
|---|---|---|
| Error rate | 7.3% (372 / 5,064 req) | ↑ с 3.8% вчера (+92%) |
| Ошибок всего | 372 | ↑ с 191 вчера (+95%) |
| GET graph.facebook.com ошибок | 288 | ↑ с 56 вчера (+414%) |
| tcp/tls connect failures | 24+24 | Новый паттерн |
| p99 latency (MCP SSE) | н/д (long-lived SSE) | без изменений |
| Slow queries (> 100ms) | 0 | норма |
| Request volume (24h) | 5,064 | ↑ vs 4,444 вчера (+14%) |

## Findings

### Ошибки

- **ВЫСОКИЙ ПРИОРИТЕТ: Всплеск Meta Graph API ошибок**
  - 288 ошибок `GET graph.facebook.com` за 24ч — 78% всех ошибок сервиса
  - Вчера: 56 ошибок, рост x5.1
  - Ошибки распределены равномерно во времени (не одиночный burst) → стабильный retry-storm от истёкшего OAuth токена
  - Issue #105 создан

- **СРЕДНИЙ ПРИОРИТЕТ: 40% серверных спанов без http.route (рекуррент)**
  - 2,046 из 5,064 серверных спанов с пустым `http.route`
  - Невозможно атрибутировать ошибки POST/GET к конкретным эндпоинтам
  - Встречается 3+ снапшота подряд
  - Issue #106 создан

- **СРЕДНИЙ ПРИОРИТЕТ: tcp/tls connect failures к внешним API**
  - api.linkedin.com: 12 tcp.connect ошибок
  - api.x.com: 5, graph.threads.net: 5, openrouter.ai: 2
  - Новый паттерн — в предыдущих снапшотах не фиксировался
  - Issue #107 создан

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

- Данных о p99 по маршрутам недостаточно — SigNoz не возвращает `p99` при группировке по `http.route` (нет данных по duration в этом разрезе)
- Предыдущий снапшот: Google Search Console URL Inspection p99 ≈ 6,408 ms (issue #101 был создан)
- `/api/cron/refresh-tokens`: 572 вызовов — в норме

### База данных

- Медленных DB-запросов (> 100ms): 0
- PrismaInstrumentation активна, все запросы в норме

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

- **Meta Graph API**: нестабильна — 288 ошибок (issue #105)
- **LinkedIn**: 12 connection failures (issue #107)
- **Twitter/X**: 5 connection failures (issue #107)
- **Threads**: 5 connection failures (issue #107)
- **OpenRouter**: 2 connection failures (issue #107)
- **cron/refresh-tokens**: 572 вызовов, без аномалий

## Recurring Issues

| Проблема | Снапшотов подряд |
|---|---|
| Серверные спаны без `http.route` (40% трафика) | ≥ 4 (с 31 мая) |
| Meta Graph API ошибки | ≥ 2 (рост: 56 → 288) |

## Hypotheses

- cron/refresh-tokens работает штатно (572 вызовов), но если Meta токен не revoke'd — refresh будет продолжать failing, усугубляя ошибки
- tcp.connect к LinkedIn/Threads/Twitter могут быть связаны с одним user-triggered MCP вызовом, который упал с таймаутом — нужно сопоставить трассировки
- Рост request volume (+14% к вчера) — нормальный органический рост

## Recommendations

1. **Meta OAuth storm** (issue #105) → найти `ServiceConnection` с провайдером Meta, истёкшим токеном, остановить retries, уведомить пользователя → ожидаемый результат: ошибки `GET graph.facebook.com` упадут до < 10/день
2. **http.route attribution** (issue #106) → добавить `setAttribute('http.route', ...)` для всех ветвей в MCP route handler → 40% неатрибутированного трафика станут видимы в SigNoz
3. **Connection failures diagnostics** (issue #107) → добавить `error.message` к TCP/TLS span attributes → позволит отличить timeout от refused/rate-limit
