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

Hi!我们是DevSecOps研发安全运营一体化解决方案提供商、Atlassian全球白金合作伙伴——龙智。在过去的十多年间,传统软件研发模式发生巨变,从瀑布式开发到敏捷再到DevOps,开发和运维之间曾经明确的界限正在慢慢变得模糊。
DevOps由于能够促进开发、运维、测试等不同部门的沟通、协作与整合,正在悄然成为软件研发运营主流趋势。发展至今,DevOps也结合了新的流程,比如持续集成和持续部署来快速交付价值。
如果您对DevOps还知之甚少,或是想要更深入地了解DevOps工具链,请不要错过本系列文章。龙智将从DevOps的概念、DevOps工具链、CI及工具对比、DevOps监控、DevSecOps五个方面入手,让您从起源开始,逐步深入了解DevOps这个已流行数十年的方法论。

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

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

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

什么是DevOps监控?

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

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

DevOps监控与可观测性

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

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

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⼯作流的⾃动化。

大话DevOps监控,团队如何选择监控工具?_第4张图片
实验

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

对于永久在线服务和应⽤程序⽇益增⻓的需求,以及严格的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来展示的。它能令管理员轻松地获得实时状态。并且,它可以与您喜欢的监控、警报、聊天和帮助台⼯具集成,每次都能实现⾼效响应。

大话DevOps监控,团队如何选择监控工具?_第5张图片
△ Statuspage站点监控界面
大话DevOps监控,团队如何选择监控工具?_第6张图片
△ Statuspage系统分析界面

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

DevOps监控⼯具

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

单⼀管理平台,并不仅限于⽣产环境,也包括在模拟环境提供了对各种应⽤程序、服务和基础设施依赖关系的全⾯视图,这使得它能够有能⼒提供、接收、标记、查看和分析复杂的分布式环境的健康状况。
大话DevOps监控,团队如何选择监控工具?_第7张图片
应⽤程序性能监控对于确保监控应⽤程序特定的性能指标(例如加载⻚⾯的时间、下游服务的延迟或转换)以及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)