在 O’Reilly 的一份新报告“Chaos Engineering Observability: Bringing Chaos Experiments into System Observability”中,Russ Miles 探究了为什么他认为可观测性和混沌工程这两个主题是“密切相关”的。他认为,随着工程师们深入开展混沌实验,他们会提出很多有关系统底层的问题。
在 O’Reilly 最新的一份报告“Chaos Engineering Observability: Bringing Chaos Experiments into System Observability”中,Russ Miles 探究了为什么他认为可观测性和混沌工程这两个主题是“密切相关”的。他认为,随着工程师们深入开展混沌实验,他们会提出很多有关系统底层的问题。观察并理解正在运行的系统是实现这一目标的一个重要的先决条件。因此,报告提供了一个简短的指南,用于收集混沌实验的指标、日志和跟踪信息。
ChaosIQ.io CEO Miles 与 Humio 团队合作,一起产出了这份 32 页的报告。报告主题包括:混沌工程信号(探索如何获得实验进展通知,以及如何针对相关事件采取行动,以便更好地控制实验)、混沌实验日志(需要一种有效的集中式日志解决方案)、跟踪混沌实验(例如发送OpenTracing数据,以便“拼凑出关键的答案,比如发生了什么、事件发生的顺序,以及是谁挑起了整个事件”)。
InfoQ 联系了 Humio 的 CEO Geeta Schmidt,从她那里了解了 Humio 团队如何看待他们与使用日志管理平台和混沌工程所做的工作之间的关系。
借助混沌实验,开发人员、安全团队和运营管理人员可以以故障和威胁注入的形式进行有意的实验,以此来细化、重新校准对系统的理解。对系统的进一步理解为客户和用户带来了更好的体验,并改进了业务结果。
“混沌原则”的“混沌实践”一节中提到:“在一开始就定义’稳定状态’,作为系统的可测量输出,用以表明系统的正常行为”。Schmidt 认为,为了“检测系统何时是正常的,以及随着实验的进行它是如何偏离正常状态的”,发展观察系统的能力是非常重要的。她强调,在与 Humio 客户一起工作时,团队已经意识到,访问可定制的、细粒度的、接近实时的度量和日志可以更好地理解实验所带来的影响。
来自 Gremlin 的 SRE 负责人 Tammy Butow 在去年的伦敦 QCon 大会上发表了演讲。他认为,实现有效的混沌工程实践有三个主要先决条件:高严重性事件管理、监控和度量停机影响的能力。最初由 Netflix 赞助,并由 Casey Rosenthal、Lorin Hochstein、Aaron Blohowiak、Nora Jones 和 Ali Basiri 共同撰写的 O’Reilly 混沌工程报告对这个主题进行了广泛的描述,并讨论了识别出需要在实验期间进行观察的指标的重要性。
在最近发布的InfoQ混沌工程电子杂志中,Michael Kehoe 和 Aaron Rinehart 分别在“LinkedIn’s Waterbear: Influencing resilient applications”和“Using Chaos Engineering to Secure Distributed Systems”这两篇文章中讨论了观察故障注入实验和从可控实验结果中获得见解的必要性。Adaptive ability Labs 联合创始人 John Allspaw 表示,“可观测性”一词与之前的含义有所不同,而且与此相关的人为因素不应该被忽视。
InfoQ 最近与 Miles 讨论了混沌工程和可观测性的话题。
InfoQ:感谢你能够加入我们的讨论。如果团队是第一次接触混沌工程和可观测性,他们应该从哪里开始着手?
Russ Miles:可以从“混沌原则”开始。
在此基础上,我们建议使用混沌工具包,学习一些在线教程,然后着手创建自己的一些混沌实验。这样你就会开始质疑系统的可观测性,然后下一步可以参考“Distributed Systems Observability”和“Chaos Engineering”这两本书。
最后,你也可以加入一些很棒的社区,在社区中交换意见,获得免费的建议。可加入的社区有谷歌混沌社区、Gremlin 混沌工程社区 Slack 频道,以及我们的团队和社区 Slack 频道。
混沌工程是构建永不停机系统的一个令人兴奋的旅程。在前进的路上,这些社区可以帮助你,我们都认为混沌工程是一个关键的心态和纪律,可以帮助我们建立更强大、更有弹性、可靠和安全的系统。
InfoQ:在进行混沌实验之前,系统可观测性有多重要?
Miles:这个问题的关键词是“之前”。拥有良好的系统可观测性是非常重要的,但不管是否进行混沌工程实验,这个都很重要,因为它不只是一个先决条件。
混沌工程和可观测性这两者配合得很好。
在某些情况下,在进行混沌实验之前,你可能已经具备了一定的系统可观察性,这在通过混沌工程实验来诊断系统漏洞表面偏差时无疑是有帮助的。当然,在通进行混沌工程实验过程中,这将成为一种“强制性功能”,如果不存在更好的系统可观察性,它将会提出明显的要求。
因此,根据我们的经验,良好的系统可观测性并不是混沌工程的一个强有力的先决条件。更多的时候,在进行混沌实践时,对系统可观测性的需求将会凸显出来。随着时间的推移,这两种技术将会相互促进和加强。
有趣的是,这也是为什么混沌工程会成为其他非功能性或以运营为重点的系统改进的一个很好的“强制性功能”。混沌工程通常会使这种容易被遗忘或被降低优先级的关注点变得完全不可忽视,它帮助每个人意识到这些挑战的存在,并设计和实现系统健壮性和弹性策略来应对这些挑战。
简而言之,混沌工程使每个人都成为一个更好的系统所有者,而系统可观察性是一种几乎立即就能获得极大好处的能力。
InfoQ:混沌工程实践会面临什么特别的挑战吗?理解和观察混沌实验本身有多重要?
Miles:组织实践混沌工程失败的原因有很多。他们可能不理解这种理念,或者混沌工程师限制其他团队进行混沌实验。混沌工程做得不好很容易导致这种理念被拒绝。
ChaosIQ 团队相信,组织中的每个人最终都会加入实践混沌工程的行列。混沌工程并不是专属于少数人的技术,而是一种有用的理念,适用于所有拥有关键任务业务系统的人。这意味着即使对于中等规模的组织来说,也存在大规模的混沌工程挑战。从规模上看,混沌工程失败的几率增加了。
不管对于什么样的规模,将混沌工程实践当作一种惊喜是走向失败的原因之一。也就是说,在运行实验时,如果有人感到惊讶,那么这对每个人来说通常都是一个糟糕的时刻,因为这些大吃一惊的人通常会请求不要再运行实验。
有时候,用混沌实验来给团队一个惊喜也是有用的,比如说作为一个游戏日的一部分。为了探究团队如何应对动荡的环境,比如探究人员/实践/流程的弱点,你可能不会告诉团队接下来将会应用哪些条件,因此对他们来说可能是一个惊喜。然而,游戏日本身并不会令人感到意外,这一点很重要。
在执行混沌实验时,确保这些实验不应该让任何人感到惊讶。每个可能受到混沌实验影响的人都应该知道正在执行什么样的混沌实验、何时执行、针对什么执行以及为什么要执行这些实验。
混沌工具包和平台的实验格式以及可插拔混沌工程可观察性工具的组合使得这种跨团队和跨组织的可见性成为可能,从而避免了意外混沌的危险以及可能会出现的不良反应。
因此,在很多方面,无论团队的大小和混沌工程的能力如何,将混沌实验引入到整个系统的可观察性中对于避免这些陷阱来说都是至关重要的。混沌工程实验也是系统中的公民,它们应该是良好的公民,除了运行时系统的其他方面,它们的活动也需要一起被了解和观察。
Miles 的报告“Chaos Engineering Observability: Bringing Chaos Experiments into System Observability”可通过 Humio 网站下载,下载前需要进行注册。
查看英文原文:
https://www.infoq.com/news/2019/03/chaos-engineering-observability
评论