Зависимости
Экран «Зависимости» показывает, с чем взаимодействует ваш сервис вовне — базы данных, кеши и другие HTTP-сервисы, которые он вызывает, — с числом вызовов, задержкой и долей ошибок по каждому. Дополнительная настройка не нужна: данные берутся из тех же трейсов транзакций/спанов, что уже описаны в разделе Производительность.
Где находится
Экран открывается по ссылке «Зависимости» в меню подраздела «Транзакции»
— URL /projects/<id>/dependencies. Фильтр сверху — окно времени
(пресеты или произвольный диапазон); «Применить» перезагружает страницу с
новым окном.
Как выводятся узлы
Каждая зависимость строится из client-op спанов — спанов, которые SDK записывает при исходящем вызове сервиса, — отфильтрованных по трём видам:
- спаны
db(либоdb.sql/db.query) → группируются как база данных, подписываются поdb.system(например,postgresql,mysql), если SDK его прислал. - остальные спаны
db.*(например, клиент кеша, проинструментированный какdb.redis) → группируются как кеш, подпись — часть имени операции послеdb.. - спаны
http.client(либоhttp.client.*) → группируются как http, подпись — целевой хост (server.address, либо домен из URL запроса).
Спаны группируются по паре (вид, цель): тысяча вызовов одного и того же
Postgres-инстанса — одна строка, а не тысяча. Спаны http.server (сама
транзакция, то есть входящие запросы) и чисто внутренние спаны в подсчёт
никогда не входят — зависимостью считается только исходящий вызов.
Как читать карту и таблицу
Над таблицей — диаграмма «сервис в центре, зависимости вокруг»: у каждой зависимости своё ребро, цвет ребра отражает долю ошибок, поэтому падающая зависимость видна сразу. Ниже — те же данные сортируемой таблицей:
| Колонка | Смысл |
|---|---|
| Зависимость | вид + цель, например «база данных: postgresql» или «http: api.stripe.com» |
| Вызовов | число client-op спанов за выбранное окно |
| p50 / p95 | перцентили длительности вызовов к этой зависимости |
| Доля ошибок | доля вызовов со статусом, отличным от ok |
Таблица ограничена по размеру (в неё попадают самые частые зависимости по числу вызовов); если их больше, над таблицей — пометка, сколько показано. Если в проекте ещё не настроен трейсинг или в окне не было записано ни одного client-op спана, вместо таблицы показывается пустое состояние или состояние ошибки — как включить трейсинг в SDK, см. Производительность → Как отправлять данные.
Чем это НЕ является
Это не карта топологии сервис→сервис. Узел здесь — внешняя зависимость: база данных, кеш или исходящий HTTP-вызов, а не другой ваш собственный сервис. Если сервис A вызывает сервис B и оба проинструментированы, этот экран покажет со стороны A одно ребро «http: b.internal» — он не сшивает трейсы A и B в общий граф и не покажет собственные зависимости B. Полная многосервисная топология требует распределённого трейсинга, который прокидывает общий контекст трейса между сервисами (одиночное приложение или сервисы, не прокидывающие заголовки трейса друг другу, такую связь не дадут).