4个可观测性最佳实践

举报
kaliarch 发表于 2022/11/26 14:04:26 2022/11/26
【摘要】 CI/CD可观测性的4个维度可观察性是DevOps团队最重要的特性——让他们使用系统的外部输出来推断其内部状态。可观察的CI/CD管道使得在构建过程中主动监控任何问题或跟踪错误变得更加容易。理想情况下,可观察性是一个持续的过程,从CI/CD管道开始,并在应用程序的整个生命周期中持续。如果没有这种级别的可见性,DevOps团队就很难(如果不是不可能的话)理解出现问题的根本原因。在这篇博文中,...

CI/CD可观测性的4个维度

可观察性是DevOps团队最重要的特性——让他们使用系统的外部输出来推断其内部状态。可观察的CI/CD管道使得在构建过程中主动监控任何问题或跟踪错误变得更加容易。

理想情况下,可观察性是一个持续的过程,从CI/CD管道开始,并在应用程序的整个生命周期中持续。如果没有这种级别的可见性,DevOps团队就很难(如果不是不可能的话)理解出现问题的根本原因。

在这篇博文中,我们将讨论您的团队可以用于完全可观察的CI/CD管道的四种技术——这样您就可以实现更快的修复并提高代码可信度。

1.优化日志

使用日志数据使DevOps团队能够更好地了解系统和应用程序。日志可以提供关键的故障排除见解,准确显示系统是如何出现故障的,或者错误在应用程序中发生的频率。如果实现得当,日志记录可以改进应用程序状态监视。

问题是,日志通常写得效率低下。开发人员选择何时以及如何记录日志,这可能会导致日志记录不足、过多的日志记录太嘈杂而没有用,或者日志无法添加足够的上下文来使信息具有可操作性。日志数据膨胀会迅速增加分析所需的时间和成本,以及与无关数据相关的其他挑战。
通过优化和集中日志数据,DevOps团队可以确定他们需要跟踪的应用关键指标的优先级。因此,请确保您的日志是结构化的和描述性的,只跟踪必要的细节:

  • 唯一用户ID
  • 会话ID
  • 时间戳
  • 资源使用

将这些日志组织起来,并在一个集中的位置可用,以便它们可以关联并链接到用户或会话,从而提供系统范围的见解。

2.DevOps文化

虽然组织文化可能看起来是无形的,但它对于在整个应用程序中实现高水平的可观察性是至关重要的。一些战略计划只有在员工支持该想法并围绕实现该想法所需的流程保持一致时才能实现。
考虑DevOps文化转型,以增加运营和开发团队之间的协作和沟通。实现这一点意味着您必须:

考虑DevOps文化转型,以增加运营和开发团队之间的协作和沟通。实现这一点意味着您必须:

  • 承担端到端的责任
  • 建立协作环境
  • 激发失败的意愿
  • 注重持续改进
  • 关注客户需求
  • 尽可能自动化

每个软件团队都应该拥有自己的整个生命周期,从头到尾都有可调试的代码,并用有用的度量、KPI和日志记录包装代码。这样,应用程序将具有更大的整体可观察性,并且操作团队将拥有预测故障或在故障发生时快速检测故障所需的一切。
在部署代码时,不可预测性是常态,但是DevOps文化允许您为任何发生的事情做好准备。无论出现什么意外的应用程序错误,当每个人都了解您组织的共同目标时,都可以有效地解决这些错误,也就是说,知道这些问题的答案:

  • 我们如何决定失败和成功?
  • 评估成功率和失败率需要什么指标?
  • 优化和改进最重要的是什么?

没有组织的其他部分,软件开发人员和工程师无法实现可观察性。建立一种转变流程、心态和日常实践的DevOps文化是一项集体责任。
一旦创建和维持,DevOps文化可以提高应用程序的性能和可观察性,简化工作流程,促进协作,并提高生产力。

3.生产中的可观察性

无论你创建的软件有多优秀,都不可避免地会遗漏一些东西或者出现新的问题。甚至亚马逊的首席技术官沃纳·沃格尔斯也说,“一切都会失败,总是如此。”应用程序依赖于存储、队列和其他关键组件。有些错误直到应用程序部署到生产环境中后才会发生。
传统的监控和测试并不总是有助于解决新的错误或间歇性问题。如果您的应用程序和系统在构建时考虑了可观察性,您的团队将能够更有效地预测问题。
生产可观察性取决于两件事:被动监控和警报。

3.1 被动监测

被动监视器从各个网络位置收集用户数据,监视数据流并收集有关使用模式的统计数据。这对于全面理解效率、用户习惯和其他细节至关重要,这些细节使软件团队能够直接用真实数据跟踪用户体验。

3.2 告警

警报可以配置为在应用程序的行为超出预定义参数时发送通知。它检测系统中的重要事件,并提醒责任方——通常通过电子邮件、短信甚至Slack。警报系统确保开发人员知道什么时候需要修复,这样他们就可以专注于其他任务。

4.生产前可观测性

开发人员总是希望他们的代码被部署到生产环境中,功能齐全,没有错误。这并不总是发生,但是增加部署前的可观察性将减少最终可能在生产中发生的错误。
通常,注意力集中在生产系统上,其中停机和错误需要更紧急的响应。这意味着DevOps团队错过了从开发一开始就让系统可观察的机会。生产前可观察性有助于团队在代码进入生产之前修复潜在的问题——并且可以在应用程序的整个生命周期中带来持久的好处。通过增加生产前的可观察性,团队可以更好地准备计划架构变更,决定构建什么,确定如何发布特性,以及优化代码的编写方式。
解决在生产环境之外发现的问题的一种方法是通过测试监控,这为开发人员提供了另一层安全性。像Foresight这样的测试监控工具使得在将代码部署到生产环境中之前调试测试成为可能。它使您能够对错误测试的路线进行故障排除,而无需在本地重现错误。
无论是在云原生环境、Kubernetes、Lambda、内部部署还是各种其他部署中,开发人员都可以有远见地监控他们的CI管道,并深入了解错误或延迟。

结论

上面讨论的四种策略都可以以自己的方式增加可观察性,但预生产是最有效的方法。它允许开发运维团队在问题影响用户之前发现并修复问题,同时修复成本仍然很低。通过日志监控工具,通过将安全性、可见性和调试与您的CI/CD工作流集成,提供端到端的可观察性和深刻的洞察力。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。