Диаграмма топологии сервиса

В этой статье описывается, как быстро освоить процесс просмотра топологии сервиса.

Содержание

Предварительные требования

Для просмотра топологии сервиса необходимо:

  • Для сервисов Istio: Убедиться, что сервис был инжектирован Sidecar. Подробности см. в разделе Add ServiceMesh Service.
  • Для сервисов OpenTelemetry: Убедиться, что сервис был инжектирован OpenTelemetry Java Agent. Подробности см. в разделе Add OpenTelemetry Service.

Быстрый старт

В левой навигационной панели нажмите Service Topology.

Основное отображение страницы

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

  • Линии связи представляют вызовы между сервисами, при этом их цвет меняется в зависимости от процента успешных вызовов. Серые линии означают отсутствие трафика по этим вызовам за выбранный период времени.
  • Узлы представляют отдельные сервисы, цвет которых определяется долей Pod-ов сервиса.

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

Если сервис (и его Deployment, Pod) или ingress gateway, связанный с правилом тревоги, срабатывает на тревогу, на диаграмме топологии сервис или ingress gateway с тревогой будет отмечен значком Alarming (). Нажатие на значок сервиса перенаправит вас на страницу Real-time Alarms для просмотра деталей тревожного правила.

По умолчанию диаграмма топологии автоматически обновляется каждые 5 секунд. Вы можете обновить вручную или настроить интервал автообновления:
Ручное обновление: Нажмите на в правом нижнем углу диаграммы топологии для ручного обновления данных;
Настройка интервала автообновления: Нажмите на время интервала рядом с в правом нижнем углу, чтобы задать интервал автообновления.

Просмотр топологии Istio Cross-Cluster

Если текущий проект связан с несколькими кластерами, управляемыми service mesh, выбор Cross-Cluster Topology позволяет просмотреть диаграмму топологии вызовов сервисов и ingress gateway, в которые инжектированы Sidecar, во всех пространствах имён текущего service mesh и проекта в рамках прав доступа аккаунта.

Примечание: Диапазон просмотра зависит от прав доступа пользователя к данным аккаунта; просмотр Tracing поддерживается только для сервисов в одном пространстве имён.
Например: Кластеры A и B управляются текущим service mesh, при этом в кластерах A и B существуют пространства имён an1 и bn1 соответственно, и у вас есть права просмотра для an1 и bn1. При входе в an1 для просмотра топологии сервиса по умолчанию вы можете видеть только диаграмму топологии вызовов всех сервисов в пространстве имён an1; при выборе All Clusters вы можете видеть диаграмму топологии вызовов всех сервисов в пространствах имён an1 и bn1, включая топологию вызовов сервисов из an1 в bn1.

Просмотр топологии вызовов сервисов в указанном пространстве имён

Нажмите и выберите выпадающий список Namespace над диаграммой топологии. Вы можете просмотреть топологию вызовов сервисов в указанном пространстве имён текущего кластера. По умолчанию установлено All Namespaces, отображая отношения вызовов всех управляемых пространств имён в кластере.

Просмотр локальной диаграммы топологии

Вы можете двойным щелчком по узлу (кроме узлов middleware с пометкой «Host Unknown») развернуть локальную топологию, центрированную на этом узле. Это позволяет быстро просмотреть состояние и данные всех узлов в восходящих и нисходящих отношениях вызовов целевого узла, что помогает сосредоточиться на анализе вызовов конкретного сервиса.

Просмотр подробной информации

Вы можете нажать на узел или линию связи, чтобы развернуть панель деталей справа, где доступны различные операции.

Просмотр Tracing

При нажатии на узел или линию связи в панели деталей отображается опция View Tracing, позволяющая перейти на страницу Tracing для просмотра данных Tracing текущего сервиса или отношения вызовов.

  • Нажатие на узел > View Tracing: выполняется запрос всех span-данных, отправленных выбранным сервисом за текущий временной диапазон, установленный в диаграмме топологии. Например, если вы нажмёте на узел сервиса с именем «client» и выберете View Tracing, система найдёт все span-ы, принадлежащие сервису client за текущий временной диапазон.
  • Нажатие на линию связи > View Tracing: выполняется запрос span-данных, соответствующих конкретному отношению вызовов за текущий временной диапазон, установленный в диаграмме топологии. Например, если вы нажмёте на линию связи от сервиса «client» к «server» и выберете View Tracing, система найдёт все span-ы, где «client» является вызывающим, а «server» — вызываемым, за текущий временной диапазон.

