可观测平台:滴滴可观测性的实现

Linux阅码场 2023-09-28 12:12

可观测性(Observability)是近年来备受关注的话题。那什么是可观测性?别急,让我们先从一个常见的场景开始:

你是一个一线开发同学,在某天上班路上收到了一个电话报警,提示某个接口的错误数超过了阈值 30。得益于公司监控团队做的所谓 chatops,几经周折后,你终于在 IM 中打开了对应的监控图表,发现当前的错误数似乎比之前多了一些。

作为服务开发者的你,昨天晚上部署了一个新版本,并且依赖的服务好像也做了变更。你开始猜测这个报警是否与你昨晚的上线有关,但怎么也回忆不起来昨晚依赖服务的变更内容了。

你的组长打电话过来询问报警的情况。搞不清状况的你只能回答”我需要看一下”。你打开电脑连上热点并登录上了机器,tail -f xxx.log | grep -E 'error|timeout|code=9527'。一通猛如虎的操作,你发现了问题所在,是你依赖的另一个服务延迟过高导致。和你的上线无关,和昨晚变更的依赖服务也无关。

上述这个场景,很多同学都遇到过。我们从中会发现一些问题:

  • 缺乏进一步分解和深入分析的能力:得到监控产出的图表后,无法进行进一步的分解,我们不得不跳出当前上下文,使用如 tail、grep、tcpdump、strace 等工具进行问题追查。

  • 复杂的微服务架构难以定位问题来源:因为复杂的微服务架构,无法确定问题源自哪里,是服务自身还是依赖的服务出现问题。

  • 难以确定合理的报警规则:不能确定诸如 if len(error) > 30;then alert() 这样的行为是否合理。

  • 排查问题依赖我们的历史经验:例如 9527 这样的 code,是上一次故障添加的,用于识别某类错误,但这类错误可能永远都不会再出现,只是不知为何这个数字在我们脑海里印象颇深,出于短期的记忆,顺手作为了过滤条件之一。

 

这些问题如何解决?需要依靠可观测性。可观测性在计算机领域目前仍没有标准的定义,但已经有了一些共识:如果你能从外部,理解一个系统所处的任何状态,这些状态不需要是预定义的(例如 9527),它们可能出现过也可能从未出现。当新的状态出现时,也不需要你重新埋点、发布新代码,那么我们说这个系统就具备了可观测性。

基于上述对可观测性的描述,我们从几个方面简单比较所熟知的监控与可观测性,以便大家能够更直观地理解它们的区别:

  • 监控关注聚合值,可观测性关注明细:在传统的监控中,通常会采集和展示聚合后的指标值,如平均值、最大值、最小值等,用于判断系统的整体状态。而可观测性更注重收集和展示明细信息,比如原始日志、指标的分布情况等,使得开发人员能够深入了解每个细节,从而更好地发现问题和优化系统。

  • 监控使用阈值,手动或自动与阈值进行比较,或依据历史经验或者是早已经过期了的 run book 来猜测当前系统的状态。可观测性因为拥有明细信息,所以倡导和鼓励用户主动去探索和了解系统,从而能更准确地发现问题。

  • 监控面向有经验的工程师,可观测性面向所有工程师。

 

总的来说,可观测性的目标是为了让我们更好地了解系统的运行情况,从而能够更快速地发现和解决问题,提高系统的稳定性。它强调的是全面的、详细的数据,鼓励用户主动去探索和发现,而不仅仅是被动地接收那些我们自己都无法确定阈值的报警通知。

可观测性实现

上一节我们简单描述了一下可观测性优于监控的地方。那如何实现可观测性?可观测性期望尽可能多的保留请求上下文,以便探索导致故障(可能是历史的也可能是新的)的环境和细节状态。因此可观测性在信息的丰富程度上,要求比监控高很多,需要用户暴露更多的信息(例如丰富 Metrics 的 Label),但这样一来,用户的成本可能就控制不住了。

画外:说来说去你不就是要加钱么?

作者:秀儿同学,请你先坐下。

 

如果按照一些 SAAS 厂商的推荐做法,上报几十几百的维度,每个维度下不限制基数,的确可以达成可观测性的先决条件。但有 2 个现实问题:

  1. 上报如此丰富的数据,用户成本将会爆炸性增长。

  2. 现存的存储解决方案,很难能扛住如此高维度+高基数+大量级的数据。

画外:你就不能自己实现一个么?

