基于AutoTagging技术实践,构建统一的可观测性数据平台

智能计算芯世界 2022-05-07 00:00



混合云以及容器逐渐成为承载微服务应用的主要基础设施,对于云原生应用的监控保障,也面临诊断难、规模广、弹性大、波动性强等挑战,这些挑战同时也使得云原生应用可观测性成为了运维开发关注的焦点。基于云杉网络在混合云网络场景下的多年实践,给大家分享在构建统一的云原生应用可观测性数据平台中的一些思考和经验。


系列下载:
人工智能学习预备知识系列赋能 
第一章 AI概览 
第二章 Python编程基础 
第三章 数学基础知识 
第四章 Tensorflow介绍 
第五章 深度学习预备知识和深度学习 
第六章 华为云EI概览

人工智能专题课System for AI(1) 

1-2 人工智能系统概述和深度网络基础 

3 深度神经网络网络计算框架基础 

4 矩阵运算与计算机体系结构 

5 深度学习中的分布式训练-算法

人工智能专题课System for AI(2) 

10 神经网络的稀疏化 

6 深度学习中的分布式训练-系统 

7 异构计算集群调度与资源管理系统 

8 深度学习推理系统 

9 计算图的编译与优化

人工智能专题课System for AI(3) 

11 自动机器学习系统 

12 强化学习系统 

13 人工智能的安全隐私 

14 利用人工智能优化计算机系统



一. 可观测性数据平台的挑战

 

如何理解可观测性数据平台的要素。Peter Bourgon有个很好的总结,从数据类型的角度分为Metrics、Tracing、Logging,这个总结在业内家喻户晓,其实这三个类型的数据也将江湖上的方案划分为了三个派别:指标优先、追踪优先、日志优先。这使得每个开源组件能在自己擅长的领域内做到最好,但也导致了三类数据之间沟壑明显,无法关联引出了三个关键性问题:数据粒度粗,数据无法关联、资源开销大。三类数据无法关联、无法流通,使用困难。追踪和日志数据体量很大,资源开销难以承受,经常需要削足适履,做采样抹掉高基数字段等。


二. 常见的6种数据孤岛场景


正如文章开头所说,其实可观测性方案是分门派、分信仰的。例如SkyWalking、OpenTelemetry大侠就都来自‘追踪派’,以Tracing为核心维护了一个Context,使得Metrics、Log生成时都能打上同样的Tag以及TraceID、SpanID。



Metrics通过Examplars关联至Trace,而Log和Trace之间也通过TraceID、SpanID进行关联,核心是TraceID,辅助是Context中的Tag。但这样的关联并不完善,这样的关联仅限于Tracing与其他两种数据的交叠部分,一些常见的问题还是无法回答,比如以下几个场景:

 

场景一:Trace和非Request Scope的Metrics关联



这里分两种指标:请求相关和非请求相关。前者包括某个请求的应用时延、网络性能;后者有某个实例的CPU、内存、GC、内部数据结构,还包括实例所在虚拟机、宿主机的性能指标。这两部分数据不能通过TraceID关联,可能会导致一些问题,例如响应某个请求的实例在某个时间的指标曲线是怎样的?从一个Span能否跳转到指标曲线?


场景二:Metrics与Metrics之间关联



这里的指标可能来自不同的数据源,这些数据源打着不同的Tag,例如某个服务的Pod的请求速率、IO速率、网络流量速率分别是多少?Pod所在的虚拟机或KVM宿主机的CPU、内存是多少?如何做到无缝关联。


场景三:Metrics与非Aggregatable的日志之间关联



在看到QPS下降时,能否快速关联到进程相关的Pod、虚拟机、KVM日志。这个时候是某一个进程的QPS降低了吗?或者是某个服务它的QPS降低了吗?


场景四:日志与日志之间关联



日志一般携带主机名、进程名信息。Loki做的比较好,能自动将K8s中的日志关联上Pod、Namespace、Node等标签,但也依然难回答一些跨进程的问题,例如应用日志中的错误与Ingress日志有关联吗?


场景五:非Request scope的Log与Trace之间关联



系统日志异常与Request时延增大是否有关联?能否快速跳转?通常会有这样的系统日志,一个异常和Request的时延增大,这是不是有问题?某一个Request的时延增大,那它所在的Workload,它所在的VM是不是有异常?


场景六:应用、系统、网络的Trace之间关联


