网络可观测性
目录
关于 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,使用用户名和密码登录。
强烈建议首次登录后修改密码。