ToB企服应用市场:ToB评测及商务社交产业平台

标题: 可观测性之两大误区 [打印本页]

作者: 三尺非寒    时间: 2024-5-22 11:10
标题: 可观测性之两大误区
[attach]58[/attach]
(把可观测性进行到底!)



有一天,我和一位读者刚开始对可观测性中日志数据的价值看法不同,但通过一阵子辩论(或者说来回争论)之后,我们最终达成了共识,得到3个观点或结论:


我的可观测性之旅始于2021年,当时我发现自己正在管理一个可观测性实践团队,并试图为所在的公司设计一个可观测性策略。这意味着,随着我对这个问题域不断地深入学习和挖掘,我的理解也在不断地发展。例如,今天看待可观测性相关的事情,其实会面临一个重大的范式转变。和所有的范式转变一样,要改变我们看待问题的方式并不容易。


在讨论具体内容之前,先解释一下几个关键的术语:


误区一:日志已经足够好了
日志重要吗?是的。如果没有日志,你就无法获得数据来调试基础设施的问题或应用服务器的问题。但是,它们是一堵文本墙,我们必须对其进行分析,以便有一丝机会我们能拼凑出代码中的问题。这样做,很难受。所以我想说的是" 如果我们把日志放在一个跨度(Span)里,日志会更有用。"因为跨度能提供事件的背景(上下文),而上下文很重要,从而通过Trace,如同胶水,可以将Span缝合在一起讲述完整的故事。在微服务领域,你不是在处理一个大的服务(即一个单体),而是在处理大量的微型服务,这些服务之间相互作用,行为怪异,甚至有时是不可预知的。日志如何帮助解决这个问题?想象一下,像下面这样的日志,你能搞清楚它们的含义吗?[attach]59[/attach]
即使我们有结构化的日志,并且使用了专门对日志信息进行切片和切块的工具(如ElasticSearch),我们仍然会错过大局(整体情况):
如果没有这些信息在手,就很难进行故障排除。在以前的一家公司,开发团队试图调试(debug)产品线上故障时,遇到的困难最大。为什么?因为在很大程度上他们依赖日志进行调试。有那么多的日志、有那么多的数据,但他们甚至不知道从哪里开始找。当然,我们能寻找到日志级别的ERROR,但是


现在,如果我们用Traces来代替呢?考虑一下这个非常精简的Trace样本。
[attach]60[/attach]
[attach]61[/attach]
[attach]62[/attach]


我们马上就有了这么多信息。下面就是可以收集到的一些信息:
把这些信息发送到可观测性(Observability)的后端,我们就可以认认真真、快速地完成故障排除了!



误区二:度量指标总是有用的
度量指标是有用的,是可以给我们提供关于CPU水平和完成一个事务所需时间的信息。但是,正如我们在日志中看到的,没有上下文的度量指标不会给我们带来可观测性。甚至有人写道:"在可观察性的世界里,我们正在处理未知的未知数,因此我们不知道会度量什么指标。这意味着......再见, 度量!"那怎样可以带来可观测性?度量指标跟踪联系起来。在某些情况下,我们可以从跟踪 中推导出度量指标,如可以从跟踪中得出一个服务的响应时间指标。但有时不能这样做,如不能从跟踪中得出虚拟机(VM)的相关指标——CPU和内存利用率。但是,我们可以通过一个链接属性将它们(度量指标)与跟踪关联起来。例如,如果我们把IP地址作为一个跨度属性来捕获,那么具有给定IP地址的虚拟机就可以与跟踪相关联。说到度量指标,要小心度量指标仪表板(dashboard)的弊端。众所周知,许多公司喜欢在办公室的巨大显示屏上骄傲地展示仪表板,作为很花哨的指挥中心的一部分。有些IT公司喜欢用仪表盘来观察CPU利用率、磁盘利用率、内存利用率、每小时事务数量等。这很好,但谁愿意整天盯着仪表盘、等待故障的发生?这些是可操作的吗?这个仪表盘上到底有什么?上面那些指标项相关吗?当初设计和创建这个仪表盘的人现在还在公司吗?他可能离开公司了,那就更糟糕。一个比度量指标仪表板更好的选择是使用SLOs(见文章开头术语),因为SLOs是可操作的。例如,假设有一个SLO,其中规定服务X的响应时间必须低于某个阈值的95%。如果服务没有达到SLO,就会触发警报,通过企业微信、电话、短信或其他方式通知,告诉值班工程师:系统没有在预期的参数内表现出来,你必须仔细检查一下情况。这就需要他去看这些指标,当然,这些指标与问题的追踪是相关联的。
日志和度量指标是否足够?如上述讨论,日志本身并不足够好,因为它们缺乏背景/上下文。我们还了解到,度量指标本身也不足够好,因为它们也缺乏上下文。向APM工具发送日志和度量指标并不能神奇地给我们提供上下文。因此:日志 + 指标  !=  可观测性
但是,如果日志是与跟踪(traces)联系在一起的(例如,作为跨度事件),而且度量指标与跟踪相连(例如,从跟踪中推导出度量指标,或者通过链接属性将它们关联起来)。这样,我们就能看到系统的全貌。
在这种情况下,我们可以说跟踪(traces)是建立可观测性的基础,所以:痕迹(日志 + 度量)== 可观测性
总之,traces应该是遥测(telemetry)数据的基础。


参考:



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4