DeepFlow 开源项目旨在为复杂的云原生和 AI 应用提供深度可观测性。
DeepFlow 通过 eBPF 实现了零代码数据采集,涵盖指标、分布式追踪、请求日志和函数性能分析,并进一步集成了 SmartEncoding,实现全栈关联和高效访问所有可观测数据。借助 DeepFlow,云原生和 AI 应用自动获得深度可观测性,免除了开发者持续在代码中埋点的繁重负担,为 DevOps/SRE 团队提供从代码到基础设施的全面监控和诊断能力。
假设您对 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 中的 eBPF 功能(AutoTracing、AutoProfiling)对内核版本有以下要求:
架构 | 发行版 | 内核版本 | kprobe | Golang uprobe | OpenSSL uprobe | perf |
---|---|---|---|---|---|---|
X86 | CentOS 7.9 | 3.10.0 1 | Y | Y 2 | Y 2 | Y |
RedHat 7.6 | 3.10.0 1 | Y | Y 2 | Y 2 | Y | |
* | 4.9-4.13 | Y | ||||
4.14 3 | Y | Y 2 | Y | |||
4.15 | Y | Y 2 | Y | |||
4.16 | Y | Y | Y | |||
4.17+ | Y | Y | Y | Y | ||
ARM | CentOS 8 | 4.18 | Y | Y | Y | Y |
EulerOS | 5.10+ | Y | Y | Y | Y | |
KylinOS V10 SP2 | 4.19.90-25.24+ | Y | Y | Y | Y | |
KylinOS V10 SP3 | 4.19.90-52.24+ | Y | Y | Y | Y | |
其他发行版 | 5.8+ | Y | Y | Y | Y |
内核版本附加说明:
RedHat 声明:
Red Hat Enterprise Linux 7.6 中的 eBPF 作为技术预览提供,
因此不具备完整支持,不适合生产环境部署。
其主要目的是获得更广泛的曝光,并可能在未来实现完整支持。
Red Hat Enterprise Linux 7.6 中的 eBPF 仅启用追踪功能,
允许将 eBPF 程序附加到探针、tracepoint 和 perf 事件。
DeepFlow 中的 MySQL 和 ClickHouse 需要由 Storage Class 提供的持久卷存储。
有关存储配置的更多信息,请参见存储文档。
访问 Custom Portal 下载 DeepFlow 软件包。
如果您无法访问 Custom Portal,请联系技术支持。
使用 violet 工具将软件包发布到平台。
有关该工具的详细使用说明,请参见CLI。
进入 管理员 > Marketplace > 集群插件。
在插件列表中搜索“Alauda Container Platform Observability with DeepFlow”。
点击 安装,打开安装配置页面。
根据需要填写配置参数。各参数详细说明请参见下表。
等待插件状态变为 已安装。
表格:配置参数
参数 | 是否可选 | 说明 |
---|---|---|
Replicas | 否 | ClickHouse 服务器和 DeepFlow 服务器的副本数。建议设置为大于等于 3 的奇数,以保证高可用性。 |
Storage Class | 是 | 用于为 MySQL 和 ClickHouse 创建持久卷的 Storage Class。未设置时使用默认 Storage Class。 |
MySQL Storage Size | 否 | MySQL 持久卷大小。 |
ClickHouse Storage Size | 否 | ClickHouse 存储卷大小。 |
ClickHouse Data Storage Size | 否 | ClickHouse 数据存储大小。 |
Username | 否 | Grafana Web 控制台用户名。 |
Password | 否 | Grafana Web 控制台密码。强烈建议首次登录后修改该密码。 |
Confirm Password | 否 | 确认 Grafana Web 控制台密码。 |
Ingress Class Name | 是 | 用于创建 Grafana Web 控制台 Ingress 的 Ingress Class 名称。未设置时使用默认 Ingress Class。 |
Ingress Path | 否 | Grafana Web 控制台的 Ingress 服务路径。 |
Ingress TLS Secret Name | 是 | Grafana Web 控制台 Ingress 使用的 TLS Secret 名称。 |
Ingress Hosts | 是 | Grafana Web 控制台 Ingress 使用的主机列表。 |
Agent Group Configuration | 否 | 默认 DeepFlow Agent 组的配置。 |
您可以通过 Ingress 配置中指定的主机和服务路径访问 Grafana Web UI,使用用户名和密码登录。
强烈建议首次登录后修改密码。