Close

DevOps 监控

提高交付渠道每个阶段的意识

Krishna Sai 头像
Krishna Sai

IT 解决方案工程主管


借助 DevOps,我们期望能缩短开发时间,定期进行测试,更频繁地进行发布,同时提高质量和降低成本。为了帮助实现这一目标,DevOps 监控工具可在从规划、开发、集成和测试、部署到运维的整个开发生命周期提供自动化、扩展的衡量性能和可见性。

现代软件开发生命周期比以往任何时候都短,而且多个开发和测试阶段会同时进行。DevOps 于是应运而生,从执行开发、测试和运营职能的孤立团队转变为负责执行所有职能并遵循“谁构建,谁运行”(YBIYRI) 原则的统一团队。

随着频繁的代码变更变得司空见惯,开发团队需要 DevOps 监控功能,以提供全面、实时的生产环境视图。

什么是 DevOps 监控?


监控与可观察性示意图

DevOps 监控包括监控从规划、开发、集成和测试、部署到运营的整个开发流程。它涉及生产环境中应用、服务和基础架构状态的完整实时视图。实时数据流、历史回放和可视化等功能是应用和服务监控的关键组成部分。

互联圆环图标
查看解决方案

简化事件管理和响应

工具图标
相关资料

了解有关 DevOps 工具的更多信息

DevOps 监控允许团队迅速、自动地对客户体验中的任何降级做出响应。更重要的是,它允许团队“左移”至开发的早期阶段,并最大程度地减少具有破坏性的生产变更。例如:更好地使用软件来检测和响应错误,可以通过待命手动进行,也可以在任何可能的情况下自动进行。

DevOps 监控功能与可观察性


当您将无限循环的左侧视为产品侧,将右侧视为运营侧时,将新功能推入生产环境的产品经理就会想要了解项目如何分解为任务和用户故事。项目左侧的开发人员需要了解如何将功能转移到生产中,包括项目工作单、用户故事和依赖关系。如果开发人员坚持“谁构建,谁运行”的 DevOps 原则,那么他们就会对事件补救措施感兴趣。

转向生命周期的运营侧时,站点可靠性工程师需要了解可以衡量和监控的服务,以便在出现问题时解决问题。如果您没有将所有这些流程关联在一起的 DevOps 工具链,那么您将面对一个混乱且脱节的环境。如果您有一个无缝集成的工具链,那么您就可以更好地了解正在发生的情况。

DevOps 循环图

DevOps 监控的重要性


DevOps 方法可将持续监控扩展到预备、测试甚至开发环境中。造成这种情况的原因有很多。

频繁的代码变更需要可见性

持续集成和部署带来的频繁的代码变更加快了变更的步伐,使生产环境变得越来越复杂。随着微服务和微前端进入现代云原生环境,生产环境中运行着成百上千种不同的工作负载,每种工作负载在规模、延迟、冗余和安全性方面都有不同的操作要求。

这推动了对更高可见性的需求。团队不仅需要检测和响应降级的客户体验,而且需要分秒必争地进行。

自动协作

DevOps 暗含在开发、运营和业务职能团队之间加强协作的要求。但是,工具之间缺乏集成可能会阻碍协作,从而导致与不同团队进行协调的挑战,这是我们从 Atlassian DevOps 调查所获得的一个关键要点。

您可以通过在编辑器中获取开发管道的完整视图等实践来实现协作自动化。同时,设置用于监听提交或拉取请求的自动化规则,然后更新相关 Jira 事务的状态,并向团队的 Slack 通道发送消息。此外,还可以利用可提供扫描、测试和分析报告的洞察信息

自动协作屏幕截图

实验

在个性化和经过优化的转化漏斗的推动下,需要优化产品以响应客户需求,从而导致需要不断进行实验。生产环境可以运行数百个实验和功能标记,这使得监控系统很难传达体验降级的原因。

对始终在线服务和应用不断增长的需求,以及严格的 SLA 承诺,可能会增加应用的漏洞。开发团队需要确保他们定义了服务级别目标 (SLO) 和服务级别指标 (SLI),并按照这些目标和指标进行监控和操作。

变更管理

由于大多数生产中断都是由变更引起的,因此变更管理至关重要,尤其是对于任务关键型应用,例如:金融和医疗保健行业的应用。不仅需要确定与变更相关的风险,而且需要根据变更风险自动执行审批流程。

处理这些复杂问题需要一个全面的探知和监控策略。这需要定义和实施监控实践,并拥有一套对开发流程至关重要的丰富、灵活且先进的监控工具。

相关系统监控

分布式系统变得越来越普遍,通常由许多较小的跨公司服务组成。如今,团队不仅需要监控自己构建的系统,还需要监控和管理相关系统的性能和可用性。Amazon Web Services (AWS) 提供超过 175 种产品和服务,包括计算、存储、联网、数据库、分析、部署、管理、移动和开发人员工具。如果您在 AWS 上构建应用,则需要确保选择满足应用需求的服务。您还需要使用相关工具和策略以分散的方式跟踪错误,并处理相关系统的故障。

