经过多年在混合云环境下的耕耘,云杉网络自主研发的DeepFlow可观测性平台得到了多家企业客户的认可,并在金融、电信、能源等行业得到了广泛的应用。今天正式宣布开源DeepFlow核心的可观测性数据流引擎,希望将高度自动化的可观测性能力、自动追踪和自动标签能力开放到整个行业,帮助企业客户优化云原生运维工作运行的效率、稳定性和计算成本。
一、为什么需要可观测性?
大量云原生技术的采用,导致IT系统越来越复杂,快速排障变得越来越难。传统的应用监控(APM)和网络监控(NPM)工具,可以发现某个函数调用失败或者某个链路性能下降,却难以在复杂的云环境下找到故障发生的根本原因。Epsagon 的一项调查表明,应用开发者有高达30%的时间花在可观测性能力建设上,另有 20% 的时间花在代码 Debug 上,而 Debug 花费的大部分时间又恰好是可观测性建设不足导致。
可观测性建设的难点包括两个方面:
埋点插码难
开发者需要考虑为每一种语言、每一种框架进行埋点和插码。一些公司的业务开发团队很幸运,会有类似 IDP(Internal Developer Platform)的团队负责整个公司的可观测性能力建设,提供埋点和插码的 SDK。但大部分语言缺乏类似 JVM 的字节码注入机制,IDP 团队每一次的 SDK 升级都需要业务开发团队同步发版、上线。
开发者需要考虑在微服务之间如何传递追踪上下文。同样需要为每一种语言、每一种框架进行埋点和插码,另一方面像 MQTT 3.X、MySQL、Redis 等缺乏 Header Option 字段的协议经常成为追踪的噩梦。
开发者需要为每一个指标、追踪、日志数据注入大量的属性标签,以便于后续能够对观测数据进行灵活的过滤、分组及关联。然而这些标签已经存在于 K8s apiserver、服务注册中心、应用协议 Header 中,开发者不得不重复这份工作将他们搬迁到观测数据中。平台运维难
开发者需要考虑如何避免指标数据中携带高基标签,有些时候因为后端 TSDB(Time Series Database)性能的不足,无奈将高基 Tag 字段转换为 Metrics,甚至丢弃;限制观测数据的猖獗增长,在复杂的采样策略之间权衡选择以降低数据量,但通常会在某次问题排查时发现数据不全而无法进行;维护复杂的可观测平台,他们通常有着负载均衡、消息队列依赖。随着复杂度的增长,可观测性平台本身的可观测性能力同样也成为问题。
二、DeepFlow可观测性平台
云杉网络在SDN及云网络领域深耕近十年,逐步从SDN核心技术走向IT系统的自动化和可观测性,率先推出了DeepFlow云原生可观测性平台,面向混合云、容器、微服务的全栈虚拟化环境,实现对网络、系统、应用的全栈指标和全链路追踪,结合云资源知识图谱实现100+维度指标数据的动态标注,拥有零侵扰部署的特性。获得众多大型银行的青睐和认可,成为商用的云原生监控产品,并在近百家重点行业的企业云数据中心得到广泛应用。
随着云时代为了让业务运行更加稳定、业务创新更加高效,开发、运维、SRE团队对可观测性的需求空前高涨,但不同的团队所选择的可观测性方案和实践路径又各有不同,从应用开发团队看来可观测性建设已成为一项必要工作。
为帮助大家有效应对以上困境,正式将DeepFlow核心的可观测性数据流引擎开源,这一个为云原生应用开发者建设可观测性能力而量身打造的全栈、全链路、高性能数据引擎,能够显著降低开发者的埋点、插码、维护负担,通过 AutoTagging 机制打破数据孤岛,解锁数据下钻能力;基于创新的高性能 SmartEncoding 机制告别高基烦恼和资源焦虑;利用DeepFlow的可编程能力和开放接口,开发者可以快速将其融入到自己的可观测性技术栈中。
三、开源的DeepFlow(原名:MetaFlow)有什么优势?
全栈
DeepFlow开源版使用 AF_PACKET、BPF、eBPF 技术实现的 AutoMetrics 机制,可以自动采集任何应用的 RED性能指标,精细至每一次应用调用,覆盖从应用到基础设施的所有软件技术栈。在云原生环境中,DeepFlow开源版 的 AutoTagging 机制自动发现服务、实例、API的属性信息,自动为每个观测数据注入丰富的标签,从而消除数据孤岛,并释放数据的下钻能力。
全链路
DeepFlow开源版使用 eBPF 技术创新的实现了 AutoTracing 机制,在云原生环境中自动追踪任意微服务、基础设施服务的分布式调用链。在此基础上,通过与 OpenTelemetry 的数据集成,将 eBPF Event 与 OTel Span 自动关联,实现完整的全栈、全链路追踪,让追踪无盲点。
高性能
DeepFlow开源版创新的 SmartEncoding 标签注入机制,能够将标签数据的存储性能提升 10 倍,从此告别高基标签和数据采样焦虑。使用 Rust 实现 Agent,拥有极致处理性能的同时保证内存安全。使用 Golang 实现 Server,重写了 Golang 的 map、pool 基础库,数据查询和内存申请均有近 10 倍的性能提升。
可编程
DeepFlow开源版目前支持了对 HTTP、HTTPS、Dubbo、MySQL、Redis、Kafka、MQTT、DNS协议的解析,并将保持迭代增加更多的应用协议支持。除此之外,DeepFlow开源版计划基于 WASM技术提供了可编程接口,让开发者可以快速具备对私有协议的解析能力,并可用于构建特定场景的业务分析能力,例如 5GC 信令分析、金融交易分析、车机通信分析等。
开放接口
DeepFlow开源版支持接收广泛的可观测数据源,并利用 AutoTagging 和 SmartEncoding 提供高性能、统一的标签注入能力。支持插件式的数据库接口,开发者可自由增加和替换最合适的数据库。向上为所有观测数据提供统一的标准 SQL 查询能力,便于使用者快速集成到自己的可观测性平台中,也提供了在此基础上继续开发方言 QL 的可能性。
易于维护
DeepFlow开源版仅由 Agent、Server 两个组件构成,将复杂度隐藏在进程内部,将维护难度降低至极致。DeepFlow Server 集群可对多资源池、异构资源池、跨 Region/AZ 资源池中的 Agent 进行统一管理,且无需依赖任何外部组件即可实现水平扩展与负载均衡。
四、为什么要开源?
建设可观测性已经成为云原生应用开发者的必要工作,然而现有的解决方案正悄无声息的消耗着开发者越来越多的时间。开发者需要考虑如何为新的框架插入追踪代码?如何为新的语言增加打桩点?如何为每条日志和指标注入上百个标签?如何维护越来越复杂的可观测性数据平台?这些工作严重挤占了业务开发工作的时间。
开源DeepFlow是云杉网络送给新时代开发人员、运维人员的一份礼物。希望开发人员能有更多的时间聚焦在业务上,将可观测性更多的交给自动化的 DeepFlow,让自己的代码更清晰整洁。通过DeepFlow,希望让观测更自动,让开发者更自由。
五、拥抱DeepFlow!
你是否正在规划或者实施云原生可观测性、提升网络故障定位效率的项目?
你是否正在头痛数据孤岛、资源开销的问题?Metrics、Tracing、Logging三类数据无法关联、无法流通,使用困难?
你是否正在经历追踪和日志数据体量大,经常需要削足适履,做采样抹掉高基数字段?
非常欢迎你通过 GitHub/微信 的方式联系我们体验DeepFlow:
官网链接:https://deepflow.yunshan.net/community.html
GitHub 地址:https://github.com/deepflowys/deepflow
DeepFlow 文档:https://deepflow.yunshan.net/docs/about/overview/
好文章,需要你的鼓励
后来广为人知的“云上奥运”这一说法,正是从这一刻起走上历史舞台。云计算这一概念,也随之被越来越多的人所熟知。乘云科技CEO郝凯对此深有感受,因为在2017年春节过后不久,他的公司开始成为阿里云的合作伙伴,加入了滚滚而来的云计算大潮中。同一年,郝凯带领团队也第一次参加了阿里云的“双11”活动,实现了800万元的销售业绩。
随着各行各业数字化变革的不断深入,人类社会正加速迈向智能化。作为智能世界和数字经济的坚实底座,数据中心也迎来了蓬勃发展。面