博客/社区

可观察性策略是有效的,也有无效的

2022年6月2日11分钟

创建一个可观察性策略很像玩乐高积木:它需要小的积木来创建一个更大的图片,但最轻微的错误可能会破坏整个构建-通常你在过程中很晚才意识到这一点,不得不拆除和修复霍格沃茨城堡你花了很多时间创建的基础设施。

在最新一集《格拉夫纳的大帐篷》——我们的新的播客关于可观察性的人、社区、技术和工具——主持人马特·赖尔和马特·托巴克采访了一位对可观察性和乐高都很了解的专家:乐高集团首席工程师纳亚娜·谢蒂。

请听我们的节目“野外的可观察性,以了解更多关于组织如何不能再将可观察性作为事后考虑,以及一些有效(和不那么有效)的策略,这些策略将帮助您为可观察性的成功做好准备。

注:本文字记录为篇幅和清晰度进行了编辑。

可观察性策略#1:胡萝卜加大棒的方法

Nayana Shetty:多年来,我一直在开发微服务的团队中工作。当你扩大规模并拥有数百个微服务时,你如何使它们变得可靠并保持它们的可靠性?这正是我感兴趣的。我是在《金融时报》工作在那里我们有数百个微服务,现在我已经转到乐高集团,我们正在经历大规模的数字化转型。我们想要构建数百个微服务,所以我们现在应该关心可靠性吗?或者我们能想象10年后我们有了这些微服务吗?

垫黑麦:这曾经是一种事后的想法,不是吗?我想这就是为什么SRE是sorry的缩写,对吧?

Nayana:(笑)这是看问题的一种方式!对不起,我不明白为什么人们不把网站可靠性放在第一位。或者抱歉,我不明白为什么人们会以这种方式来构建它,它是半坏的,或者他们没有考虑到这个产品的未来。如果你朝那个方向走,每隔几个月你就要重新发明一次轮子。所以,抱歉,这可能是看待它的一种方式。

马特·Toback:就我个人而言,我很高兴Nayana来到这里,加入我们,因为我们在2018年第一次在阿姆斯特丹的一个阁楼里见面,这么说一点都不奇怪,对吧?

Nayana:我们讲了很多关于监控的内容:Grafana, Graphite,所有这些东西。

马特:我记得!你在休息室里谈论你对《金融时报》的打算,这让我很吃惊。感觉就像你继续在你的旅程中自然前进。当你回想那时你是如何看待这个可观察的世界的?

“善待未来的自己。怎样才能让你未来的生活更轻松呢?今天,当你在建造任何东西的时候,想想这一点。”
- Nayana Shetty

Nayana:那时,我们正在调查。《金融时报》有很多监控工具。我所在的团队为其他团队提供监控服务。我的脑子都快疯了,一个四五个工程师的团队怎么能支持这些二三十多个都需要监控的工程团队呢。他们使用的工具从Nagios到Zabbix,还有一些Graphite。我想当时关于普罗米修斯的装置作品很少。我们如何把所有这些不同的用例结合在一起,我们如何把它们放在一个可以一起工作的平台上?那时候我很担心,三四年后,回头看……

马特:你现在还担心吗?(笑)

Nayana:我已经向前看了,所以我不那么担心英国《金融时报》的监控系统了!但我仍然担心乐高集团存在同样的问题,我们在整个组织中使用了不同的监控工具。我们怎么把他们都聚集在一起?我们如何讲述一个每个人都能理解的故事,而不是每个团队都试图解决同一个问题?所以还是很相似的。

垫:你之前说的一些话很突出:你为什么要这样做?如果你用不同的方式建造它就好了?我们现在的处境会好得多。所以这有点像…

马特:只要你做对了。你是这个意思吗?

垫:是的,但这就是问题所在:我们什么时候开始关注可观察性?我们应该什么时候开始担心我们将如何操作它?

Nayana:我认为这与我的职业生涯有关。所以我从测试工程师做起,只做一些手动测试,然后开始做更多的QA工作。在过去的几年里,我已经在很多组织中看到了这种转变,他们已经转向左移[可观察性],尽早测试,尽可能小的发布,以及持续的迭代。

我经常引用的一句话是善待未来的自己。比如,如何让你未来的生活更轻松?所以今天当你在建造任何东西的时候,想想这一点。如果你正在开发一个新产品:想想你是否一定要开发它?或者你可以看看市场上有什么并重复使用吗?如果它是一个不可微分的东西,那为什么要建造它呢?如果这是一件与众不同的事情,是的,全身心地投入进去。但当你这样做的时候,一定要考虑到产品的可持续性。而且不只是今天,顾客会得到什么。

我经常在团队中使用这种胡萝卜加大棒的方法来说明,从前面考虑监视和可观察性可以获得哪些好处。通常情况下,如果你以正确的方式构建它,那么你实际上可以忘记你的系统,因为它们会照顾自己。大棒方法通常是,如果你没有这样做,那么你就必须让你的系统更容易被观察到,并在它启动和运行后保持它的持续性。

垫:是的,你知道,我会善待未来的自己,但我太忙了,要处理过去的自己留给我的所有事情……这就是问题所在,如果你想想它将如何发展,它将在哪里运行,越早越好,不是吗?

