Files
2026-08-26 11:05:32 +03:00

6.8 KiB
Raw Permalink Blame History

Работа с SigNoz для HAN Chat

Это эксплуатационный runbook UI: фильтры, ежедневная проверка и разбор инцидентов. Раскатка ВМ3, lockdown и обновление стека — только в RUNBOOK.ru.md.

Базовые фильтры

Во всех разделах начинайте с:

service.namespace = han-chat
deployment.environment = production-like

Для сравнения релизов используйте service.version. Не смешивайте production и smoke/local данные в одном запросе без фильтра окружения.

MVP service names:

api-backend
sms-service
sms-worker

Для worker ищите ручные spans sms.claim, sms.process, sms.provider, sms.save_result. Health routes исключены до tail sampling.

Ежедневная проверка

  1. Services — появились ли ожидаемые сервисы, нет ли резкого роста error rate или p95 latency.
  2. Traces — последние ошибки и медленные запросы, путь от HTTP endpoint до БД/Redis/внешнего API.
  3. Logs — события рядом с trace по trace_id, ошибки и повторы workers.
  4. Metrics — насыщение ресурсов, очереди, SMS и фоновые задачи.
  5. Alerts — firing/acknowledged alerts и причины, а не только факт firing.

Пока приложения не инструментированы, эти представления будут неполными; см. ограничение в BACKEND_OTLP.md.

Разбор инцидента

Начните с узкого временного диапазона вокруг события:

  1. найдите пользовательский request_id из ответа API или журнала;
  2. в Logs ищите точное значение request_id;
  3. откройте связанный trace по trace_id;
  4. найдите первый ошибочный или самый долгий span, а не последний симптом;
  5. сравните с предыдущей версией по service.version;
  6. проверьте зависимости: PostgreSQL, Redis, Keycloak, S3, SMS provider, Bitrix;
  7. сохраните ссылку на запрос SigNoz и зафиксируйте UTC-интервал инцидента.

Не добавляйте в SigNoz телефон, email, токены, cookie, содержимое сообщений, полные SQL statements и query string. Collector удаляет известные чувствительные атрибуты, но новые поля должны проходить отдельную проверку.

Рекомендуемые представления после инструментации

API

  • request rate, error rate, p50/p95/p99 duration;
  • разрез по нормализованному http.route, не по сырому URL;
  • 401/403 отдельно от 5xx;
  • latency PostgreSQL, Redis, Keycloak и S3;
  • количество активных WebSocket/SSE соединений и reconnect.

SMS

  • sms_send_total по результату/provider;
  • provider latency;
  • uncertain deliveries и callback lag;
  • возраст pending-заявок и размер journal;
  • валидность runtime settings.

Workers

  • длительность и результат job;
  • глубина очереди, oldest item age;
  • retries/dead-letter/recovery;
  • lag cleanup/delivery/safety/notification jobs.

Инфраструктура

  • CPU, RAM, filesystem usage VM SigNoz;
  • ClickHouse inserts/query latency, parts и disk usage;
  • dropped/refused spans, exporter failures и queue size Collector;
  • restarts и health контейнеров.

Первые алерты

Точный состав панелей и acceptance-критерии зафиксированы в MVP_DASHBOARDS_ALERTS.md.

Создавайте алерты только после получения базовой линии, чтобы избежать шума:

  • API 5xx rate выше согласованного порога 5–10 минут;
  • p95 latency выше SLO 10 минут;
  • нет телеметрии от production-сервиса 5–10 минут при ожидаемом трафике;
  • Collector exporter failures/dropped telemetry больше нуля;
  • очередь workers или oldest item age растёт;
  • SMS uncertain/callback lag превышает бизнес-порог;
  • диск VM SigNoz заполнен более чем на 75% и 85%;
  • любой критичный контейнер перезапускается или unhealthy.

Для каждого alert укажите severity, owner, runbook URL и минимальное время устойчивого нарушения. Не оповещайте по единичной ошибке.

Sampling и интерпретация

Collector сейчас применяет probabilistic sampling 10% только к traces. Метрики и логи не sampled этим processor. Следствия:

  • единичный запрос может не попасть в Traces;
  • абсолютное число traces нельзя считать числом запросов;
  • ошибки тоже могут быть отброшены, потому что tail/error-aware sampling пока не настроен;
  • SLO и alerting следует строить на метриках, а не на подсчёте sampled traces.

Для production рекомендуется перейти к tail sampling: сохранять 100% ошибок и медленных traces, а успешные быстрые запросы — выборочно.

Обслуживание SigNoz

Проверка:

cd /opt/signoz
sudo ./scripts/30-verify-signoz.sh
sudo docker compose -f pours/deployment/compose.yaml logs --since=30m
df -h
docker system df

Перед обновлением:

  1. временно разрешить исходящий интернет;
  2. сделать snapshot диска;
  3. проверить свободное место;
  4. выполнить scripts/20-deploy-signoz.sh;
  5. повторить smoke-тест и проверить сохранность старых данных;
  6. отключить внешний доступ.

Не выполняйте docker compose down -v, docker volume prune или docker system prune --volumes: эти команды могут удалить телеметрию и метаданные SigNoz.