Руководство пользователя DeepFlow
DeepFlow предоставляет панели Grafana для визуализации метрик производительности сети и приложений, а также возможности автоматического трассирования приложений с использованием технологии eBPF.
Для доступа к панелям Grafana DeepFlow необходимо установить плагин DeepFlow из Marketplace.
После установки вы можете получить доступ к веб-интерфейсу Grafana через Ingress, настроенный во время установки. Для входа в веб-интерфейс Grafana требуются учетные данные.
Для получения дополнительной информации о работе с панелями Grafana обратитесь к документации Grafana.
Содержание
Вход в системуИспользование панелейDeepFlow SystemDeepFlow TemplatesРаспределенное трассированиеСценарии использованияДополнительные ресурсыВход в систему
Для входа в веб-интерфейс Grafana вам потребуется следующая информация, которая настраивается во время установки плагина DeepFlow:
- Имя пользователя: имя пользователя для веб-консоли Grafana.
- Пароль: пароль для веб-консоли Grafana.
После первого входа настоятельно рекомендуется изменить пароль по соображениям безопасности.
Использование панелей
Перейдите в раздел Dashboards в веб-интерфейсе Grafana, чтобы получить доступ к различным преднастроенным панелям, предоставляемым DeepFlow.
Панели расположены в двух папках: DeepFlow System и DeepFlow Template.
- DeepFlow System: содержит системные панели, предоставляющие информацию о состоянии и производительности системы DeepFlow в целом.
- DeepFlow Templates: содержит панели на уровне приложений, которые можно настраивать в соответствии с конкретными требованиями приложений.
DeepFlow System
В этой папке находится панель с именем DeepFlow Agent, которая предоставляет информацию о состоянии и производительности узлов, на которых развернуты агенты DeepFlow.
Что касается наблюдаемости сети, она включает метрики, такие как:
ВНИМАНИЕ: панели, отмеченные 🔥, указывают на потенциальные проблемы, требующие внимания.
DeepFlow Templates
В этой папке содержатся различные панели, включая метрики сети/L4, метрики приложений/L7 и панели автоматического трассирования.
Ниже приведены панели, связанные с наблюдаемостью сети:
В итоге DeepFlow предлагает полный набор панелей для мониторинга и анализа производительности сети и приложений как в Kubernetes Pod, так и в сетях хостов.
- Панели с префиксом Network предоставляют метрики уровня L4, а панели с префиксом Application — данные уровня L7.
- Панели с суффиксом Cloud или содержащие Cloud Host в названии ориентированы на сети хостов, а панели с суффиксом K8s или без суффикса Cloud — на Kubernetes Pod.
- Панели с суффиксом Map визуализируют топологию сетевых или прикладных компонентов.
- Панели, содержащие Log в названии, отображают подробные логи сетевых потоков или запросов приложений.
- Панели с Monitoring в названии фокусируются на конкретных протоколах или сервисах, таких как DNS, SQL, Redis и Dubbo.
- Панели Distributed Tracing предоставляют возможности автоматического трассирования запросов приложений.
Распределенное трассирование
Функция Distributed Tracing в DeepFlow позволяет отслеживать запросы по мере их прохождения через различные сервисы и компоненты ваших приложений.
Это помогает выявлять узкие места производительности, понимать взаимодействия сервисов и оптимизировать производительность приложений.
Панели
В панелях Distributed Tracing вы можете просматривать подробную информацию о каждом запросе, включая:
- Список запросов: список всех трассируемых запросов с их идентификаторами, временными метками, длительностью и статусами.
- Flame Graph: визуальное представление стека вызовов для каждого запроса, показывающее время, затраченное в каждом сервисе или компоненте.
Вы можете фильтровать и искать конкретные запросы по различным критериям, таким как namespace, workload, trace ID, span ID, ресурс запроса и временной диапазон.
Пример списка запросов:

Нажмите на конкретный запрос, чтобы просмотреть его подробную трассировку во Flame Graph:

