网络可观测性
目录
关于 DeepFlow什么是 DeepFlow使用 eBPF 技术软件架构安装 DeepFlow介绍内核要求部署拓扑准备工作存储类软件包安装访问 Grafana Web UIDeepFlow 用户指南登录使用监控面板DeepFlow SystemDeepFlow Templates分布式追踪使用场景其他资源关于 DeepFlow
什么是 DeepFlow
DeepFlow 开源项目旨在为复杂的云原生和 AI 应用提供深度可观测性。
DeepFlow 通过 eBPF 实现了零代码数据采集,涵盖指标、分布式追踪、请求日志和函数分析,并进一步集成了 SmartEncoding,实现全栈关联和高效访问所有可观测数据。借助 DeepFlow,云原生和 AI 应用自动获得深度可观测性,免去了开发者持续在代码中埋点的繁重负担,为 DevOps/SRE 团队提供从代码到基础设施的监控和诊断能力。
使用 eBPF 技术
假设您对 eBPF 有基本了解,eBPF 是一种通过在沙箱中运行程序来扩展内核功能的安全高效技术,相较于传统修改内核源码和编写内核模块的方法是一项革命性创新。eBPF 程序是事件驱动的,当内核或用户程序经过 eBPF Hook 时,会执行加载在该 Hook 点的对应 eBPF 程序。
Linux 内核预定义了一系列常用的 Hook 点,也可以通过 kprobe 和 uprobe 技术动态添加内核和应用程序的自定义 Hook 点。
得益于即时编译(JIT)技术,eBPF 代码的执行效率可媲美原生内核代码和内核模块。
得益于验证机制,eBPF 代码运行安全,不会导致内核崩溃或进入死循环。
软件架构
DeepFlow 由两个组件组成,Agent 和 Server。Agent 运行在每个 K8s 节点、传统主机和云主机上,负责采集主机上所有应用进程的 AutoMetrics 和 AutoTracing 数据。
Server 运行在 K8s 集群中,提供 Agent 管理、标签注入、数据摄取和查询服务。
安装 DeepFlow
介绍
内核要求
DeepFlow 中的 eBPF 功能(AutoTracing、AutoProfiling)对内核版本有以下要求:
内核版本补充说明:
- CentOS 7.9 和 RedHat 7.6 在 3.10 内核中回移植了一些 eBPF 功能 (opens new window)。这两个发行版中 DeepFlow 支持的具体内核版本如下(依赖的 Hook 点):
- 3.10.0-957.el7.x86_64
- 3.10.0-1062.el7.x86_64
- 3.10.0-1127.el7.x86_64
- 3.10.0-1160.el7.x86_64
- 容器内的 Golang/OpenSSL 进程不支持。
- 在内核版本 4.14 中,tracepoint 不能被多个 eBPF 程序附加(例如两个或更多 deepflow-agent 不能同时运行),其他版本不存在此问题。
RedHat 声明:> Red Hat Enterprise Linux 7.6 中的 eBPF 作为技术预览提供,因此不具备完整支持,不适合生产环境部署。其主要目的是扩大曝光度,未来可能转为完全支持。Red Hat Enterprise Linux 7.6 中的 eBPF 仅启用用于追踪,允许将 eBPF 程序附加到探针、tracepoint 和 perf 事件。
部署拓扑
准备工作
存储类
DeepFlow 中的 MySQL 和 ClickHouse 需要由 Storage Class 提供的持久卷存储。
有关存储配置的更多信息,请参阅存储文档。
软件包
下载 DeepFlow 软件包
访问 Customer Portal 下载 DeepFlow 软件包。
如果您无法访问 Customer Portal,请联系技术支持。
上传软件包到平台
使用 violet 工具将软件包发布到平台。
有关该工具的详细使用说明,请参阅CLI。
安装
-
进入 管理员 > Marketplace > 集群插件。
-
在插件列表中搜索“Alauda Container Platform Observability with DeepFlow”。
-
点击 安装,打开安装配置页面。
-
根据需要填写配置参数。各参数详细说明见下表。
-
等待插件状态变为 已安装。
表格:配置参数
访问 Grafana Web UI
您可以通过安装时配置的 Ingress 中指定的主机和服务路径访问 Grafana Web UI,使用用户名和密码登录。
强烈建议首次登录后修改密码。
DeepFlow 用户指南
DeepFlow 提供 Grafana 监控面板,用于可视化网络和应用性能指标,以及基于 eBPF 技术的自动追踪功能。
要访问 DeepFlow 的 Grafana 监控面板,需从 Marketplace 安装 DeepFlow 插件。安装完成后,可通过安装时配置的 Ingress 访问 Grafana Web UI。访问 Grafana Web UI 需要登录凭据。
有关 Grafana 监控面板的更多使用信息,请参阅Grafana 文档。
登录
登录 Grafana Web UI 需要以下信息,这些信息在安装 DeepFlow 插件时配置:
- 用户名:Grafana Web 控制台用户名。
- 密码:Grafana Web 控制台密码。
首次登录后,强烈建议出于安全考虑修改密码。
使用监控面板
在 Grafana Web UI 中导航至 监控面板 部分,访问 DeepFlow 提供的各种预配置监控面板。监控面板分布在两个文件夹:DeepFlow System 和 DeepFlow Template。
- DeepFlow System:包含系统级监控面板,提供 DeepFlow 系统整体健康和性能的洞察。
- DeepFlow Templates:包含应用级监控面板,可根据具体应用需求自定义。
DeepFlow System
该文件夹包含名为 DeepFlow Agent 的监控面板,展示部署了 DeepFlow agent 的节点状态和性能。
关于网络可观测性,包含以下指标:
注意:标有 🔥 的面板表示可能存在需要关注的问题。
DeepFlow Templates
该文件夹包含多种监控面板,包括网络/L4 指标、应用/L7 指标和自动追踪面板。
以下是与网络可观测性相关的监控面板:
总结,DeepFlow 提供了全面的监控面板,用于监控和分析 Kubernetes Pod 及主机网络中的网络和应用性能。
- 以 Network 开头的监控面板提供 L4 级别指标;以 Application 开头的监控面板提供 L7 级别洞察。
- 面向主机的监控面板使用 Cloud 或 Cloud Host 后缀/名称;面向 Kubernetes 的监控面板使用 K8s 后缀或不带 Cloud 后缀。
- 以 Map 结尾的监控面板可视化网络或应用拓扑。
- 以 Log 结尾的监控面板展示网络流或应用请求的详细日志。
- 以 Monitoring 结尾的监控面板聚焦特定协议(DNS、SQL、Redis、Dubbo)和服务。
- 分布式追踪监控面板提供应用请求的自动追踪能力。
分布式追踪
DeepFlow 的分布式追踪功能允许您追踪应用中请求在各服务和组件间的传播,帮助识别性能瓶颈、理解服务交互并优化应用性能。
面板
在分布式追踪监控面板中,您可以查看每个请求的详细信息,包括:
- 请求列表:所有追踪请求的列表,包含 ID、时间戳、持续时间和状态。
- 火焰图:请求调用栈的可视化,展示每个服务或组件的耗时。
您可以基于命名空间、工作负载、trace ID、span ID、请求资源和时间范围等多种条件过滤和搜索特定请求。
以下是请求列表示例:

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

