• Русский
  • Руководство пользователя DeepFlow

    DeepFlow предоставляет панели Grafana для визуализации метрик производительности сети и приложений, а также возможности автоматического трассирования приложений с использованием технологии eBPF.
    Для доступа к панелям Grafana DeepFlow необходимо установить плагин DeepFlow из Marketplace.
    После установки вы можете получить доступ к веб-интерфейсу Grafana через Ingress, настроенный во время установки. Для входа в веб-интерфейс Grafana требуются учетные данные.

    Для получения дополнительной информации о работе с панелями Grafana обратитесь к документации Grafana.

    Вход в систему

    Для входа в веб-интерфейс Grafana вам потребуется следующая информация, которая настраивается во время установки плагина DeepFlow:

    • Имя пользователя: имя пользователя для веб-консоли Grafana.
    • Пароль: пароль для веб-консоли Grafana.

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

    Использование панелей

    Перейдите в раздел Dashboards в веб-интерфейсе Grafana, чтобы получить доступ к различным преднастроенным панелям, предоставляемым DeepFlow.
    Панели расположены в двух папках: DeepFlow System и DeepFlow Template.

    • DeepFlow System: содержит системные панели, предоставляющие информацию о состоянии и производительности системы DeepFlow в целом.
    • DeepFlow Templates: содержит панели на уровне приложений, которые можно настраивать в соответствии с конкретными требованиями приложений.

    DeepFlow System

    В этой папке находится панель с именем DeepFlow Agent, которая предоставляет информацию о состоянии и производительности узлов, на которых развернуты агенты DeepFlow.

    Что касается наблюдаемости сети, она включает метрики, такие как:

    МетрикаПанели
    Статистика пропускной способности всех выбранных агентовПропускная способность
    Топ <agent, signal> по средней пропускной способности
    Топ агентов по общей пропускной способности
    Счетчики ядра NIC (только для информации)Потери пакетов на интерфейсах
    bps на интерфейсах
    pps на интерфейсах
    [dispatcher] AF_PACKET/cBPF CollectorПакетов в секунду
    🔥[ВНИМАНИЕ] Потери пакетов в ядре (агент не может обработать)
    Обратный таймстамп ядра > 1 мс (только для информации)
    Квантификация производительности TCPИгнорируемые TCP-пакеты с аномальными TCP-флагами
    TCP-пакеты, не подлежащие повторной передаче
    Нераспознанные пакеты протокола L7
    ПРИМЕЧАНИЕ

    ВНИМАНИЕ: панели, отмеченные 🔥, указывают на потенциальные проблемы, требующие внимания.

    DeepFlow Templates

    В этой папке содержатся различные панели, включая метрики сети/L4, метрики приложений/L7 и панели автоматического трассирования.

    Ниже приведены панели, связанные с наблюдаемостью сети:

    КаталогПанелиОписаниеМетрики/Панели
    Сеть/L4Сеть - Cloud HostПредоставляет метрики сети/L4 для хостов кластера, включая пропускную способность, пакеты, потоки и производительность TCP.Пропускная способность (bps)
    Коэффициент повторных передач
    Коэффициент отказа установления TCP-соединения
    Задержка установления TCP-соединения
    Сеть - Cloud Host MapВизуализирует топологию сети хостов кластера, показывая соединения и потоки трафика между ними.Карта хоста облака
    Пропускная способность (bps)
    Коэффициент повторных передач TCP (%)
    Коэффициент отказа установления TCP-соединения (%)
    Задержка установления TCP-соединения (мс)
    Сеть - K8s PodПредоставляет метрики сети/L4 для Kubernetes Pod, включая пропускную способность, пакеты, потоки и производительность TCP.Пропускная способность (bps)
    Коэффициент повторных передач
    Коэффициент отказа установления TCP-соединения
    Задержка установления TCP-соединения
    Сеть - K8s Pod MapВизуализирует топологию сети Kubernetes Pod, показывая соединения и потоки трафика между ними.Карта Pod
    Пропускная способность (bps)
    Коэффициент повторных передач TCP (%)
    Коэффициент отказа установления TCP-соединения (%)
    Задержка установления TCP-соединения (мс)
    Сеть - Flow LogОтображает подробные логи потоков сетевого трафика в Kubernetes Pod, включая IP-адреса источника и назначения, порты, протоколы и другое.Общее количество
    Количество ошибок
    Распределение задержек установления TCP-соединения
    Распределение задержек передачи данных TCP
    Лог потоков
    Сеть - Flow Log - CloudОтображает подробные логи потоков сетевого трафика на хостах кластера, включая IP-адреса источника и назначения, порты, протоколы и другое.Общее количество
    Количество ошибок
    Распределение задержек установления TCP-соединения
    Распределение задержек передачи данных TCP
    Лог потоков
    Приложение/L7Приложение - Cloud HostПредоставляет метрики приложений/L7 для хостов кластера, включая скорость запросов, количество ошибок и задержки для различных протоколов, таких как HTTP, DNS, MySQL, Redis и MongoDB.Запросы
    Ошибки сервера
    Задержка
    Приложение - Cloud Host MapВизуализирует топологию приложений хостов кластера, показывая соединения и потоки трафика между различными приложениями.Карта хоста облака
    Запросы
    Ошибки сервера
    Задержка
    Приложение - K8s PodПредоставляет метрики приложений/L7 для Kubernetes Pod, включая скорость запросов, количество ошибок и задержки для различных протоколов, таких как HTTP, DNS, MySQL, Redis и MongoDB.Запросы
    Ошибки сервера
    Задержка
    Приложение - K8s Pod MapВизуализирует топологию приложений Kubernetes Pod, показывая соединения и потоки трафика между различными приложениями.Карта Pod
    Запросы
    Ошибки сервера
    Задержка
    Приложение - Request LogОтображает подробные логи запросов для приложений, работающих в Kubernetes Pod, включая IP-адреса источника и назначения, URL, коды ответов и другое.Общее количество
    Количество ошибок
    Гистограмма задержек
    Лог запросов
    Приложение - Request Log - CloudОтображает подробные логи запросов для приложений, работающих в сетях хостов, включая IP-адреса источника и назначения, URL, коды ответов и другое.Общее количество
    Количество ошибок
    Гистограмма задержек
    Лог запросов
    Приложение - K8s IngressПредоставляет метрики приложений/L7 для ресурсов Kubernetes Ingress, включая скорость запросов, количество ошибок и задержки для HTTP-трафика.Карта запросов Upstream
    Запросы
    Задержка
    Ошибки
    Пропускная способность
    Приложение - DNS MonitoringМониторинг DNS-запросов и ответов, предоставляющий информацию о производительности DNS и возможных проблемах.Топология DNS
    Задержка
    Доля ошибок
    Запросы
    Анализ логов
    Приложение - SQL Monitoring - K8SМониторинг SQL-запросов и производительности баз данных, работающих в Kubernetes Pod, например MySQL, PostgreSQL и MongoDB.Топология SQL
    Подключения
    Задержка
    Ошибки
    Пропускная способность
    Анализ SQL
    Приложение - SQL Monitoring - CloudМониторинг SQL-запросов и производительности баз данных, работающих в сетях хостов, например MySQL, PostgreSQL и MongoDB.Топология SQL
    Подключения
    Задержка
    Ошибки
    Пропускная способность
    Анализ SQL
    Приложение - Redis Monitoring - K8SМониторинг команд Redis и производительности экземпляров Redis, работающих в Kubernetes Pod.Топология Redis
    Подключения
    Задержка
    Ошибки
    Пропускная способность
    Анализ логов
    Приложение - Redis Monitoring - CloudМониторинг команд Redis и производительности экземпляров Redis, работающих в сетях хостов.Топология Redis
    Подключения
    Задержка
    Ошибки
    Пропускная способность
    Анализ логов
    Приложение - Dubbo Monitoring - K8SМониторинг вызовов Dubbo RPC и производительности сервисов Dubbo, работающих в Kubernetes Pod.Топология Dubbo
    Подключения
    Задержка
    Ошибки
    Анализ логов
    Автоматическое трассированиеРаспределенное трассированиеПредоставляет возможности распределенного трассирования для приложений, работающих в Kubernetes Pod, позволяя отслеживать запросы по мере их прохождения через различные сервисы и компоненты.Список запросов
    Flame Graph
    Распределенное трассирование - CloudПредоставляет возможности распределенного трассирования для приложений, работающих в сетях хостов, позволяя отслеживать запросы по мере их прохождения через различные сервисы и компоненты.Список запросов
    Flame Graph

    В итоге 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, ресурс запроса и временной диапазон.
    Пример списка запросов:

    Distributed Tracing - Request List

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

    Distributed Tracing - 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:
          • Application Span: сервис и экземпляр ресурса.
          • System Span: процесс и экземпляр ресурса.
          • Network 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, который принимает список имен заголовков.
    Пример конфигурации:

    processors:
      request_log:
        tag_extraction:
          tracing_tag:
            x_request_id:
              - x-request-id
              - x-bfe-log-id
              - stgw-request-id
              - x-blb-request-id

    Для получения дополнительной информации о настройке агента DeepFlow обратитесь к документации DeepFlow Agent Configuration.

    Сценарии использования

    • Мониторинг производительности сети: используйте панели Network/L4 для мониторинга пропускной способности, потерь пакетов и производительности TCP на хостах кластера и Kubernetes Pod. Выявляйте узкие места и оптимизируйте сетевые настройки.
    • Мониторинг производительности приложений: используйте панели Application/L7 для мониторинга скорости запросов, количества ошибок и задержек различных приложений в вашем кластере. Выявляйте медленные конечные точки и оптимизируйте производительность приложений.
    • Визуализация топологии: используйте панели Map для визуализации топологии сети и приложений, что помогает понять взаимосвязи и зависимости между различными компонентами.
    • Анализ логов: используйте панели Log для анализа подробных логов потоков и запросов приложений, что помогает в устранении неполадок и получении информации о паттернах трафика.
    • Мониторинг протоколов: используйте панели Monitoring для мониторинга конкретных протоколов и сервисов, таких как DNS-запросы, производительность SQL-баз данных, команды Redis и вызовы Dubbo RPC.
    • Распределенное трассирование: используйте панели Distributed Tracing для отслеживания запросов по мере их прохождения через различные сервисы и компоненты, что помогает выявлять узкие места производительности и оптимизировать взаимодействия сервисов.

    Дополнительные ресурсы