DeepFlow 用户指南

DeepFlow 提供了用于可视化网络和应用性能指标的 Grafana 监控面板,以及基于 eBPF 技术的应用自动追踪功能。 要访问 DeepFlow 的 Grafana 监控面板,您需要从 Marketplace 安装 DeepFlow 插件。 安装完成后,您可以通过安装过程中配置的 Ingress 访问 Grafana Web UI。 访问 Grafana Web UI 需要登录凭据。

有关使用 Grafana 监控面板的更多信息,请参阅 Grafana documentation

登录

登录 Grafana Web UI 需要以下信息,这些信息在安装 DeepFlow 插件时配置:

  • 用户名:Grafana Web 控制台的用户名。
  • 密码:Grafana Web 控制台的密码。

首次登录后,强烈建议出于安全考虑更改密码。

使用监控面板

在 Grafana Web UI 中导航至 Dashboards 部分,即可访问 DeepFlow 提供的各种预配置监控面板。 监控面板分布在两个文件夹中:DeepFlow SystemDeepFlow Template

  • DeepFlow System:该文件夹包含系统级监控面板,提供 DeepFlow 系统整体健康状况和性能的洞察。
  • DeepFlow Templates:该文件夹包含应用级监控面板,可根据具体应用需求进行自定义。

DeepFlow System

该文件夹包含名为 DeepFlow Agent 的监控面板,提供部署了 DeepFlow 智能体节点的状态和性能信息。

关于网络可观测性,包含如下指标:

指标面板
所有选定智能体的带宽统计带宽
按平均带宽排序的 Top <agent, signal>
按总带宽排序的 Top 智能体
NIC 内核计数器(仅供参考)接口丢包
接口带宽(bps)
接口包速率(pps)
[dispatcher] AF_PACKET/cBPF 收集器每秒包数
🔥[CAUTION] 内核丢包(智能体无法处理)
内核时间戳倒退 > 1ms(仅供参考)
TCP 性能量化忽略的异常 TCP 标志包
TCP 重传不合格包
无法识别的 L7 协议包
注意

注意:标有 🔥 的面板表示可能存在需要关注的问题。

DeepFlow Templates

该文件夹包含多种监控面板,包括网络/L4 指标、应用/L7 指标和自动追踪监控面板。

以下是与网络可观测性相关的监控面板:

分类监控面板描述指标/面板
Network/L4Network - Cloud Host提供集群主机的网络/L4 指标,包括带宽、包数、流量和 TCP 性能。吞吐量(bps)
重传率
TCP 连接建立失败率
TCP 连接建立延迟
Network - Cloud Host Map可视化集群主机的网络拓扑,展示主机间的连接和流量。Cloud Host Map
吞吐量(bps)
TCP 重传率(%)
TCP 连接建立失败率(%)
TCP 连接建立延迟(ms)
Network - K8s Pod提供 Kubernetes Pod 的网络/L4 指标,包括带宽、包数、流量和 TCP 性能。吞吐量(bps)
重传率
TCP 连接建立失败率
TCP 连接建立延迟
Network - K8s Pod Map可视化 Kubernetes Pod 的网络拓扑,展示 Pod 间的连接和流量。Pod Map
吞吐量(bps)
TCP 重传率(%)
TCP 连接建立失败率(%)
TCP 连接建立延迟(ms)
Network - Flow Log展示 Kubernetes Pod 网络流量的详细流日志,包括源和目标 IP、端口、协议等。汇总计数
错误计数
TCP 建立连接延迟分布
TCP 数据延迟分布
流日志
Network - Flow Log - Cloud展示集群主机网络流量的详细流日志,包括源和目标 IP、端口、协议等。汇总计数
错误计数
TCP 建立连接延迟分布
TCP 数据延迟分布
流日志
Application/L7Application - Cloud Host提供集群主机的应用/L7 指标,包括 HTTP、DNS、MySQL、Redis 和 MongoDB 等协议的请求率、错误率和延迟。请求数
服务器错误
延迟
Application - Cloud Host Map可视化集群主机的应用拓扑,展示不同应用间的连接和流量。Cloud Host Map
请求数
服务器错误
延迟
Application - K8s Pod提供 Kubernetes Pod 的应用/L7 指标,包括 HTTP、DNS、MySQL、Redis 和 MongoDB 等协议的请求率、错误率和延迟。请求数
服务器错误
延迟
Application - K8s Pod Map可视化 Kubernetes Pod 的应用拓扑,展示不同应用间的连接和流量。Pod Map
请求数
服务器错误
延迟
Application - Request Log展示 Kubernetes Pod 中运行的应用的详细请求日志,包括源和目标 IP、URL、响应码等。汇总计数
错误计数
延迟直方图
请求日志
Application - Request Log - Cloud展示主机网络中运行的应用的详细请求日志,包括源和目标 IP、URL、响应码等。汇总计数
错误计数
延迟直方图
请求日志
Application - K8s Ingress提供 Kubernetes Ingress 资源的应用/L7 指标,包括 HTTP 流量的请求率、错误率和延迟。上游请求地图
请求数
延迟
错误
吞吐量
Application - DNS Monitoring监控 DNS 查询和响应,提供 DNS 性能和潜在问题的洞察。DNS 拓扑
延迟
错误率
请求数
日志分析
Application - SQL Monitoring - K8S监控 Kubernetes Pod 中运行的数据库(如 MySQL、PostgreSQL 和 MongoDB)的 SQL 查询和性能。SQL 拓扑
连接数
延迟
错误
吞吐量
SQL 分析
Application - SQL Monitoring - Cloud监控主机网络中运行的数据库(如 MySQL、PostgreSQL 和 MongoDB)的 SQL 查询和性能。SQL 拓扑
连接数
延迟
错误
吞吐量
SQL 分析
Application - Redis Monitoring - K8S监控 Kubernetes Pod 中运行的 Redis 实例的命令和性能。Redis 拓扑
连接数
延迟
错误
吞吐量
日志分析
Application - Redis Monitoring - Cloud监控主机网络中运行的 Redis 实例的命令和性能。Redis 拓扑
连接数
延迟
错误
吞吐量
日志分析
Application - Dubbo Monitoring - K8S监控 Kubernetes Pod 中运行的 Dubbo 服务的 RPC 调用和性能。Dubbo 拓扑
连接数
延迟
错误
日志分析
Auto TracingDistributed Tracing为 Kubernetes Pod 中运行的应用提供分布式追踪功能,允许您追踪请求在各服务和组件间的传播。请求列表
火焰图
Distributed Tracing - Cloud为主机网络中运行的应用提供分布式追踪功能,允许您追踪请求在各服务和组件间的传播。请求列表
火焰图