Примечание: Функция View Tracing поддерживает разные типы сервисов в зависимости от реализации service mesh:

  • Для Istio поддерживаются только узлы ServiceMesh Service, Ingress Gateway и Egress Gateway
  • Для OpenTelemetry поддерживаются узлы OpenTelemetry services и middleware (например, базы данных и очереди сообщений)

Если вы нажмёте на неподдерживаемые типы узлов или линии связи, включающие неподдерживаемые узлы, переход на страницу Tracing будет недоступен.

Просмотр мониторинга трафика сервиса

При нажатии на узлы ServiceMesh Service, OpenTelemetry Service, Ingress Gateway или Egress Gateway в панели деталей нажмите View Traffic Monitoring, чтобы перейти на страницу Monitoring и просмотреть подробные данные мониторинга текущего сервиса.

Просмотр информации о трафике

Примечание:

  • Панель информации о трафике агрегирует только трафик, управляемый Sidecar, исключая трафик от коммуникаций с Unknown клиентами (трафик, не управляемый Sidecar). Полные данные о трафике можно посмотреть на странице Service Details или Monitoring.
  • При сборе данных о трафике, если у клиента инжектирован Sidecar, коэффициент выборки трафика совпадает с коэффициентом выборки цепочки вызовов, настроенным в service mesh; иначе коэффициент выборки равен 100%.
  • Временной диапазон запроса данных о трафике зависит от конфигурации хранения данных в системе мониторинга, интегрированной с service mesh. Например, если система мониторинга (например, Prometheus) настроена на хранение данных за последние 7 дней, система сможет отображать данные трафика только за последние 7 дней при запросе с временным диапазоном более 7 дней.

При нажатии на узел или линию связи в панели деталей отображаются графики трафика для текущего сервиса или отношения вызовов. Объяснения графиков для разных протоколов приведены ниже:

Протоколы HTTP/HTTP2/gRPC

ПараметрОписание
Входящий/Исходящий трафикОбщий объём входящих/исходящих запросов за период запроса и доля трафика по HTTP статусам (Normal/2xx, 3xx, 4xx, 5xx).
При наведении на столбчатую диаграмму отображается доля трафика по каждой категории.
Входящий/Исходящий RPSОбщий входящий/исходящий трафик в RPS (запросов в секунду) и количество ошибочного входящего/исходящего трафика в RPS за период запроса.
RPS = Количество запросов за период запроса / Длительность запроса (с).
ТрафикОбщее количество запросов между сервисами за период запроса, а также количество и доля запросов по HTTP статусам (Normal/2xx, 3xx, 4xx, 5xx), NR (No Response).
При наведении на столбчатую диаграмму отображается количество и доля запросов по каждой категории.
RPSОбщий трафик в RPS (запросов в секунду) и количество ошибочного трафика в RPS за период запроса.
Время откликаВремя отклика запросов между сервисами или внутри сервиса, отображается как Average, TP 50, TP 95, TP 99.
TP (Top Percentile) xx — минимальное время, за которое удовлетворяется xx процентов сетевых запросов, часто используется в мониторинге производительности систем.
При наведении на кривую отображается время отклика за конкретный период.

Протокол TCP

ПараметрОписание
Входящий/Исходящий трафикОбщий размер входящего/исходящего трафика в байтах за период запроса.
TCP соединенияОбщее количество соединений.
Ошибка = Количество неудачных соединений / Общее количество соединений
Успех = Количество успешных соединений / Общее количество соединений
При наведении на столбчатую диаграмму отображается количество соединений по категориям.
ТрафикОбщий размер трафика в байтах между сервисами за период запроса.
Входящий/Исходящий (Bps)Скорость передачи байт (байт в секунду) входящего/исходящего сетевого трафика сервиса.

Информация о middleware

При нажатии на линию связи, соединяющую OpenTelemetry сервис с middleware сервисом, отображается следующая информация:

Информация об узле

ТипОписание
DatabaseТип: тип базы данных, например MySQL, Oracle и т.д.
Host: адрес хоста базы данных
Details: имя пользователя базы данных, имя базы данных и другая информация
Message QueueТип: тип очереди сообщений, например RabbitMQ, Kafka и т.д.

Примечание Полный список поддерживаемых типов middleware смотрите в разделе Node Types.

Информация о трафике

Относится к общему количеству запросов, сделанных OpenTelemetry сервисом к middleware за период запроса.