与本西格尔曼一起重新思考可观测性

商业2020-07-23 13:54:51
导读 2018年12月,在美国西雅图举行的KubeCon NA大会上,本·西格尔曼(Ben Sigelman)提出了“

2018年12月,在美国西雅图举行的KubeCon NA大会上,本·西格尔曼(Ben Sigelman)提出了“三个支柱,零答案:我们需要重新思考可观测性”,并认为许多组织可能需要重新思考它们的度量、日志记录和分布式跟踪方法。设置与可观察性相关的业务级目标和需求非常重要,因为要清楚任何工具解决方案的优缺点和权衡。可观察性工具应该能够帮助检测对用户体验有影响的问题,并且还应该帮助细化相关问题或根本原因潜伏的搜索空间。

LightStep首席执行官、前谷歌(googler)员工西格尔曼在演讲一开始就对可观察性的传统智慧提出了批评。尽管目前人们普遍认为观察基于微服务的系统具有挑战性,但许多人认为海湾地区的“独角兽”组织,如谷歌和Facebook,已经解决了这个问题。从他们公开讨论的方法和解决方案中,一个被称为“可观察性三支柱”的概念出现了,它包括:度量、日志记录和分布式跟踪。西格尔曼若有所思地说,普遍的看法是,如果这个概念的实施对这些组织有效,那么其他组织也将受益于采用这种方法。然而,工程师可能犯的一个常见错误是单独查看每个支柱,然后简单地评估和实现单独的解决方案来解决每个支柱。相反,必须采取全面的办法。

为了应对这一挑战,在过去几年中出现了许多开放源码和商业的可观察性工具。每个工具通常优先考虑一种方法而不是另一种方法,并可能强调其中一两个支柱而不是其他支柱。因此,每个解决方案都有相关的优缺点,我们在评估工具时需要注意这一点。理想情况下,我们需要某种记分卡,使我们能够有效地评估工具,并选择最适合我们需求的工具。西格尔曼提出,与他在谷歌工作的时间相比,工具的创建者或维护者通常不愿意在会议上讨论相关的弱点:

“在谷歌,没有人试图向任何人推销任何东西,所以你愿意用一项服务来代表你的缺陷。你会建造一些东西,然后说“这就是它的优点”和“这就是它的缺点”[…]每个系统都有权衡"

接下来,在谈话中,每一个支柱的“致命缺陷”都被探讨了。与度量标准相关的一个大挑战是如何处理高基数(Honeycomb的首席执行官Charity major也在包括InfoQ在内的多篇文章中讨论过这个问题)。图形化度量标准通常提供可见性,允许人们理解出了什么问题,然后通过相关的metdata标记(例如)深入挖掘数据,可以进一步探索相关的度量标准。用户ID,事务ID,地理位置等。但是,许多这些标记具有较高的基数,这对有效地查询数据提出了挑战。

日志记录的主要挑战是收集的数据量。在基于微服务体系结构的系统中,日志记录的数量通常是事务速率下服务数量的倍数。通过进一步将总事务数乘以联网和存储成本,然后再乘以所需的保留周数,就可以计算出维护此数据查询能力的总成本。对于大规模的系统,这种成本可能是无法承受的。

关于分布式跟踪,这里的一个核心挑战是最小化收集期间的开销。在跟踪上创建跟踪、传播跟踪、添加和存储附加的元数据(“包袱”)会影响被检测的应用程序以及相关的网络和存储设备。缓解这种情况的典型方法是对跟踪进行取样,例如仅插装千分之一的请求。

西格尔曼在演讲中改变了方向,介绍了演讲的第二部分:“观察能力的新记分卡”。他首先给出了几个定义。首先,服务水平指示器(SLI)是服务消费者关心的“健康”的某个方面的指示器。其次,我们用来改进特殊语言环境的心智模型由目标和活动组成:目标是我们的服务在消费者眼中的表现;活动是我们(作为经营者)为实现我们的目标而实际做的事情。

可观察性有两个基本目标:逐步改进SLI(可能在几天、几周、几个月的时间内对其进行优化)和快速恢复SLI(立即对事件做出反应)。具有可观测性的基本活动有两种:检测,即精确测量SLIs的能力;和细化,这是一种能力,减少搜索空间,为一个问题找到合理的解释。当前的工具通常擅长于检测,但是在细化方面仍然存在挑战。这在一定程度上是由于这样一个事实,即随着系统复杂性的增加——以及基于微服务的系统通常与添加更多服务相关——搜索空间呈几何级数增长。

西格尔曼认为,检测的记分卡应该包括“特异性、保真度和新鲜度”。特性是基数的成本(每标签值的$ cost),以及您可以有效度量的堆栈元素,例如来自移动/web平台、托管服务、Kafka或Cassandra等“黑盒OSS基础”的度量。保真度包括使用正确的统计方法的能力,例如计算全局p95或p99,以及高度量的收集频率,以检测间歇性问题,例如以秒为单位的采样频率。新鲜度是对实时采集的数据进行分析的滞后,以秒为单位。

改进的记分卡包括“识别方差和解释方差”的性质。识别差异进一步细分为:基数(每个标记值的$ cost)、健壮的统计数据,即使用直方图等可视化方法来“超越百分位数”并允许细化延迟的能力;和保留期限(时间段),使合理的查询能够识别“正常行为”随着时间的推移。解释差异包括使用正确的统计数据,例如,不要计算一系列p99值并对它们求平均值,而是在聚合结束时计算p99;以及“抑制微服务故障的信使”的能力,这是定位任何问题的来源的能力,而不是定位由初始问题的级联导致的问题的位置。

结束谈话,Sigelman建议在设计自己的可观测性系统,你将不得不做出权衡,并表示,他认为你只能选择三个以下四个属性:高通量应用程序中观察,高聚合度(查询和细化),冗长的公制/日志数据保留窗口,和未取样的数据(通过可观测性工具)。

辛迪•斯里达兰(Cindy Sridharan)是几篇被高度引用的可观察性和监控博客文章的作者,她在Twitter上指出,这“类似于CAP定理,但适用于你的可观察性系统”。慈善专业的学生们在推特上回复说,最初的猜测“根本不符合事实”。你完全可以拥有这四种东西,你只是不能选择‘便宜’。”西格尔曼回答说:“我的一些同事也提出了同样的观点……“s/observability system/positive-ROI observability system/g”,这在本质上提供了修正,当他做出最初的四分之三的推测时,他指的是一个投资回报率(ROI)为正的可观察系统。

最后,西格尔曼表示,他认为跟踪数据通常是解决所讨论问题的最佳数据源,因为“它是日志数据的超集……],这对于抑制假设具有极高的价值”。

InfoQ在Sigelman的演讲之前与他进行了交谈,并讨论了他对当前微服务体系结构的采用情况和可观察性工具的状态的看法。他表示,微服务虽然并不适用于所有应用程序或组织,但“在大规模运营时,它绝对是解决某些问题子集的好方法”。他还回应了他谈话中的警告,即采用这种架构风格确实会带来新的挑战,特别是在可观察性方面。随着最近的大多数人开始意识到微服务的概念,越来越多的组织选择构建基于微服务的系统,这就是为什么我们看到下一代监控和可观察性工具的出现。

当被问及他对服务图可视化价值的看法时,他的回答是,对整个微服务图的描述可能只对新员工刚开始工作时有用,而生成一个大型系统的图也可能是不切实际的。相反,更有价值的是可视化该图的子集,这些子集突出了感兴趣的领域,并叠加了关于潜在问题的信息。

免责声明:本文由用户上传,如有侵权请联系删除!