举一个简单的场景:访问一个服务的耗时究竟由哪些部分组成?瓶颈是在应用程序,还是在中间链路上?如果是在链路上,那么哪部分的耗时最大?Sidecar、Node、KVM、NFV网关?



从上述场景中可以发现,其实是缺少了标签,而导致了不同数据源之间的数据无法关联。那我们到底需要哪些标签呢?先看看OpenTelemetry是怎么看待这个问题的。OTel中的标签叫做属性(attribute),并且将标签分为静态的,表示资源的属性;以及动态的,表示请求的属性。资源属性中有描述服务的,例如Service Name等;描述代码的,例如依赖库版本;描述实例的,例如区域等。属性非常多,但在一个混合云的场景下,要解决上文的6种场景还远远不够。


三. 解决数据孤岛:AutoTagging


说了这么多以后,接下来分享DeepFlow的AutoTagging技术,它解决了数据孤岛的问题。在DeepFlow的典型客户中,两个微服务之间通信所涉及到的标签可能多达上百个。比如K8s中的集群、节点、命名空间、服务、Ingress、Deployment、POD。再比如K8s中大量的自定义Label,包括版本version、环境env、组、owner;以及与CI/CD相关的stage、commitId、deployId等(这里列出来的只是自定义标签中的很小一部分)。



这些标签都期待开发者在代码中注入是不现实的,会带来沉重的开发负担。其实这些标签已经存在于某个地方了,奔着一个信息只需要一个源的偷懒原则,开发者当然希望这些分散在各处的标签能自动追加到所有的观测数据中。DeepFlow产品发展了数年,已经能支持市面上常见的公有云、私有云、容器,自动同步其中的资源和服务标签,并自动与观测数据关联起来。

 

目前支持的数据围绕Trace展开,每个请求的详细日志,以及请求聚合后的RED指标等等,所有覆盖到了网络和应用。利用这些标签可以快速在指标、追踪、流日志之间无缝跳转,也可以在搜索条件中追加这些标签对数据进行进一步的切分和下钻。



看了这张图,再回顾上文6种数据孤岛场景里提出的一系列数据关联、数据切分、数据下钻的问题就有了答案。通过控制器和云API、K8S apiserve,以及正在推进的服务注册中心的信息同步,将所有资源的标签、容器服务的标签、自定义的标签、乃至于服务注册中心中某一个API都打上标签。再通过eBPF的方式拿到的追踪数据(在HTTP的header里面,或者在任何其他的应用协议头部里面注入的字段),从而无缝的实现数据关联。



虽然做到了AutoTagging,还是会带来另一个问题,大量自动标签的注入带来了资源消耗的飙升。使用MultistageCodec编码技术可以有效降低资源开销这一问题。


四、降低资源开销:MultistageCodec



这是一个数据从采集存储查询的流程。Agent在采集到数据时通常是从流量或eBPF系统调用中获取的请求数据,原始数据几乎不含有Tag(除了开发者注入到请求Header中的标签以外)。Controller和云API、K8s apiserver进行同步获取所有资源、服务、自定义标签,并将其编码后下发给Agent和Ingester。Agent传输、Ingester存储使用的都是编码后的‘整形标签‘,最终经过Querier的查询计算还原为字符串标签。

 

因为我们存储使用的ClickHouse,所以告别了高基数的烦恼,“时间线”数量不再是需要考虑的一个问题。在这个流程中,实际上编解码是分多个阶段进行的。


第一阶段:采集编解码


Controller并不会将所有的标签下发给Agent,它只会将标签的“基”下发。这样Agent只需要为数据追加很少的标签即可。在混合云场景下为了标识资源,可以用VPC ID作为基,它能和IP地址联合决定客户端、服务端对应的实例和服务。


第二阶段:存储编解码


同样Controller会将标签编码‘整形’后发给Ingester。Ingester在收到Agent发过来的数据后,会进行一轮Tag的Enrich,基于Agent注入的标签基,扩展为更为丰富的标签集合。但需要注意的是,并不需要存储所有的标签。标签的存储是为了方便检索和聚合,只需要保证每个切分粒度上都有标签存在即可。举个例子:可以将Region、AZ、Host、VM、Node、Namespace、Service、Deployment、POD等固定、系统级别的标签存储即可,其他的自定义的标签一般是依附在这些系统级别标签之上的,存在一一对应的关系。另外,自定义标签动态性高,且无法预知Schema,也不适合全部存储。根据我们的实践,一般每一个请求涉及到的系统级别的标签在40个左右,自定义标签在60个左右。通过只存储系统标签,能将压力进一步降低。


