写点什么

大话 DevOps 监控,团队如何选择监控工具?

  • 2022 年 7 月 25 日
  • 本文字数:4715 字

    阅读完需:约 15 分钟

大话DevOps监控,团队如何选择监控工具?

Hi!我们是DevSecOps研发安全运营一体化解决方案提供商、Atlassian全球白金合作伙伴——龙智

。在过去的十多年间,传统软件研发模式发生巨变,从瀑布式开发到敏捷再到 DevOps,开发和运维之间曾经明确的界限正在慢慢变得模糊。

DevOps 由于能够促进开发、运维、测试等不同部门的沟通、协作与整合,正在悄然成为软件研发运营主流趋势。发展至今,DevOps 也结合了新的流程,比如持续集成和持续部署来快速交付价值。

如果您对 DevOps 还知之甚少,或是想要更深入地了解 DevOps 工具链,请不要错过本系列文章。龙智将从 DevOps 的概念、DevOps 工具链、CI 及工具对比、DevOps 监控、DevSecOps 五个方面入手,让您从起源开始,逐步深入了解 DevOps 这个已流行数十年的方法论。



借助 DevOps,⼈们期望能实现更快速的开发、更常态化的测试和更频繁的发布,同时还能提⾼产品质量和降低成本。为了帮助实现这⼀⽬标,DevOps 监控⼯具在整个开发生命周期(从计划制定、开发、集成、到测试、部署和运营)中提供执⾏流程的⾃动化、监测范围的扩展以及可视化。


如今的软件开发⽣命周期⽐以往任何时候都快,多个开发和测试阶段同时发⽣。这催⽣了 DevOps,使之前执⾏开发测试与运营管理彼此孤⽴的团队转化为了要执⾏所有功能并接受“⾃⼰构建,⾃⼰运营”(YBIYRI)的联合团队。


随着频繁的代码更迭变得司空⻅惯,开发团队需要 DevOps 监控,以提供对⽣产环境全⾯的实时的监管。


什么是 DevOps 监控?



DevOps 监控需要观测从计划制定、开发、集成到测试、部署和运营的整个开发过程。它涉及对⽣产环境中应⽤程序、服务及基础架构状态等⽅⽅⾯⾯进⾏全面的、实时的查看。其中实时采集、历史回放和可视化等功能是应⽤程序和服务监控的关键组件。


DevOps 监控使团队能快速、⾃动地响应任何引起客户好感度下降的问题。更重要的是,它允许团队“左移”到开发的早期阶段,并最⼤限度地减少会导致⽣产中断的变更。例如:对软件进⾏更好地检测和及时响应错误,既可以通过 “呼叫” ⼿动进⾏,也可以在可能的情况下⾃动进⾏。


DevOps 监控与可观测性


当您将⽆限循环的左侧视为产品开发⽅,将右侧视为运营⽅时,将新功能推⼊⽣产的产品经理会对项⽬如何分解为任务和⽤户故事感兴趣。项⽬左侧的开发⼈员需要了解如何将功能转移到⽣产环境中,包括项⽬工单、⽤户故事和各种依赖关系。如果开发⼈员坚持“⾃⼰构建,⾃已运营”的 DevOps 原则,他们也会对事件的补救措施感兴趣。


再来看⽣命周期的运营⽅⾯,保障站点可靠性的⼯程师需要了解那些可供评测和监控的服务。如果出现⼀个可以修复的问题,⽽您此时没有⼀个能将所有这些处理过程联系在⼀起的 DevOps⼯具链,那么就将⾯临⼀个杂乱、⽆关联的、混沌的环境。但如果您有⼀个集成良好的⼯具链,则可以更好地了解正在发⽣的事件。



DevOps 监控的重要性


DevOps⽅法将持续监控的对象扩展到模拟 (Staging)、测试 (Testing) 甚⾄开发 (Devlopment) 环境。这其中有多个原因。


频繁的代码更改需要可视化


持续集成和持续部署驱使着代码更迭的频率不断增加,这也使得⽣产环境变得越来越复杂。随着微服务和微前端的应⽤进⼊现在的云原⽣环境,在⽣产中会产⽣数百甚⾄上千种不同的服务的⼯作负载,每种⼯作负载对规模、延迟、冗余和安全性都有不同的环境要求。


这推动了对可视化更⾼的需求。团队不仅需要快速侦测到并响应存在客户体验下降的功能,还需要在限定时间内完成修复。


您可以以 Jira 为基础,来实现代码更改的可视化。Jira 云版很轻易就能对 Pipeline 过程可视化,在 Developer Dashboard 中的界面能直接看到 Bitbucket 数据。


如果您使用的是本地部署版的 Jira,可以将其与 Bitbucket 和 Bamboo 集成,达到在 Jira 中一览代码与部署状态的目的。集成后,您可以直接在 Jira 中查看正在处理的代码,查看 CI/CD 部署信息和预规划发布,以及可以在事务中实时查看开发状态更新信息。


