deepflow是什么

DeepFlow 是云杉网络 (opens new window)开源的一款高度自动化的可观测性平台,是为云原生应用开发者建设可观测性能力而量身打造的全栈、全链路、高性能数据引擎。DeepFlow 使用 eBPF、WASM、OpenTelemetry 等新技术,创新的实现了 AutoTracing、AutoMetrics、AutoTagging、SmartEncoding 等核心机制,帮助开发者提升埋点插码的自动化水平,降低可观测性平台的运维复杂度。利用 DeepFlow 的可编程能力和开放接口,开发者可以快速将其融入到自己的可观测性技术栈中。

解决两大痛点

建设可观测性已经成为云原生应用开发者的必要工作,然而现有的解决方案正悄无声息的消耗着开发者越来越多的时间。Epsagon 的一项调查 (opens new window)表明,应用开发者有高达30%的时间花在可观测性能力建设上,另有 20% 的时间花在代码 Debug 上,而 Debug 花费的大部分时间又恰好是可观测性建设不足导致。

可观测性建设的痛点包括两个方面:

埋点插码难

开发者需要考虑为每一种语言、每一种框架进行埋点和插码。一些公司的业务开发团队很幸运,会有类似 IDP(Internal Developer Platform)的团队负责整个公司的可观测性能力建设,提供埋点和插码的 SDK。但大部分语言缺乏类似 JVM 的字节码注入机制,IDP 团队每一次的 SDK 升级都需要业务开发团队同步发版、上线。
开发者需要考虑在微服务之间如何传递追踪上下文。同样需要为每一种语言、每一种框架进行埋点和插码,另一方面像 MQTT 3.X、MySQL、Redis 等缺乏 Header Option 字段的协议经常成为追踪的噩梦。即使应用协议都使用 HTTP,也可能由于调用链中特殊的 RPC 框架、特殊的编程语言导致追踪上下文丢失。
开发者需要为每一个指标、追踪、日志数据注入大量的属性标签,以便于后续能够对观测数据进行灵活的过滤、分组及关联。然而这些标签已经存在于 K8s apiserver、服务注册中心、应用协议 Header 中,开发者不得不重复这份工作将他们搬迁到观测数据中。

平台运维难

开发者需要考虑如何避免指标数据中携带高基标签,有些时候甚至因为后端 TSDB(Time Series Database)性能的不足无奈将高基 Tag 字段转换为 Metrics,甚至丢弃。
开发者需要考虑限制观测数据的猖獗增长,在复杂的采样策略之间权衡选择以降低数据量,但通常会在某次问题排查时发现数据不全而无法进行。
开发者需要考虑如何维护复杂的可观测平台,他们通常有着负载均衡、消息队列依赖。随着复杂度的增长,可观测性平台本身的可观测性能力同样也成为问题。

六大主要特性

全栈:DeepFlow 使用 AF_PACKET、BPF、eBPF 技术实现的 AutoMetrics 机制,可以自动采集任何应用的 RED(Request、Error、Delay)性能指标,精细至每一次应用调用,覆盖从应用到基础设施的所有软件技术栈。在云原生环境中,DeepFlow 的 AutoTagging 机制自动发现服务、实例、API的属性信息,自动为每个观测数据注入丰富的标签,从而消除数据孤岛,并释放数据的下钻能力。
全链路:DeepFlow 使用 eBPF 技术创新的实现了 AutoTracing 机制,在云原生环境中自动追踪任意微服务、基础设施服务的分布式调用链。在此基础上,通过与 OpenTelemetry 的数据集成,DeepFlow 将 eBPF Event 与 OTel Span 自动关联,实现完整的全栈、全链路追踪,让追踪无盲点。
高性能:DeepFlow 创新的 SmartEncoding 标签注入机制,能够将标签数据的存储性能提升 10 倍,从此告别高基标签和数据采样焦虑。DeepFlow 使用 Rust 实现 Agent,拥有极致处理性能的同时保证内存安全。DeepFlow 使用 Golang 实现 Server,重写了 Golang 的 map、pool 基础库,数据查询和内存申请均有近 10 倍的性能提升。
可编程:DeepFlow 目前支持了对 HTTP、HTTPS、Dubbo、gRPC、ProtobufRPC、SOFARPC、MySQL、PostgreSQL、Redis、Kafka、MQTT、DNS协议的解析,并将保持迭代增加更多的应用协议支持。除此之外,DeepFlow 计划基于 WASM技术提供了可编程接口,让开发者可以快速具备对私有协议的解析能力,并可用于构建特定场景的业务分析能力,例如 5GC 信令分析、金融交易分析、车机通信分析等。
开放接口:DeepFlow 拥抱开源社区,支持接收广泛的可观测数据源,并利用 AutoTagging 和 SmartEncoding 提供高性能、统一的标签注入能力。DeepFlow 支持插件式的数据库接口,开发者可自由增加和替换最合适的数据库。DeepFlow 向上为所有观测数据提供统一的标准 SQL 查询能力,便于使用者快速集成到自己的可观测性平台中,也提供了在此基础上继续开发方言 QL 的可能性。
易于维护:DeepFlow 仅由 Agent、Server 两个组件构成,将复杂度隐藏在进程内部,将维护难度降低至极致。DeepFlow Server 集群可对多资源池、异构资源池、跨 Region/AZ 资源池中的 Agent 进行统一管理,且无需依赖任何外部组件即可实现水平扩展与负载均衡。

