共计 1790 个字符,预计需要花费 5 分钟才能阅读完成。
“您能够从三个选项中(疾速、便宜或好)抉择两个”提出这个问题的人可能不是可观测性工程师。
但也可能是,在可观测性方面,决定您是否想要“疾速、负担得起或深刻的洞察力”传统上是工程团队的首要任务之一。从历史上看,咱们所依赖的监控架构和工具并不能让咱们领有所有,至多在分布式云原生应用程序的环境中是这样。
侥幸的是,至多在可观测性方面通过从新思考监控办法的基本原理,您能够领有所有。您能够疾速取得深刻的见解,而无需为监控工作流付出代价。
听起来好得令人难以置信?持续浏览来理解如何在云原生可观测性方面围绕老本和深度(以及速度)进行均衡。
当工程师领有所有时:传统的可观测性办法
在可观测性方面,过来几代的工程师不用在老本、深度或速度之间做出抉择。他们无需尝试就领有这所有。
这是因为他们应用的是集中的、繁多的应用程序。在这种状况下,收集足够数量的监控数据以实现齐全知情的管理决策并不需要破费太多工夫或金钱。少数状况下,只需将轻量级监控 SDK 集成到单体应用程序中,并让它收集根本指标和日志数据。设计简略,工艺简略,成本低。
这种办法在以单体和单节点应用程序部署为主的世界中运行良好。没有人质疑它,因为没有理由质疑它。
事件是如何土崩瓦解的:云原生可观测性的曙光
在过来十年左右的工夫里,许多工程团队遇到的问题是,当采纳传统的、对单体敌对的监控架构并尝试将其移植到分布式云原生应用程序上时,将无奈再领有这所有。
您不肯定能疾速监控,因为将 SDK 集成到所有微服务中须要工夫。此外还须要收集更多数据,因为不仅要解决来自单个应用程序的一些根本指标。相同,你从一堆微服务中取得了大量的日志和指标(不要遗记你的形迹!)。
以具备老本效益的形式收集所有数据也十分艰难。您可能会遇到高额的进口费用,只是为了将数据挪动到能够剖析的中央,还要领取存储费用。冰川层存储可能很便宜,但当领有大量须要保留多年的监控数据时,它就会减少。
放慢云原生可观测性并降低成本的一种办法是仅收集工具随机抉择的一些数据,而不是尝试收集和剖析可用的每一个日志、指标和跟踪。但随后您将进行抽样——没有人违心成为数据抽样者,因为数据抽样意味着可能会因为数据收集和剖析不残缺而错过重要信息。
如果依赖于分布式应用程序的传统可观测性策略,您最终将面临笔者喜爱称之为老本深度衡量的问题。能够疾速且廉价地进行观测,或者抉择深刻观测,但要付出昂扬的工夫和精力。你不可能领有所有。
解脱老本深度的衡量
侥幸的是,如果退后一步重新考虑可观测性办法,您会意识到能够进行便宜和深刻的观测。
窍门在于:无需尝试收集和剖析每一个可用数据或随机采样,而是通过在源头辨认最乏味的数据来智能地对其进行采样,而后仅抉择该数据以发送到可观测性平台。您还能够将数据转换为细粒度的、可操作的指标,以便在它达到可观测性门户时立刻进行剖析。
依然好得令人难以置信,对吧?问题是,基于仪器的监控办法实质上意味着,如果咱们试图测量对于代码的要害内容,须要应用内部代码段“包装”其中的一部分,这些代码段将治理监控的逻辑工具。
使逻辑过于简单,开销就越大。在将来自应用程序的数据发送进来之前,剖析得越多,生成的开销对应用程序的总体影响就越大。
这就是为什么传统的监控工具会转向简略的逻辑,比方全副采样,或者随机采样。在不深刻细节的状况下,这种限度能够通过 eBPF 等新兴技术来解除。
后果是您传输、剖析和存储的数据要少得多。但因为专一于相干数据,您不用在早晨因想晓得您抉择的数据是否会牢靠地产生您须要的深刻见解而睡不着觉。
把针放在海底捞针前
如果你喜爱类比,这里有一个总结了咱们在这里探讨的可观测性策略:这相似于在你建设一个干草堆前对每一束干草进行分类,查看外面是否有一根针。
这样就能够尽早抓住针头,而不用等到筹备好整个干草堆后能力对其进行分类并尝试插入针头。针很容易找到,因为它们从一开始就不会被埋在干草堆里。事实上,你基本没有干草堆来解决,因为能够在不关怀的干草变成代价昂扬的干草堆之前将其抛弃。
云原生可观测性的将来
我认为这种可观测性办法对于任何心愿在不领取大量监控和数据存储老本的状况下放弃对其零碎的牢靠可见性的团队来说都是要害。云原生日志、指标和跟踪数据的数量和复杂性只会减少,使得传统的监控和可观测性策略在云原生环境中越来越不可行。
如果你想领有这所有——能够。采纳可观测性架构,让您在源头上磨难相干数据,并且是金子。