总之,DeepFlow 提供了一套全面的监控面板,用于监控和分析 Kubernetes Pod 及主机网络中的网络和应用性能。

  • Network 为前缀的监控面板提供 L4 级别指标,Application 前缀的则提供 L7 级别洞察。
  • 名称中带有 Cloud 后缀或包含 Cloud Host 的监控面板聚焦主机网络,带有 K8s 后缀或无 Cloud 后缀的聚焦 Kubernetes Pod。
  • 带有 Map 后缀的监控面板可视化网络或应用组件的拓扑结构。
  • 名称中包含 Log 的监控面板展示网络流量或应用请求的详细日志。
  • 名称中包含 Monitoring 的监控面板聚焦特定协议或服务,如 DNS、SQL、Redis 和 Dubbo。
  • 分布式追踪监控面板提供应用请求的自动追踪功能。

分布式追踪

DeepFlow 的分布式追踪功能允许您追踪请求在应用中各服务和组件间的传播过程。 这有助于识别性能瓶颈、理解服务交互并优化应用性能。

面板

在分布式追踪监控面板中,您可以查看每个请求的详细信息,包括:

  • 请求列表:所有被追踪请求的列表,包括其 ID、时间戳、持续时间和状态。
  • 火焰图:请求调用栈的可视化表示,展示每个服务或组件的耗时。

您可以根据命名空间、工作负载、trace ID、span ID、请求资源和时间范围等多种条件过滤和搜索特定请求。 以下是请求列表示例:

Distributed Tracing - Request List

点击某个请求可在火焰图中查看其详细追踪信息:

Distributed Tracing - Flame Graph

火焰图由多个条形块组成,每个块代表一个 span。 x 轴表示时间,y 轴表示调用栈深度。span 按调用顺序从上到下显示。

具体说明如下:

  • 长度:沿 x 轴,表示 span 的执行时间,起止对应开始和结束时间。
  • 服务列表:显示各服务消耗的延迟比例。点击某服务会高亮火焰图中对应的 span。
    • 颜色:应用 span 和系统 span 使用每个服务独特的颜色;所有网络 span 为灰色(因不属于任何服务)。
  • 显示信息:每个条形块显示图标、调用信息和执行时间。
    • 图标:区分 span 类型:
      • A 应用 span,通过 OpenTelemetry 协议采集,涵盖业务代码和框架代码。
      • S 系统 span,通过 eBPF 零侵入采集,涵盖系统调用、应用函数(如 HTTPS)、API Gateway 和服务网格 Sidecar。
      • N 网络 span,通过 BPF 从网络流量采集,涵盖容器网络组件如 iptables、ipvs、OvS 和 LinuxBridge。
    • 调用信息:根据 span 类型不同:
      • 应用 Span系统 Span:应用协议、请求类型和请求资源。
      • 网络 Span:观测点。
    • 执行时间:span 从开始到结束的总耗时。
  • 操作:支持悬停和点击。
    • 悬停:在提示框中显示调用信息、实例信息和执行时间。
      • 实例信息:根据 span 类型不同:
        • 应用 Span:服务和资源实例。
        • 系统 Span:进程和资源实例。
        • 网络 Span:网络接口和资源实例。
      • 执行时间:span 的总执行时间及其自执行时间比例。
    • 点击:高亮该 span 及其父 span,并允许查看点击 span 的详细信息。
配置

DeepFlow 支持解析应用注入的唯一请求 ID(例如几乎所有网关都会注入 X-Request-ID),并将具有相同请求 ID 的不同请求关联为同一条追踪。 要添加您的请求 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 监控面板监控集群主机和 Kubernetes Pod 的带宽、丢包和 TCP 性能,识别瓶颈并优化网络配置。
  • 应用性能监控:使用 Application/L7 监控面板监控集群中运行的各类应用的请求率、错误率和延迟,识别慢端点并优化应用性能。
  • 拓扑可视化:使用 Map 监控面板可视化网络和应用拓扑,帮助理解不同组件间的关系和依赖。
  • 日志分析:使用 Log 监控面板分析详细的流日志和请求日志,帮助排查问题并洞察流量模式。
  • 协议监控:使用 Monitoring 监控面板监控特定协议和服务,如 DNS 查询、SQL 数据库性能、Redis 命令和 Dubbo RPC 调用。
  • 分布式追踪:使用 Distributed Tracing 监控面板追踪请求在各服务和组件间的传播,帮助识别性能瓶颈并优化服务交互。

额外资源