作者:保安在么,请秀儿同学出去。

 

除了一些 SAAS 厂商倡导的 high dimensionality, high cardinality 论调外,开源届更倾向于采用“曲线救国”的方式,通过关联当下主要的观测信号来实现可观测性。这些主要的观测信号包括:Metrics(指标)、Traces(分布式追踪)、Logs(日志)等。关联论期望关联 Metrics 的高层次抽象 + Traces 的跨服务的上下文关联 + Logs 暴露最详细的 Human-Readable/Acceptable 信息的形式,达到可观测的目标。

滴滴的可观测性实现

上一小节提到实现可观测性的两种路径,那在滴滴使用哪种方式?


答案是结合这两者,以平衡成本、效率和实现可观测性的目标。在实现上,我们改造了日志采集和 Metrics 采集的方式,对低基数和高基数维度进行切分,分别存储到不同的后端存储中,并建立关联关系。对用户暴露其关心的日志原文、traceID 等信息,从而实现可观测性。


具体来说,对于日志采集,在采集端实时分析日志生成监控曲线的过程中,会按照给定的周期,采样上报一条日志原文及其与监控曲线的对应关系。对于 Metrics 采集,需要用户调用埋点代码时传递额外的参数,告诉我们希望采样保存的维信息,这个额外维在生产环境中一般会被设置为 TraceID,它不会出现在 Metrics 曲线的 Label 中,我们每个周期采样上报一条额外维的信息,及其和监控曲线的对应关系。

滴滴可观测性产品介绍

可观测性不仅仅需要在技术层面考虑,更要完善产品以帮助用户从监控到可观测性的升级。下面,我们将介绍几个常用的场景,并结合前文所述,深入感受可观测性带来的便利性和可探索性。


报警现场关联日志原文

如果配置的策略发出了报警通知,可以直接在 IM 中查看你最熟悉的日志原文,基于日志原文进行下一步的决策,无需登录机器,无需 tail、grep 等。

       

图1: 报警现场关联日志原文


曲线看图关联日志原文、TraceID

只是在报警时刻使用还不够,还可以在看图时下钻日志原文,我们已将提取的日志原文进行简单清洗,当识别到 TraceID 时,可以直接跳转到 Trace 平台进行上下游服务的排查:

 

       

图2: 曲线看图关联日志原文、TraceID

结尾

通过建立 Logs、Traces 和 Metrics 这几个观测信号的关联,这套内部称之为 MTL 的架构和产品,在滴滴的可观测体系中发挥着重要作用,使得开发人员和运维团队可以更加了解其系统的运行状态,从而更准确地发现问题和进行故障排查,这套系统也得到了众多用户的认可和正向评价。希望通过这篇文章,能为大家提供一些经验和启示。






云原生夜话





你们公司有在做可观测性吗?是如何实现的?欢迎在评论区留言,如需与我们进一步交流探讨,也可直接私信后台

作者将选取1则最有意义的留言,送出滴滴定制多功能跨包,9月19日晚9点开奖。