Nayana是的,你在修理昨天的东西。如果你不解决它,留下一些好处,那么明天,你就是在解决今天的问题。所以你陷入了一个恶性循环。为了摆脱同样的恶性循环,你有时需要退后一步,付出额外的努力。

可观察性策略#2:为失败而设计

垫:提前考虑[你的可观察性策略]有点像你如何设计失败。你知道,在一个完美的世界里,所有的消息都在你的系统中完美地流动,没有任何问题。但实际上,情况要复杂得多。事情会失败,事情会在你设计的时候预料到它会失败。我写Go代码,Go有一个显式的错误处理功能。有些值只是作为函数的第二个参数返回,这让很多人感到沮丧,因为他们习惯了异常或一些自动的东西。但它迫使你思考如果这个东西失败了会发生什么。这是一门很好的学科。

Nayana:我认为认为你的系统不会失败是一个神话。总是以这样一种方式构建您的系统,它将失败。如果没有,那你就有问题了。所以一定要把这些检查添加到位。因此,当它失败时,它可以顺利恢复。

垫:我知道一些公司将此作为适当测试方法的一部分。他们真的会故意打碎东西。你知道,这是他们最关心的问题。我不知道,人们认为,“我很好?”我要写这个,它会很棒的。”

马特:老实说,这是不可能的,对吧?就像我们都知道并经历了足够多的(失败)。

垫:我不知道。当我在写代码时,如果它不能工作,我很快就会感到震惊,“处理器不能工作,或者物理发生了变化。”我要去学物理了之前这是我的错。但结果是,我只是在不该写的地方写了个大写字母。

Nayana:我所在的团队会进行结对和群殴之类的活动。它们有助于检查人们的自我,让他们觉得“我不是最好的”。当两个人谈论它时,我认为这确实有助于他们思考,好吧,这就是我们生活的现实,[失败]是你需要考虑的。

“我认为认为你的系统不会失败是一个神话。始终以这样一种方式构建您的系统失败。如果没有,那你就有问题了。”
- - - - - -Nayana谢蒂

可观察性策略#3:运行演练(但不是在凌晨3点)

垫:我们是本着世界上最好的意图来做这件事的,但你有没有看到人们误解了什么?还是常见的错误,你见过的常见的“陷阱”?

Nayana:我所看到的和我一直在挣扎的事情是……很难正确地进行与网络相关的监控。我曾经看到自己的仪表盘和警报设置错误,我想知道为什么每次发生不应该发生的事情时,它就会响。因此,我认为,在进行过程中,可以尝试并不断修补监视和警报,这可能是团队应该意识到的事情。并不是说你建了一次,它就永远存在了。但是,在您的监视过程中应该发生持续的演变。就像你的特征集如何经历一个周期一样,你也必须对事物的可观察性方面做同样的事情。

马特:麦特,我也能回答吗?

垫:呃,让我看看…不。

马特:哦,拜托!

垫:拜托,我很想听听你的想法!

马特:我认为常见的问题是忘记了你需要交付一些人们可以轻松采用的东西。我想的是汽车零件——或者乐高玩具——但这就像放下一堆汽车零件,然后说:“好了!”你会说,“我只想开车。你一点也没帮到我。”而且,你知道,你可以叫一辆Lyft,这就是隐喻的打破之处……但这只是放下一组可以工作的部件,期望用户完成最后一英里。

垫:有助于实现这一目标的理念是:你构建它,你运行它。我们不会把这个东西扔到墙外让别人来操作,我知道现在还有很多人这么做。这是一种脱节。当您自己在运行它时,您就是该数据的客户。所以这有点像你在构建开发工具时吃狗粮软件。我们在Grafana经常吃狗粮。我们会在内部使用很多工具;这就是为什么它们这么好,坦白地说,因为这不是我们想象的用户。我们是它的使用者,我认为这有很大的不同。

“你的监控应该会有一个持续的演变。就像你的特征集如何经历一个周期一样,你也必须对事物的可观察性方面做同样的事情。”
- Nayana Shetty

Nayana:我听过一些人说的一个评论是,以这样一种方式构建代码,您可以在凌晨3点调试它。这并不意味着你必须每天都做,但如果它在你没有完全集中注意力的时候坏了,你仍然可以很容易地完成它。

垫:这个观点很好。这就引出了我的下一个问题,关于演习。我们是否应该在凌晨3点进行训练,体验一下那是什么感觉?

Nayana:三点可能是在取笑人们....

马特:人们做演习吗?

Nayana:我亲眼见过。我认为演习的环境是非常人为的。我在英国《金融时报》工作时,我们做的一件事是,我们进行了这些事故演习。所以基本上你模拟一个事件,然后和团队一起,你如何着手找出问题在哪里?所以你从哪一个警报开始,然后看轨迹,然后看对数是什么。就像,你经历了整个循环。有很多人不太喜欢这个,因为这是一个人工环境。人们觉得那不是现实。那么为什么要这么做呢?

垫:因为你没有在凌晨3点做。

想看最新的剧集吗?你现在可以在上面订阅“格拉夫纳的大帐篷”播客苹果播客而且Spotify