第三阶段:查询编解码


通过字符串查询、聚合,并且也支持没有存储的自定义标签的查询、聚合。这里依赖ClickHouse举个例子,可以创建一个Pod名称和ID对应关系的字典表,这个表可以通过文件、MySQL同步到CK中,也可以直接在CK中创建。在一个CK集群中,让每个节点都从统一的MySQL同步字典是个好办法,这样每个节点上就都会有一个字典副本。如果数据库不适用CK,也可以用Join来实现。

 

通过这三级编解码能节省大量的资源消耗,性能提升十分可观。一方面采集侧CPU、内存可以降低,传输带宽也降低了,最主要的还是后端存储开销的降低。在ClickHouse基础上的多级编解码能将存储开销最大化的降低,而且由于查询阶段扫描的数据量变小了,可以获得更好的查询性能。这样的处理机制也是即将开源的可观测性数据流引擎中的核心。


五、实战效果:资源消耗不到1%


用一个实例来看这个机制的实际效果,首先对比三种存储方式:


  • 直接存索引:使用MultistageCodec为Tag编码,向CK中存储编码后的Int值。

  • 索引和标签分离:将Tag存为LowCard字段(即CK在存储前将字符串转换为整数,相当于CK做了额外的Tag索引)。

  • 直接存标签:直接将Tag字符串存储到CK中。






三种方式使用的均为长度为16字节的字符串标签(这个长度其实比一般生产环境中的标签要短得多)。索引和标签分离的方式相比直接存字符串能显著降低磁盘消耗,且能够将CPU消耗降低至1/2。而MultistageCodec相比于其他两种方案都能做到一个数量级的性能提升,效果立竿见影。如果考虑到还有60%的自定义标签是我们在查询期翻译的,那优化的幅度更大。



最后来看看在生产环境的实际表现,用一句话来说,在Server端的资源消耗不到被监控对象的1%。我们在一个生产环境中监控了600个16C的容器节点,上面运行了8000个POD,每秒总的写入速率能到百万行,每行数据都是一个宽表(100到150列),这里面包含了写入的系统级标签和关联的指标数据、请求属性等。这个环境总共用了6个16C的虚拟机来承载,但他们的负载之和不到60,还有很大余量。


六、总结


本文介绍了AutoTagging和MultistageCodec技术。AutoTagging能为来自不同源头的观测数据注入统一的查询标签,打破观测数据之间的隔阂,并提供强大的数据切分、下钻能力。MultistageCodec技术解决了标签爆炸带来的资源开销问题,可将ClickHouse的存储开销降低10倍,生产实践表明后端资源的配比可低于1%。


全课程下载:

人工智能专题课System for AI(1) 
人工智能专题课System for AI(2) 
人工智能专题课System for AI(3) 
智能之门:神经网络和深度学习入门
国产化平台的AI赋能
GPU,FPGA和ASIC


本号资料全部上传至知识星球,更多内容请登录智能计算芯知识(知识星球)星球下载全部资料。




免责申明:本号聚焦相关技术分享,内容观点不代表本号立场,可追溯内容均注明来源,发布文章若存在版权等问题,请留言联系删除,谢谢。



电子书<服务器基础知识全解(终极版)>更新完毕。

获取方式:点击“阅读原文”即可查看182页 PPT可编辑版本和PDF阅读版本详情。



温馨提示:

请搜索“AI_Architect”或“扫码”关注公众号实时掌握深度技术分享,点击“阅读原文”获取更多原创技术干货。


智能计算芯世界 聚焦人工智能、芯片设计、异构计算、高性能计算等领域专业知识分享.
评论
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 140浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 143浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 114浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 96浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 144浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 94浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 170浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 112浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 126浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 109浏览
  • TOF多区传感器: ND06   ND06是一款微型多区高集成度ToF测距传感器,其支持24个区域(6 x 4)同步测距,测距范围远达5m,具有测距范围广、精度高、测距稳定等特点。适用于投影仪的无感自动对焦和梯形校正、AIoT、手势识别、智能面板和智能灯具等多种场景。                 如果用ND06进行手势识别,只需要经过三个步骤: 第一步&
    esad0 2024-12-04 11:20 109浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