#helm repo add deepflow https://deepflowio.github.io/deepflow
#helm repo update
#helm pull deepflow/deepflow
下载的当前版本为:deepflow-6.2.601.tgz
解压下载的tar包,修改里面的文件,server-deployment.yaml与app-deployment.yaml
#tar -zxf deepflow-6.2.601.tg
#cd ./deepflow/templates
(我使用helm-v3.2.4 直接安装会报错)所以把两文件的以下内容删除
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }
checksum/customConfig: {{ sha256sum (print (tpl (toYaml .Values.configmap) $)) }
指定storageClass部署
#helm install deepflow --namespace=deepflow --set global.storageClass=default-nfs ./

如图:

等待POD正常

配置deepflow-agent污点容忍:

kubectl edit daemonsets.apps deepflow-agent -n deepflow添加:   tolerations:- effect: NoScheduleoperator: Exists

登陆grafana,密码为deepflow



至此,部署完成
测试demo:

deepflow.io/docs/zh/auto-tracing/spring-boot-demo/

云主机部署deepflow-agent

运行权限及内核要求
deepflow-agent 的 eBPF 能力对内核版本的要求:

X86 体系架构:Linux Kernel 4.14+
例外:使用 uprobe 采集 openssl 库的 TLS 应用数据要求 Linux Kernel 4.17+
在内核 Linux 4.14 下一个 tracepoint 不能被多个 eBPF program attach(即:不能同时运行两个或多个 agent),Linux 4.15+ 不存在此问题
ARM64 体系架构:CentOS8 Linux Kernel 4.18,或社区 Linux Kernel 5.8+
当内核版本无法满足要求时,受影响的功能有:

通过 eBPF uprobe 获取 HTTP2、HTTPS 应用数据
通过 eBPF 实现 AutoTracing

DeepFlow Server 必须运行在 K8s 之上
#curl -O https://deepflow-ce.oss-cn-beijing.aliyuncs.com/rpm/agent/stable/linux/$(arch | sed 's|x86_64|amd64|' | sed 's|aarch64|arm64|')/deepflow-agent-rpm.zip
#unzip deepflow-agent-rpm.zip
#yum -y localinstall ./x86_64/deepflow-agent-*.rpm修改/etc/deepflow-agent.yaml 添加k8s node IPcontroller-ips:- ip
#systemctl restart deepflow-agent
之前agent 会跟NODE IP 的30035端口通信

云原生可观测性平台deepflow部署相关推荐

  1. 云原生可观测性平台-云监控

    混沌工程简介 太空舱 python写的. 太空舱将故障注入: 云监控排障 kindling

  2. 基于 eBPF 的云原生可观测性深度实践

    本文整理自云杉网络 DeepFlow 产品负责人向阳在 QCon 2023 的演讲分享,主题为 "基于 eBPF 的云原生可观测性深度实践". 分享从四个方面展开.第一部分回顾分布 ...

  3. 终极套娃 2.0|云原生 PaaS 平台的可观测性实践分享

    某个周一上午,小涛像往常一样泡上一杯热咖啡 ☕️,准备打开项目协同开始新一天的工作,突然隔壁的小文喊道:"快看,用户支持群里炸锅了 -" 用户 A:"Git 服务有点问题 ...

  4. 如何建设私有云原生 Serverless 平台

    随着云计算的普及,越来越多的企业开始将业务应用迁移到云上.然而,如何构建一套完整的云原生 Serverless 平台,依然是一个需要考虑的问题. Serverless的发展趋势 云计算行业从 IaaS ...

  5. 秒云容器云平台:一站式云原生PaaS平台

    本篇文章开始之前,我们以目前室内装修里比较流行的2种方式做对比,来讲一下所谓的"半包"和"全包"的区别.简单讲半包和全包的差别其实就是辅材和主材由谁提供的问题. ...

  6. 详解云原生机器学习平台的优势

    概述 最近看了很多关于云原生的文章,大体意思是机器学习服务这个行业将迎来一次巨大的变革.从13年我刚入行以来,机器学习在15年左右经历了模型深度的变革,从浅层学习逐步发展到了深度学习.到了20年这个节 ...

  7. KubeVela 正式开源:一个高可扩展的云原生应用平台与核心引擎

    [来源:阿里巴巴云原生公众号] 美国西部时间 2020 年 11 月 18 日,在云原生技术"最高盛宴"的 KubeCon 北美峰会 2020 上,CNCF 应用交付领域小组(CN ...

  8. cube一站式云原生机器学习平台-推理服务的工程化加速

    全栈工程师开发手册 (作者:栾鹏) 一站式云原生机器学习平台 前言:cube是tme开源的云原生机器学习平台,目前包含特征平台,支持在/离线特征:数据源管理,支持结构数据和媒体标注数据管理:在线开发, ...

  9. cube一站式云原生机器学习平台-加速分布式任务的运行效率

    全栈工程师开发手册 (作者:栾鹏) 一站式云原生机器学习平台 前言:cube是tme开源的云原生机器学习平台,目前包含特征平台,支持在/离线特征:数据源管理,支持结构数据和媒体标注数据管理:在线开发, ...

最新文章

  1. 赵本山说日本车。(笑死不偿命)
  2. 胶囊网络升级新版本,推特2000+赞,图灵奖得主Hinton都说好
  3. 踩内存是什么意思啊_面试|搬了这么久的砖,居然还不知道什么“踩内存”
  4. Shell脚本基本命令3
  5. 微信小程序结合Java后端实现登录注册
  6. 做数据分析已经会Excel了,还要学Python吗?
  7. HTML5 - WebSQL
  8. 手机弹奏计算机音乐的软件,APP推荐:11款简单好用工具的APP,一定要懂!
  9. 【03】制作第一个zblog模板第三期,完成对接首页所有调用内容,将所有页面拆分公共页面和独立页面
  10. 2020年html5竞赛作品,2020年大学生乡村规划竞赛获奖作品展,快拿来作为展板排版参考...
  11. 「GoTeam 招聘时间」传音移动互联 容器开发(上海)
  12. SQL->基础->进阶
  13. 【VBA】Speech.Speak 指定语音库
  14. VMware虚拟机启动后黑屏,无论怎么按都是不动弹
  15. 系统集成项目管理工程师笔记(2)信息系统服务管理
  16. 如何批量调整图片亮度?
  17. 立体几何中常见的建系类型汇总
  18. av_interleaved_write_frame(fmt_ctx, enc_pkt);返回-22
  19. performSelector和传递参数
  20. Blender渲染课程学习笔记

热门文章

  1. 【Java数据结构】泛型详解+图文,通配符上界、下界
  2. Studying at SUST
  3. 美监管“叫停”BUSD!是时候了解一下值得期待的几个新DeFi 稳定币了
  4. MySQL 数据类型BINARY和VARBINARY
  5. 用win7系统如何登录ftp服务器,必备技巧之最详细win7系统登陆ftp服务器的图文教程...
  6. 桂林理工大学专科计算机专业在哪个校区,桂林理工大学专科在哪个校区
  7. 锁定计算机后怎样解锁,如何在锁定键盘时解锁计算机键盘. 详细的方法介绍
  8. 如何下载Jason2测高数据
  9. 分布式数据库和多活数据库的区别
  10. 计算机报名照片没有重命名,照片重命名怎么弄