论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
运维.售后
›
运维.售后
›
可观测性之两大误区
可观测性之两大误区
三尺非寒
金牌会员
|
2024-5-22 11:10:13
|
显示全部楼层
|
阅读模式
楼主
主题
682
|
帖子
682
|
积分
2046
(把可观测性进行到底!)
有一天,我和一位读者刚开始对可观测性中日志数据的价值看法不同,但通过一阵子辩论(或者说来回争论)之后,我们最终达成了共识,得到3个观点或结论:
在可观测性策略中忽略日志数据是一个重大的错误步骤
有很多高级用户只使用日志和度量来观测
可观测性是一系列的实践,虽然我们不可能马上就能做到完美。
我的可观测性之旅始于2021年,当时我发现自己正在管理一个可观测性实践团队,并试图为所在的公司设计一个可观测性策略。这意味着,随着我对这个问题域不断地深入学习和挖掘,我的理解也在不断地发展。例如,今天看待可观测性相关的事情,其实会面临一个重大的范式转变。和所有的范式转变一样,要改变我们看待问题的方式并不容易。
在讨论具体内容之前,先解释一下几个关键的术语:
日志
告诉我们某一特定时间点的情况。它们没有一个标准化的格式,因此很难查询。
跨度(Span)
代表一个工作或操作单位。它通过相关的结构化日志信息(跨度事件)和属性(如客户端ID、API端点、IP地址)等上下文信息,描绘了在执行该操作期间所发生的情况。例如,一个跨度捕获了当客户向购物车添加一个商品时发生的所有事情。
跟踪(trace)
将所有相关的跨度(如树状)连接起来,向我们展示大局。
度量指标(Metrics)
是一段时间内有关基础设施或应用程序的数据汇总。例如:系统错误率、CPU利用率、特定服务的请求率。
遥测
(Telemetry) 从一个系统发出的关于其行为的信号。这些信号可以跟踪、度量和日志的形式出现。
SLI,即服务水平指标
,是一个正在度量的东西。尽管SLI是根据一个指标创建的,但该指标是由跟踪数据的汇总而来。一个SLI的例子:成功的HTTP请求数/HTTP请求总数(成功率)。
SLO,即服务水平目标
,是我们如何通过将SLI与业务价值联系起来,向组织或团队的其他人传达可靠性。
误区一:日志已经足够好了
日志重要吗?是的。如果没有日志,你就无法获得数据来调试基础设施的问题或应用服务器的问题。但是,它们是一堵文本墙,我们必须对其进行分析,以便有一丝机会我们能拼凑出代码中的问题。这样做,很难受。所以我想说的是" 如果我们把日志放在一个跨度(Span)里,日志会更有用。"因为跨度能提供事件的背景(上下文),而上下文很重要,从而通过Trace,如同胶水,可以将Span缝合在一起讲述完整的故事。在微服务领域,你不是在处理一个大的服务(即一个单体),而是在处理大量的微型服务,这些服务之间相互作用,行为怪异,甚至有时是不可预知的。日志如何帮助解决这个问题?想象一下,像下面这样的日志,你能搞清楚它们的含义吗?
即使我们有结构化的日志,并且使用了专门对日志信息进行切片和切块的工具(如ElasticSearch),
我们仍然会错过大局
(整体情况):
涉及哪些服务?
它们以什么顺序被调用?
哪些事务联系在一起?
如果没有这些信息在手,就很难进行故障排除。在以前的一家公司,开发团队试图调试(debug)产品线上故障时,遇到的困难最大。为什么?因为在很大程度上他们依赖日志进行调试。有那么多的日志、有那么多的数据,但他们甚至不知道从哪里开始找。当然,我们能寻找到日志级别的ERROR,
但是
:
在什么情况下出错的?
它是哪个事务的一部分?
什么服务调用了抛出错误信息的服务?
现在,如果我们用Traces来代替呢?考虑一下这个非常精简的Trace样本。
我们马上就有了这么多信息。下面就是可以收集到的一些信息:
我们的跟踪(也是根跨度)叫做Hello
它有两个子节点:Hello-Greetings和Hello-Salutations。我们知道这一点是因为它们有相同的parent_id,对应于Hello Span的span_id;
它们都是同一个跟踪的一部分。我们知道这一点,是因为它们有相同的trace_id。
我们得到了一些关于Span的有用信息,这些信息被存储为attributes。
我们甚至还有一些日志信息,以events的形式存储,为我们提供一些额外的信息。
把这些信息发送到可观测性(Observability)的后端,我们就可以认认真真、快速地完成故障排除了!
误区二:度量指标总是有用的
度量指标是有用的,是可以给我们提供关于CPU水平和完成一个事务所需时间的信息。但是,正如我们在日志中看到的,
没有上下文的度量指标不会给我们带来可观测性。
甚至有人写道:"在可观察性的世界里,我们正在处理未知的未知数,因此我们不知道会度量什么指标。这意味着......再见, 度量!"那怎样可以带来可观测性?
将
度量指标
与
跟踪
联系起来
。在某些情况下,我们可以从
跟踪
中推导出度量指标,如可以从跟踪中得出一个服务的响应时间指标。但有时不能这样做,如不能从跟踪中得出虚拟机(VM)的相关指标——CPU和内存利用率。但是,我们
可以通过一个链接属性将它们(度量指标)与跟踪关联起来
。例如,如果我们把IP地址作为一个跨度属性来捕获,那么具有给定IP地址的虚拟机就可以与跟踪相关联。说到度量指标,
要小心度量指标仪表板(dashboard)的弊端
。众所周知,许多公司喜欢在办公室的巨大显示屏上骄傲地展示仪表板,作为很花哨的指挥中心的一部分。有些IT公司喜欢用仪表盘来观察CPU利用率、磁盘利用率、内存利用率、每小时事务数量等。这很好,但谁愿意整天盯着仪表盘、等待故障的发生?这些是可操作的吗?这个仪表盘上到底有什么?上面那些指标项相关吗?当初设计和创建这个仪表盘的人现在还在公司吗?他可能离开公司了,那就更糟糕。
一个比
度量指标仪表板
更好的选择是使用SLOs
(见文章开头术语)
,因为
SLOs是可操作的。例如,假设有一个SLO,其中规定服务X的响应时间必须低于某个阈值的95%。如果服务没有达到SLO,就会触发警报,通过企业微信、电话、短信或其他方式通知,告诉值班工程师:系统没有在预期的参数内表现出来,你必须仔细检查一下情况。这就需要他去看这些指标,当然,这些指标与问题的追踪是相关联的。
日志和度量指标是否足够?
如上述讨论,日志本身并不足够好,因为它们缺乏背景/上下文。我们还了解到,度量指标本身也不足够好,因为它们也缺乏上下文。向APM工具发送日志和度量指标并不能神奇地给我们提供上下文。因此:
日志 + 指标 != 可观测性
但是,如果日志是与跟踪(traces)联系在一起的(例如,作为跨度事件),而且度量指标与跟踪相连(例如,从跟踪中推导出度量指标,或者通过链接属性将它们关联起来)。这样,我们就能看到系统的全貌。
在这种情况下,我们可以说跟踪(traces)是建立可观测性的基础,所以:
痕迹(日志 + 度量)== 可观测性
总之,traces应该是遥测
(telemetry)
数据的基础。
参考:
ACTS:如何让缺陷无处藏身?
(可测试性=可控性+可观测性)
十年磨一剑:蚂蚁集团可观测性平台 AntMonitor 揭秘
一文读懂:最近流行的可观察性
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
三尺非寒
金牌会员
这个人很懒什么都没写!
楼主热帖
Java多线程超级详解(只看这篇就够了) ...
微信小程序--点餐系统(本地服务器+源 ...
Centos7安装Mysql5.7(超详细版) ...
GPRS与4G网络:技术差异与应用选择 ...
Yarn平滑下线节点(Graceful Decommiss ...
公司入职一个阿里大佬,把 Spring Boot ...
小白也可以轻松破解被加密的ZIP口令啦 ...
环形缓冲区 Ring Buffer 的实现 ...
计算机网络-IP地址
day01-项目介绍与环境搭建
标签云
挺好的
服务器
快速回复
返回顶部
返回列表