
使用 DeepFlow 五分钟构建 Kubernetes 可观测性能力
DeepFlow 是一个基于 eBPF 技术的云原生监控平台。它不需要修改现有代码,就能展示应用的性能指标、访问路径和调用链等信息。使用 DeepFlow,云原生应用可以自动获得详细的监控能力,减少开发者手动添加监控代码的麻烦,同时为 DevOps 和 SRE 团队提供从代码到基础设施的全面监控和诊断能力。
部署前环境准备
DeepFlow 支持多种环境部署,本篇文章以 K8s All-in-One 环境为例来演示如何部署 DeepFlow。在开始部署 DeepFlow 之前,需要先搭建 K8s 环境,步骤如下:
通过 Sealos 快速安装 K8s All-in-One 环境:
通过 Sealos 快速安装 Helm(版本须高于 3.7.0):
部署 DeepFlow
DeepFlow 主要由 Agent 和 Server 两个组件构成。Agent 以各种形态广泛运行于 Serverless Pod、K8s Node、云服务器、虚拟化宿主机等环境中,采集这些环境中所有应用进程的观测数据。Server 运行在一个 K8s 集群中,提供 Agent 管理、数据标签注入、数据写入、数据查询等服务。
本案例中,Agent 是以 Daemset 的形式部署在 Node 上,而 Server 则是通过 Deployment 的形式部署在 Node 上。社区提供了 Helm 的部署方式,可快速拉起来 DeepFlow 的 Agent 与 Server。下面展示部署过程:
- 通过 Helm 拉取 DeepFlow Helm Chart 包:
- 拉取并解压包之后,可以按需修改 value.yaml 参数,其中 allInOneLocalStorage 必须修改为 true。其他参数的使用参考社区提供的生产环境部署建议。
- 修改完 value.yaml后,则使用 Helm 部署 DeepFlow,部署成功后,将看到如下的 Pod:
- 部署完成后,理论上 deepflow-agent会自动与deepflow-server注册,等待 5 分钟左右就能看到 K8s 环境中的可观测数据了,不过最好手动确认下是否注册成功。通过命令行工具deepflow-ctl校验 deepflow-agent是否注册成功:
- DeepFlow 数据查看都是依赖 Grafana,Grafana 服务是通过 NodePort 形式部署,先找到其访问的端口:
通过 $node_ip:$grafana_port 登录 Grafana,默认账户为:admin/deepflow。
社区已经提供了不少 Dashboard,可以按需查看。
- 应用性能指标
- SQL 监控(还有不少 Ingress/RPC/DNS 等)
- 调用详情
- 分布式调用链追踪
- 性能剖析