DevOps 监控的主要功能


为了与 DevOps 传统保持一致,制定和实施监控策略还需要关注核心实践和工具集。

左移测试

在生命周期早期执行的左移测试有助于提高质量、缩短测试周期以及减少错误。对于 DevOps 团队来说,扩展左移测试实践以监控预生产环境的运行状况至关重要。此举可以确保尽早地频繁实施监控,以保持生产过程的连续性以及监控警报的质量。测试和监控应协同工作,早期监控有助于通过关键用户旅程和交易来评估应用的性能。这也有助于在生产部署之前确定性能和可用性偏差。

警报与事件管理

在云原生环境中,事件与代码中的缺陷一样都是不可避免的事实。这些事件包括硬件和网络故障、错误配置、资源耗尽、数据不一致和软件缺陷。DevOps 团队应直面事件,并配备高质量的监控器来响应这些事件。

有助于解决此问题的部分最佳实践如下:

  • 建立协作文化,在开发过程中使用监控功能以及特性/功能测试和自动化测试
  • 在开发过程中,在代码中构建适当的高质量警报,以最大限度地缩短平均检测时间 (MTTD) 和平均隔离时间 (MTTI)
  • 构建监视器以确保相关服务按预期运行
  • 分配时间来构建所需的仪表板,并为所有团队成员提供仪表板使用培训
  • 为该服务规划“战争游戏”,以确保监控按预期运行,并确定缺失的监视器
  • 在冲刺期间,计划关闭先前事件审查中的操作,特别是与构建缺失的监视器和自动化功能相关的操作
  • 构建安全检测器(升级/补丁/滚动凭证)
  • 通过确定对检测到的警报的响应的自动化功能,培养“测量和监控一切”的思维方式

DevOps 监控工具


与 DevOps/YBIYRI 文化保持一致的高级工具是对一系列正常状态监控实践的补充。除了众所周知的代码存储库、IDE、调试器、缺陷跟踪、持续集成工具和部署工具等开发人员工具之外,还需要注意识别和实现监控工具。

单一管理界面可在生产和预备过程中提供各种应用、服务和基础架构依赖关系的全面视图。这样就能够调配、提取、标记、查看和分析复杂分布式环境的运行状况。例如,Atlassian 的内部 PaaS 工具 Micros 包括一个名为显微镜的工具,该工具以简洁、可发现的方式提供有关服务的所有信息。

单一管理界面屏幕截图

除了基本的系统指标(如 CPU 和内存利用率)之外,应用性能监控对于确保特定应用的性能指标(例如:页面加载时间、下游服务的延迟或转换)受到监控至关重要。SignalFX 和 NewRelic 等工具非常适合实时观察指标数据。

在开发过程中实施不同类型的监视器,包括针对错误、交易、合成、心跳、警报、基础架构、容量和安全性的监控。确保每个成员都接受过这些领域的培训。这些监视器通常特定于应用,且需根据每个应用的要求来实现。例如,我们的 Opsgenie 开发团队实施了合成监视器。这些监视器会创建警报或事件,并检查警报流程是否按预期执行(即集成、路由和策略是否正常运行)。我们还为基础架构依赖项实施合成监控,定期验证各种 AWS 服务的功能。

警报和事件管理系统必须与团队的工具(例如:日志管理、崩溃报告等)无缝集成,以便自然地适应团队的发展和运营节奏。工具应以最低的延迟将生成的重要警报发送至您的首选通知渠道。它还包括对警报进行分组以筛选大量警报的功能,尤其是在一个错误或故障生成多个警报时。Atlassian 不仅将 Opsgenie 作为附带这些功能的产品提供给客户,而且还在内部使用它,以确保我们拥有与开发实践集成的强大、灵活且可靠的警报和事件管理系统。

总之...


在采用 DevOps 的同时,还必须确保除了测试之外,还提前进行了监控,并通过实践和工具来实现我们的承诺:将变更快速、高质量地传入生产环节。

有关更多信息,请查阅 Atlassian 关于 DevOps事件管理变更管理的其他资源。

Krishna Sai
Krishna Sai

Krishna Sai 是 Atlassian 的 IT 解决方案工程主管。20 多年来,他在多家初创公司和企业(包括 Atlassian、Groupon 和 Polycom)担任工程/技术领导者职务。他住在印度班加罗尔,热衷于构建有助于提升团队协作的产品。


分享这篇文章
下一个主题

推荐阅读

将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。

Devops 示意图

DevOps 社区

Devops 示意图

DevOps 学习路径

地图插图

免费试用

注册以获取我们的 DevOps 新闻资讯

Thank you for signing up