Service Graph и представление Service Graph
Service Graph — это визуальное представление связей между службами в распределённой системе. Каждый узел представляет службу, такую как API или база данных, а каждое ребро представляет запросы между службами.
Используйте Service Graph, чтобы обнаруживать проблемы с производительностью, отслеживать тренды ошибок и задержек по службам и переходить к трассировкам, которые их вызвали.
Service Graph построен на метриках RED, методологии мониторинга, которая фокусируется на трёх сигналах:
- Rate: запросы в секунду
- Errors: неудачные запросы в секунду
- Duration: распределение задержки (например, p50, p95, p99)
Данные графа служб проходят от трассировок через конвейер метрик в Grafana:
- Ваше приложение выдаёт трассировки в Tempo.
- Генератор метрик Tempo или Grafana Alloy обрабатывает трассировки и записывает метрики графа служб в совместимый с Prometheus бэкенд.
- Grafana читает эти метрики из вашего связанного источника данных Prometheus и отрисовывает граф.
Перед началом
Чтобы использовать Service Graph, вам нужно:
- Генерация метрик графа служб, настроенная в Grafana Alloy или генераторе метрик Tempo. Без этого данных графа служб не существует.
- Источник данных Prometheus в Grafana, который принимает сгенерированные метрики.
- Связанный источник данных Prometheus в настройках источника данных Tempo в разделе Service graph. Подробности см. в разделе Дополнительные настройки или Провижининг источника данных для конфигурации YAML.
Если вы выполняете запрос Service Graph и видите пустой результат, обратитесь к разделу Устранение неполадок на этой странице.
Как это работает
Генератор метрик или Alloy исследует промежутки трассировки на предмет отношений родитель-потомок, представляющих запрос, используя семантические соглашения OpenTelemetry. Он записывает следующие метрики в ваш бэкенд Prometheus:
traces_service_graph_request_total: общее количество запросов между двумя службами (счётчик).traces_service_graph_request_failed_total: неудачные запросы между двумя службами (счётчик).traces_service_graph_request_server_seconds: время ответа, как его наблюдает сервер (гистограмма).traces_service_graph_request_client_seconds: время ответа, как его наблюдает клиент (гистограмма).
Grafana читает эти метрики из связанного источника данных Prometheus, чтобы отрисовать граф узлов и вычислить частоты запросов, частоты ошибок и времена ответа.
Полный справочник по метрикам, включая метки, виртуальные узлы и дополнительные метрики, см. в разделе Графы служб в документации Tempo.
Отображение Service Graph
Чтобы отобразить Service Graph:
- Перейдите в Explore.
- Выберите источник данных Tempo.
- Выберите тип запроса Service Graph.
- Выполните запрос.
- (Необязательно) Отфильтруйте по имени службы.
Каждый кружок на графе представляет службу. Числа внутри кружков указывают время ответа и запросы в секунду.
Цвет каждого кружка показывает долю успешных и неудачных запросов:
Соотношение цветов каждого кружка показывает долю каждого состояния. Преимущественно зелёный кружок указывает на здоровый трафик; видимые красные, жёлтые или фиолетовые дуги указывают на сбои, ошибки или ограничение соответственно.
Чтобы открыть контекстное меню со ссылками для быстрого перехода к трассировкам, метрикам и связанным представлениям, нажмите на службу.
Подробности о навигации, масштабировании и взаимодействии с компоновкой графа см. в документации панели графа узлов.
Чтобы исследовать службу с высокой частотой ошибок, используйте TraceQL:
{ resource.service.name = "<SERVICE_NAME>" && status = error }
Замените <SERVICE_NAME> на имя, показанное в узле Service Graph.
Дополнительные запросы, которые вы можете запустить на основе наблюдений Service Graph, см. в разделе
Примеры запросов TraceQL.
Представление Service Graph
Представление Service Graph отображает таблицу метрик RED (частота, частота ошибок, длительность) рядом с графом узлов. Таблица использует другой набор метрик, чем граф узлов:
traces_spanmetrics_calls_total: столбцы частоты и частоты ошибок.traces_spanmetrics_duration_seconds_bucket: столбец длительности.
Эти метрики промежутков должны присутствовать в вашем связанном источнике данных Prometheus. Генерация метрик промежутков должна быть включена в конфигурации вашего Tempo или Alloy. Обратитесь к разделу Включение графов служб в документации Tempo.
Подробности о представлении Service Graph см. в документации представления Service Graph.
Чтобы открыть представление Service Graph, выполните те же шаги, что и в разделе Отображение Service Graph. Таблица появляется рядом с графом узлов после выполнения запроса.
Чтобы открыть запрос в Prometheus с автоматически заданным в запросе именем промежутка этой строки, нажмите на строку в столбцах rate, error rate или duration.

Чтобы открыть запрос в Tempo с автоматически заданным в запросе именем промежутка этой строки, нажмите на строку в столбце links.
Вы также можете использовать TraceQL, чтобы запрашивать те же данные программно. Обратитесь к разделу Примеры запросов TraceQL, чтобы перевести наблюдения Service Graph в запросы.
Устранение неполадок
Если Service Graph не отображает данные, таблица пуста или вы видите предупреждения о высокой кардинальности, см. Проблемы графа служб в руководстве по устранению неполадок.
Дальнейшие шаги
- Включение графов служб — настройте генерацию метрик в Tempo или Alloy.
- Панель графа узлов — навигация и настройка компоновки графа.