协作⾃动化


DevOps 要求团队中的开发、运营和业务这些功能组之间实现更紧密的协作。然⽽,⼯具之间如果缺乏集成性就可能会阻碍此类协作,并在协调不同功能组时构成的挑战,这是 Atlassian DevOps 调研得出的⼀个关键结论。


您可以通过诸如在编辑器中内嵌开发 Pipeline 的完整视图等功能来实践⾃动化协作。还有就是,设置⾃动化规则⽤于侦听代码的提交或拉取请求,然后更新相关的 Jira 问题的状态并将消息发送给团队的 Slack Channel。还可以利⽤Insights 插件来提供扫描、测试和分析的报告。


Jira 作为 DevOps 中管理和监控整个 DevOps⽣命周期的⼯具,其 Server/DC 版的协作⾃动化是通过⼯作流的 Trigger 功能实现的,在构建和 CI/CD 过程中,Bitbucket,Fisheye/Crucible 等⼯具可以在提交,分⽀创建,代码评审等多个阶段实现 Jira⼯作流的⾃动化。



实验


在个性化和优化转换程序的推动下,为响应客户需求导致了需要进⾏⼤量的产品优化实验。⽣产环境可以运⾏数百个实验和功能标记,这使得监控系统很难准确传达导致⽤户好感度下降的原因。


对于永久在线服务和应⽤程序⽇益增⻓的需求,以及严格的 SLA 承诺可能会造成安全漏洞的增加。因此开发团队需要确保他们定义了监控和执⾏⽅⾯的服务⽔平⽬标 (SLO) 和服务⽔平指标 (SLI)。


变更管理


由于⼤多数⽣产系统的停机都是由变更引起的,因此变更管理⾄关重要,尤其是对于执⾏关键性任务的应⽤程序,例如⾦融和医疗保健⾏业的应⽤程序。需要确定与变更相关的⻛险,并且需要根据变更的⻛险⾃动化审批流程。


处理这些复杂性需要全⾯的了解和监管策略。这需要有定义和采纳监控的实践,并拥有⼀套能监控开发过程的丰富、灵活和先进的监控⼯具。


相关系统的监控


分布式系统已经变得越来越普及,它们通常是由许许多多跨公司的微服务组成。团队现在不仅需要监控他们构建的系统,还需要监控和管理相关系统的性能和可⽤性。Amazon Web Services (AWS) 提供超过 175 种产品和服务,包括计算、存储、⽹络、数据库、分析、部署、管理、移动和开发⼯具。如果您在 AWS 上构建应⽤程序,则需要确保选择适合您应⽤程序需求的服务。您还需要⼯具和策略来以分布式的⽅式跟踪错误以及处理相关的故障。


DevOps 监控的⼀些关键功能


为了与 DevOps 传统保持⼀致,开发和实施监控策略时还需要注重关键功能的实践和相应的⼯具。


左移测试


左移测试在⽣命周期早期执⾏有助于提⾼质量、缩短测试周期以及减少错误的产⽣。对于 DevOps 团队来说,扩展左移测试⼯作以监控那些预⽣产环境的运⾏状况,这点⾮常重要。这样就可以确保监控的尽早且经常性地实施,以保持⽣产的连续性,以及确保监控所发警报的质量。测试和监控应该⼀起进⾏,通过早期监控有助于透过关键⽤户的流程和处理来评估应⽤程序的⾏为能⼒。同时这也有助于在⽣产部署之前了解应⽤程序的性能和可⽤性⽅⾯的认知偏差。


在 Atlassian 的 DevOps 解决⽅案中,我们将过去在测试阶段才进⾏的部分监测左移到了构建阶段。例如,代码语法分析,静态测试,合规性检测等通过诸如 SonarQube for Bitbucket,WhiteSource for Bitbucket 等插件与这些外部⼯具相集成,实现 了构建阶段即完成这些⾮功能性测试的科⽬。


警报和事件管理


在云的原⽣世界⾥,事件就像代码中的错误那样⼤量存在于现实⽣活中。这些事件包括硬件和⽹络故障、配置错误、资源耗尽、数据不⼀致以及软件错误等等。DevOps 团队应该欣然接受这些事件并通过配备⾼品质的监控⼯具来应对。


⼀些有助于应对事件的最佳实践是:


  • 建⽴协作的⽂化,在开发过程中对特性/功能和⾃动化测试进⾏监控

  • 在开发过程中,在代码中内建适当的⾼品质的错误警报信息,以最⼤限度地减少平均检测时间 (MTTD) 和平均识别/隔离时间 (MTTI)

  • 为构建添加监控以确保相关服务按预期运⾏

  • 分配时间来构建必要的仪表板并培训团队成员使⽤它们

  • 为服务制定“演习”计划,以确保监控⼯具能按预期运⾏并抓出失效的监控器

  • 在冲刺期间,为先前的的事件审核制定关闭操作,尤其是为构建过程中失效的监控器和⾃动化控制指定操作

  • 针对安全问题的构建侦测器(升级/补丁/滚动凭证)

  • 通过⾃动化规则确定对侦测到的警报的响应,培养“监测和监控⼀切”的⼼态


