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

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