火焰图由多个条形块组成,每个块代表一个 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 及其父 span,并可查看该 span 的详细信息。
- 悬停:在提示框中显示调用信息、实例信息和执行时间。
配置
DeepFlow 支持解析应用注入的唯一请求 ID(例如几乎所有网关都会注入 X-Request-ID),并将不同请求中相同请求 ID 关联为同一条追踪。
要添加您的请求 ID 头进行解析,可以在安装或更新 DeepFlow 插件时修改 DeepFlow agent 组配置。
配置项为 processors.request_log.tag_extraction.tracing_tag.x_request_id,接受一个头名称列表。
示例配置片段:
有关 DeepFlow agent 配置的更多详情,请参阅DeepFlow Agent 配置文档。
使用场景
- 网络性能监控:使用网络/L4 监控面板监控集群主机和 Kubernetes Pod 的带宽、丢包和 TCP 性能,识别瓶颈并优化网络配置。
- 应用性能监控:使用应用/L7 监控面板监控集群中运行的各种应用的请求率、错误率和延迟,识别慢端点并优化应用性能。
- 拓扑可视化:使用拓扑图监控面板可视化网络和应用拓扑,帮助理解不同组件间的关系和依赖。
- 日志分析:使用日志监控面板分析详细的流日志和请求日志,帮助排查问题并洞察流量模式。
- 协议监控:使用监控面板监控特定协议和服务,如 DNS 查询、SQL 数据库性能、Redis 命令和 Dubbo RPC 调用。
- 分布式追踪:使用分布式追踪监控面板追踪请求在各服务和组件间的传播,帮助识别性能瓶颈并优化服务交互。