DeepFlow 开源项目旨在为复杂的云原生和 AI 应用提供深度可观测性。
DeepFlow 通过 eBPF 实现了零代码数据采集,涵盖指标、分布式追踪、请求日志和函数性能分析,并进一步集成了 SmartEncoding,实现全栈关联和高效访问所有可观测数据。借助 DeepFlow,云原生和 AI 应用自动获得深度可观测性,免去了开发者持续在代码中埋点的繁重负担,为 DevOps/SRE 团队提供从代码到基础设施的全面监控和诊断能力。
假设您对 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 中的 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 预配置的持久卷存储。
有关存储配置的更多信息,请参阅存储文档。
访问 Customer Portal 下载 DeepFlow 软件包。
如果您无法访问 Customer 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 智能体组的配置。 |
您可以通过 Ingress 配置中指定的主机和服务路径访问 Grafana Web UI,使用用户名和密码登录。
强烈建议首次登录后修改密码。