Flame graph состоит из множества блоков в форме полосок, каждый из которых представляет span.
Ось X отображает время, а ось Y — глубину стека вызовов. Span отображаются сверху вниз в порядке вызова.
Детали:
- Длина: по оси X представляет время выполнения span, каждый конец соответствует времени начала и окончания.
- Список сервисов: показывает долю задержки, потребляемую каждым сервисом. Клик по сервису выделяет соответствующие span во Flame Graph.
- Цвет: span приложений и системные span используют уникальный цвет для каждого сервиса; все сетевые span серые (так как не принадлежат никакому сервису).
- Отображаемая информация: каждая полоска содержит иконку, информацию о вызове и время выполнения.
- Иконка: различает типы span:
- A Span приложения, собранный через протокол OpenTelemetry, охватывающий бизнес- и фреймворк-код.
- S Системный span, собранный через eBPF с нулевым вторжением, охватывающий системные вызовы, функции приложений (например, HTTPS), API Gateway и Sidecar сервисной сетки.
- N Сетевой span, собранный из сетевого трафика через BPF, охватывающий сетевые компоненты контейнеров, такие как iptables, ipvs, OvS и LinuxBridge.
- Информация о вызове: зависит от типа span:
- Application Span и System Span: протокол приложения, тип запроса и ресурс запроса.
- Network Span: точка наблюдения.
- Время выполнения: общее время с начала до конца span.
- Иконка: различает типы span:
- Операции: поддерживаются наведение и клик.
- Наведение: отображает информацию о вызове, информацию об экземпляре и время выполнения во всплывающей подсказке.
- Информация об экземпляре зависит от типа span:
- Application Span: сервис и экземпляр ресурса.
- System Span: процесс и экземпляр ресурса.
- Network Span: сетевой интерфейс и экземпляр ресурса.
- Время выполнения: общее время выполнения span и доля времени собственного выполнения.
- Информация об экземпляре зависит от типа span:
- Клик: выделяет span и его родительский span, а также позволяет просмотреть подробную информацию о выбранном span.
- Наведение: отображает информацию о вызове, информацию об экземпляре и время выполнения во всплывающей подсказке.
Конфигурация
DeepFlow поддерживает парсинг уникальных Request ID, внедряемых приложениями (например, почти все шлюзы внедряют X-Request-ID), и связывает разные запросы с одинаковым Request ID в одну трассировку.
Чтобы добавить заголовок Request ID для парсинга, вы можете изменить конфигурацию группы агентов DeepFlow при установке или обновлении плагина DeepFlow.
Параметр конфигурации — processors.request_log.tag_extraction.tracing_tag.x_request_id, который принимает список имен заголовков.
Пример конфигурации:
Для получения дополнительной информации о настройке агента DeepFlow обратитесь к документации DeepFlow Agent Configuration.
Сценарии использования
- Мониторинг производительности сети: используйте панели Network/L4 для мониторинга пропускной способности, потерь пакетов и производительности TCP на хостах кластера и Kubernetes Pod. Выявляйте узкие места и оптимизируйте сетевые настройки.
- Мониторинг производительности приложений: используйте панели Application/L7 для мониторинга скорости запросов, количества ошибок и задержек различных приложений в вашем кластере. Выявляйте медленные конечные точки и оптимизируйте производительность приложений.
- Визуализация топологии: используйте панели Map для визуализации топологии сети и приложений, что помогает понять взаимосвязи и зависимости между различными компонентами.
- Анализ логов: используйте панели Log для анализа подробных логов потоков и запросов приложений, что помогает в устранении неполадок и получении информации о паттернах трафика.
- Мониторинг протоколов: используйте панели Monitoring для мониторинга конкретных протоколов и сервисов, таких как DNS-запросы, производительность SQL-баз данных, команды Redis и вызовы Dubbo RPC.
- Распределенное трассирование: используйте панели Distributed Tracing для отслеживания запросов по мере их прохождения через различные сервисы и компоненты, что помогает выявлять узкие места производительности и оптимизировать взаимодействия сервисов.