Service Graph и представление Service Graph

Service Graph — это визуальное представление связей между службами в распределённой системе. Каждый узел представляет службу, такую как API или база данных, а каждое ребро представляет запросы между службами.

Используйте Service Graph, чтобы обнаруживать проблемы с производительностью, отслеживать тренды ошибок и задержек по службам и переходить к трассировкам, которые их вызвали.

Service Graph построен на метриках RED, методологии мониторинга, которая фокусируется на трёх сигналах:

  • Rate: запросы в секунду
  • Errors: неудачные запросы в секунду
  • Duration: распределение задержки (например, p50, p95, p99)

Данные графа служб проходят от трассировок через конвейер метрик в Grafana:

  1. Ваше приложение выдаёт трассировки в Tempo.
  2. Генератор метрик Tempo или Grafana Alloy обрабатывает трассировки и записывает метрики графа служб в совместимый с Prometheus бэкенд.
  3. Grafana читает эти метрики из вашего связанного источника данных Prometheus и отрисовывает граф.
Граф узлов, показывающий зависимости служб, с цветными кружками, представляющими частоту успешных и неудачных запросов

Перед началом

Чтобы использовать Service Graph, вам нужно:

Если вы выполняете запрос 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:

  1. Перейдите в Explore.
  2. Выберите источник данных Tempo.
  3. Выберите тип запроса Service Graph.
  4. Выполните запрос.
  5. (Необязательно) Отфильтруйте по имени службы.

Каждый кружок на графе представляет службу. Числа внутри кружков указывают время ответа и запросы в секунду.

Цвет каждого кружка показывает долю успешных и неудачных запросов:

Цвет Значение
Green Успех
Red Сбой (Fault)
Yellow Ошибки
Purple Ограниченные ответы (Throttled)

Соотношение цветов каждого кружка показывает долю каждого состояния. Преимущественно зелёный кружок указывает на здоровый трафик; видимые красные, жёлтые или фиолетовые дуги указывают на сбои, ошибки или ограничение соответственно.

Чтобы открыть контекстное меню со ссылками для быстрого перехода к трассировкам, метрикам и связанным представлениям, нажмите на службу.

Подробности о навигации, масштабировании и взаимодействии с компоновкой графа см. в документации панели графа узлов.

Чтобы исследовать службу с высокой частотой ошибок, используйте TraceQL:

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, показывающий таблицу метрик RED рядом с графом узлов

Подробности о представлении Service Graph см. в документации представления Service Graph.

Чтобы открыть представление Service Graph, выполните те же шаги, что и в разделе Отображение Service Graph. Таблица появляется рядом с графом узлов после выполнения запроса.

Чтобы открыть запрос в Prometheus с автоматически заданным в запросе именем промежутка этой строки, нажмите на строку в столбцах rate, error rate или duration.

Связанный запрос Prometheus, открытый из столбца rate представления Service Graph

Чтобы открыть запрос в Tempo с автоматически заданным в запросе именем промежутка этой строки, нажмите на строку в столбце links.

Вы также можете использовать TraceQL, чтобы запрашивать те же данные программно. Обратитесь к разделу Примеры запросов TraceQL, чтобы перевести наблюдения Service Graph в запросы.

Устранение неполадок

Если Service Graph не отображает данные, таблица пуста или вы видите предупреждения о высокой кардинальности, см. Проблемы графа служб в руководстве по устранению неполадок.

Дальнейшие шаги