Карта сервисов: кто кого вызывает
Карта сервисов строится по трейсам ваших приложений: узлы — сервисы и базы данных, стрелки — вызовы между ними. На каждом узле — запросов в секунду, 95-й перцентиль времени ответа и доля ошибок. Отдельно ставить ничего не нужно: если приложения уже шлют трейсы, карта появится сама.
Где смотреть
Дашборд «Карта сервисов» в вашей Grafana (вход из портала по кнопке). Поле «Сервис (регэксп)» вверху сужает карту до части сервисов: orders.*, (api|web)-.*; .* — все.
Что на дашборде
- Карта сервисов — граф вызовов. В круге — запросов в секунду и p95, под кругом — имя и тип узла. Кольцо вокруг узла — доля успешных (зелёная часть) и ошибочных (красная) запросов. Наведите на стрелку — увидите частоту вызовов, на узел — количество запросов и ошибок. Клик по узлу-сервису → «Трейсы сервиса» открывает дашборд «Трейсы» с этим сервисом.
- Сервисы и базы данных — те же узлы таблицей: запросов в секунду, всего, ошибок, доля ошибок (оранжевая от 1%, красная от 5%), p95.
- Операции сервисов — входящие операции (маршруты HTTP, методы RPC) с p50 и p95: где ошибки и где медленно.
- Запросы к базам данных — какой сервис что делает в какой базе: имя спана обычно содержит операцию и таблицу (
SELECT shop.products). - Графики запросов, ошибок и p95 по сервисам во времени.
Откуда берутся узлы и стрелки
- Сервис — значение
service.nameприложения; его запросы — серверные спаны (входящие HTTP/gRPC-вызовы). Ошибка — спан со статусомERROR. - Стрелка между сервисами — клиентский спан одного сервиса, у которого дочерний серверный спан в другом сервисе. Хранилище трейсов раз в минуту само сводит такие пары, поэтому новая связь появляется на карте с задержкой до 1–2 минут.
- База данных — клиентские спаны с атрибутом
db.system.name(или старымdb.system): узел называется «система: база», напримерpostgresql: shop; база — изdb.namespace/db.name, если их нет — адрес сервера. Стандартные инструментации OpenTelemetry для драйверов баз (Npgsql, SqlClient, psycopg, JDBC, redis) эти атрибуты ставят сами.
Если включено сэмплирование (например, каждый десятый запрос), карта показывает частоты по попавшим в выборку запросам: при доле 0.1 реальный трафик в 10 раз больше. Доли ошибок и перцентили от сэмплирования почти не зависят.
Если карта пустая или без стрелок
- Нет узлов — приложения не шлют трейсы или шлют без серверных спанов. Проверьте дашборд «Трейсы» и раздел «Если трейсы не появляются».
- Узлы есть, стрелок нет — вызовы между сервисами идут без передачи контекста трассировки (заголовок
traceparent). Включите инструментацию HTTP-клиента в вызывающем сервисе. - Нет баз данных — у клиентских спанов нет
db.system.name/db.system: добавьте инструментацию драйвера базы.