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

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

Содержание

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

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

  • Для сервисов 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

Нажмите и выберите выпадающий список 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 соединенияОбщее количество соединений.
Error Rate = Количество неудачных соединений / Общее количество соединений
Success Rate = Количество успешных соединений / Общее количество соединений
При наведении на столбчатую диаграмму отображается количество соединений по категориям.
ТрафикОбщий объём трафика в байтах между сервисами за период запроса.
Входящий/Исходящий (Bps)Скорость передачи байт (байт в секунду) входящего/исходящего сетевого трафика сервиса.

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

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

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

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

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

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

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