Linux阅码场 专业的Linux技术社区和Linux操作系统学习平台,内容涉及Linux内核,Linux内存管理,Linux进程管理,Linux文件系统和IO,Linux性能调优,Linux设备驱动以及Linux虚拟化和云计算等各方各面.
评论
  • 1月7日-10日,2025年国际消费电子产品展览会(CES 2025)盛大举行,广和通发布Fibocom AI Stack,赋智千行百业端侧应用。Fibocom AI Stack提供集高性能模组、AI工具链、高性能推理引擎、海量模型、支持与服务一体化的端侧AI解决方案,帮助智能设备快速实现AI能力商用。为适应不同端侧场景的应用,AI Stack具备海量端侧AI模型及行业端侧模型,基于不同等级算力的芯片平台或模组,Fibocom AI Stack可将TensorFlow、PyTorch、ONNX、
    物吾悟小通 2025-01-08 18:17 53浏览
  • HDMI 2.2 规格将至,开启视听新境界2025年1月6日,HDMI Forum, Inc. 宣布即将发布HDMI规范2.2版本。新HDMI规范为规模庞大的 HDMI 生态系统带来更多选择,为创建、分发和体验理想的终端用户效果提供更先进的解决方案。新技术为电视、电影和游戏工作室等内容制作商在当前和未来提供更高质量的选择,同时实现多种分发平台。96Gbps的更高带宽和新一代 HDMI 固定比率速率传输(Fixed Rate Link)技术为各种设备应用提供更优质的音频和视频。终端用户显示器能以最
    百佳泰测试实验室 2025-01-09 17:33 60浏览
  • 一个真正的质量工程师(QE)必须将一件产品设计的“意图”与系统的可制造性、可服务性以及资源在现实中实现设计和产品的能力结合起来。所以,可以说,这确实是一种工程学科。我们常开玩笑说,质量工程师是工程领域里的「侦探」、「警察」或「律师」,守护神是"墨菲”,信奉的哲学就是「墨菲定律」。(注:墨菲定律是一种启发性原则,常被表述为:任何可能出错的事情最终都会出错。)做质量工程师的,有时会不受欢迎,也会被忽视,甚至可能遭遇主动或被动的阻碍,而一旦出了问题,责任往往就落在质量工程师的头上。虽然质量工程师并不负
    优思学院 2025-01-09 11:48 82浏览
  • 在当前人工智能(AI)与物联网(IoT)的快速发展趋势下,各行各业的数字转型与自动化进程正以惊人的速度持续进行。如今企业在设计与营运技术系统时所面临的挑战不仅是技术本身,更包含硬件设施、第三方软件及配件等复杂的外部因素。然而这些系统往往讲究更精密的设计与高稳定性,哪怕是任何一个小小的问题,都可能对整体业务运作造成严重影响。 POS应用环境与客户需求以本次分享的客户个案为例,该客户是一家全球领先的信息技术服务与数字解决方案提供商,遭遇到一个由他们所开发的POS机(Point of Sal
    百佳泰测试实验室 2025-01-09 17:35 59浏览
  • 在智能网联汽车中,各种通信技术如2G/3G/4G/5G、GNSS(全球导航卫星系统)、V2X(车联网通信)等在行业内被广泛使用。这些技术让汽车能够实现紧急呼叫、在线娱乐、导航等多种功能。EMC测试就是为了确保在复杂电磁环境下,汽车的通信系统仍然可以正常工作,保护驾乘者的安全。参考《QCT-基于LTE-V2X直连通信的车载信息交互系统技术要求及试验方法-1》标准10.5电磁兼容试验方法,下面将会从整车功能层面为大家解读V2X整车电磁兼容试验的过程。测试过程揭秘1. 设备准备为了进行电磁兼容试验,技
    北汇信息 2025-01-09 11:24 69浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 84浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 107浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球中空长航时无人机产值达到9009百万美元,2024-2030年期间年复合增长率CAGR为8.0%。 环洋市场咨询机构出版了的【全球中空长航时无人机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球中空长航时无人机总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析中空长航时无人机市场主要驱动因素、阻碍因素、市场机遇、挑战、新产品发布等。报告从中空长航时
    GIRtina 2025-01-09 10:35 60浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2025-01-09 09:58 43浏览
  • 职场是人生的重要战场,既是谋生之地,也是实现个人价值的平台。然而,有些思维方式却会悄无声息地拖住你的后腿,让你原地踏步甚至退步。今天,我们就来聊聊职场中最忌讳的五种思维方式,看看自己有没有中招。1. 固步自封的思维在职场中,最可怕的事情莫过于自满于现状,拒绝学习和改变。世界在不断变化,行业的趋势、技术的革新都在要求我们与时俱进。如果你总觉得自己的方法最优,或者害怕尝试新事物,那就很容易被淘汰。与其等待机会找上门,不如主动出击,保持学习和探索的心态。加入优思学院,可以帮助你快速提升自己,与行业前沿
    优思学院 2025-01-09 15:48 53浏览
  • 在过去十年中,自动驾驶和高级驾驶辅助系统(AD/ADAS)软件与硬件的快速发展对多传感器数据采集的设计需求提出了更高的要求。然而,目前仍缺乏能够高质量集成多传感器数据采集的解决方案。康谋ADTF正是应运而生,它提供了一个广受认可和广泛引用的软件框架,包含模块化的标准化应用程序和工具,旨在为ADAS功能的开发提供一站式体验。一、ADTF的关键之处!无论是奥迪、大众、宝马还是梅赛德斯-奔驰:他们都依赖我们不断发展的ADTF来开发智能驾驶辅助解决方案,直至实现自动驾驶的目标。从新功能的最初构思到批量生
    康谋 2025-01-09 10:04 59浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