Files
transcriber/tasks/items/external-service-metrics.md
T
av 8739b18a9f tasks: очередь расставлена от базы к деталям
- порядок беклога и роадмапа назначен слоями: проверки, которым можно
  верить → долги входа → владелец записи и контракт API → конвейер под
  тестами → приложение и возможности поверх; у каждого движения записана
  причина;
- заведены восемь задач под пункты «Завершения», которых не закрывала ни
  одна запись, — цель any-audio-source была без задач вовсе;
- у четырёх задач сняты критерии, требовавшие того, что делает задача ниже
  по очереди; исправлены ссылки на несуществующий repo/sqlite и на
  отменённую разведку об очереди.
2026-08-12 20:48:53 +03:00

3.3 KiB
Raw Blame History

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

  • Тип: feature
  • Категория: Очередь — Метрики внешних сервисов пишутся в выбранном словаре, а не переписываются потом.
  • Зачем: Ни у Telegram, ни у Object Storage, ни у SpeechKit нет ни одной метрики: отказ внешнего сервиса виден только строкой в журнале контейнера.
  • Теги: goal:service-observability

Двигает пункты 2 и 5 «Завершения» цели: у каждого внешнего сервиса появляются вызовы, отказы и длительность, а расход на платные сервисы виден числом.

Внешних сервисов сегодня четыре — Telegram, Object Storage, SpeechKit и ffmpeg/ffprobe как внешний процесс; пятым станет языковая модель. Метрика заводится одной формой на все, чтобы шестой сервис не приносил шестого способа считать.

Затрагивает

  • internal/metrics — форма метрики внешнего вызова: имя сервиса, операция, исход, гистограмма длительности;
  • адаптеры internal/adapter/* — место, где вызов оборачивается замером;
  • docs/architecture.md, раздел эксплуатации — перечень метрик;
  • docs/conventions/ — правило: новый внешний вызов приходит со своей меткой, а не со своей метрикой.

Критерии приёмки

  • У каждого из четырёх внешних сервисов есть счётчик вызовов, счётчик отказов и гистограмма длительности. Оракул — тест: прогнать по одному вызову каждого адаптера с подставным собеседником и снять /metrics.
  • Отказ внешнего сервиса виден отдельно от успеха и не теряется в общем счётчике. Оракул — тест: подставной собеседник отвечает отказом, метка исхода в метрике отличается.
  • Минуты распознавания и объём заливки видны числом. Оракул — тест: после шага распознавания счётчик минут вырос на длительность записи, а после заливки в Object Storage счётчик объёма — на размер файла.

Рамки

Трассировку здесь не заводим — чем развивать наблюдаемость, решает разведка opentelemetry-fit; эта задача остаётся в том словаре, который она выберет. Учёт по пользователям — задача usage-accounting, здесь метрики сервисные.