在这里,不得不提到 Statuspage 和 Opsgenie 这两个 SaaS⼯具。 


对于 Atlassian 的⼤部分云产品,其服务的健康状态和性能的监控是通过 Statuspage 来展示的。它能令管理员轻松地获得实时状态。并且,它可以与您喜欢的监控、警报、聊天和帮助台⼯具集成,每次都能实现⾼效响应。

△  Statuspage 站点监控界面


△  Statuspage 系统分析界面


Opsgenie 是 Atlassian 推出的事件统⼀管理⼯具。它会收集针对应⽤程序的各项指标进⾏监控的⼯具发出的报警信息。然后进⾏分类加⼯,分级过滤,以及多渠道精确投送等步骤,将真正重要的报警信息准确传达给合适的处理⼈员。您可以在其中设置上报策略,来电路由,以及值班⽇程表等功能,完美实现事件处理的⾃动化与应对的⾼效。


DevOps 监控⼯具


使⽤与 DevOps/YBIYRI⽂化匹配的⾼级⼯具,能对健康监控的实践起到补充作⽤。这⾥需要关注对监控⼯具的了解与实现,另外还有代码存储库、IDE、调试器、缺陷跟踪、持续集成⼯具和部署⼯具等易于理解的开发⼈员⼯具。


单⼀管理平台,并不仅限于⽣产环境,也包括在模拟环境提供了对各种应⽤程序、服务和基础设施依赖关系的全⾯视图,这使得它能够有能⼒提供、接收、标记、查看和分析复杂的分布式环境的健康状况。



应⽤程序性能监控对于确保监控应⽤程序特定的性能指标(例如加载⻚⾯的时间、下游服务的延迟或转换)以及 CPU 和内存利⽤率等基本系统指标是必不可少的。SignalFX 和 NewRelic 等⼯具⾮常适合实时观察指标数据。


实现不同类型的监控,在开发过程中包括了错误(error)、事务(transaction)、合成(synthetic)、⼼跳(heartbeat)、警报(alert)、基础设施(Infrastructure)、容量(capacity)和安全性(security)。确保每个成员都接受过这些领域的培训。


这些监控⼯具通常是特定于应⽤程序的,需要根据每个应⽤程序的要求来实施。例如,我们 Opsgenie 的开发团队实施了合成的监控,可创建警报或事件并检查警流程是否按预期执⾏(即集成、路由和策略是否正常⼯作)。我们还为基础设施依赖项实施合成监控,定期验证各种 AWS 服务的功能。


⼀个警报和事件管理系统,它⽆缝集成到您的团队的⼯具(⽇志管理、崩溃报告等),因此能⾃然地适应您团队的开发和运营节奏。该⼯具应将重要警报信息以最低延迟发送到您⾸选的通知渠道。它还应该具有对警报进⾏分组来对⼤量警报进⾏过滤的能⼒,尤其是当单个错误或故障⽣成多个警报时。Atlassian 不仅将 Opsgenie 作为⼀种产品提供给客户,还在内部使⽤它,以确保有强⼤、灵活和可靠的警报和事件管理系统来与他们的开发实践相结合。


综上所述...


在拥抱 DevOps 的同时,重要的是要确保除了测试之外还要有进⾏监控,并且落实实践和⼯具,以实现快速、⾼质量地将变更交付到⽣产环境中的承诺。


无论您喜欢使用什么监控工具,都可以集成到 Atlassian Open DevOps 中。Opsgenie、Statuspage、Xray...Atlassian 让您可以自由选择熟悉的、喜爱的工具,最大限度提升团队效率。


龙智延续 Atlassian Open DevOps 开放的理念,引入更多全球领先工具,包括Helix Core, Whitesource, Sonarqube等,为企业量身定制DevSecOps解决方案

并且,龙智作为 Atlassian 全球白金合作伙伴,为帮助释放及拓展 Atlassian 工具的力量,也自主开发了多款 Atlassian 插件,更适合本土企业使用。包括Jira工时管理插件(TimeWise for Jira)Confluence水印插件(Watermark for Confuence)Jira工作流扩展和并行审批插件(WorkflowWise for Jira)等,欢迎咨询试用。


文章来源:本文编译摘录自 Atlassian 文章《DevOps Monitoring》,作者为 KRISHNA SAI,有删改。

想了解更多 Atlassian DevOps 解决方案、工具及客户案例?欢迎您立即咨询Atlassian全球白金合作伙伴—龙智

电话:400-775-5506

邮箱:marketing@shdsd.com

用户头像

还未添加个人签名 2021.05.18 加入

还未添加个人简介

评论

发布
暂无评论
大话DevOps监控,团队如何选择监控工具?_DevOps_龙智—DevSecOps解决方案_InfoQ写作社区