审校 | 重楼
如今的软件开发商经常面临两大挑战 快速交付和大规模创新。j9九游会老哥俱乐部appDevOps通过在软件开发生命周期(SDLC)中引入自动化来开发和交付高质量的软件,从而帮助解决这些挑战。
持续集成(CI)/持续部署(CD)是DevOps实践中自动化的关键组件。它可以自动化代码构建、测试和部署,因此企业可以更快、更可靠地交付代码更改。但是,必须持续监控他们的持续集成(CI)/持续部署(CD)管道,以实现DevOps承诺。
那么,DevOps中的监控是什么,企业如何利用它来挖掘最佳的DevOps潜力?以下进行深入探讨
DevOps方法论的核心是一种数据驱动的方法。持续改进软件质量的能力完全依赖于理解代码如何执行,它引入了什么问题,以及在哪里找到改进机会。这就是DevOps监控发挥重要作用的地方。
DevOps监控是在DevOps生命周期的每个阶段(从规划、开发、集成和测试到部署和操作)跟踪和测量代码的性能和健康状况的实践。它有助于实现应用程序和基础设施性能的实时、易于使用的单一窗格视图。好处是可以及早发现重大威胁,并在它们成为令人头痛的问题之前解决它们。DevOps监控收集有关从CPU利用率到存储空间到应用程序响应时间的所有数据。实时流、可视化和历史回放是DevOps监控的一些关键方面。
DevOps监控使业务组织能够跟踪、识别和理解关键指标,例如部署频率和故障、代码错误计数、拉取请求的周期时间、更改失败率、平均检测时间(MTTD)、平均缓解时间(MTTM)和平均补救时间(MTTR)。这些具有价值的见解使组织能够主动识别应用程序或基础设施问题,并实时解决这些问题。监控还可以通过识别自动化的机会来优化DevOps工具链。
以下是突出DevOps监控对业务组织的重要性的一些关键好处:
由DevOps促成的持续集成(CI)/持续部署(CD)支持频繁的代码更改。然而,代码更改速度的加快使得生产环境越来越复杂。此外,在现代云原生生态系统中引入微服务和微前端会导致在生产中运行各种工作负载,每种工作负载在规模、冗余、延迟和安全性方面都有不同的操作需求。因此,提高DevOps生态系统的可见性对于团队实时检测和响应问题至关重要。这就是持续监测发挥关键作用的地方。
DevOps监控提供了在不同环境中部署新版本代码时应用程序性能的实时视图。因此,可以在流程的早期识别和修复问题,并继续测试和监控后续的代码更改。监控可以帮助组织验证新版本,以确保它们按计划执行,因此可以放心地发布新部署。
DevOps的核心原则是实现开发团队和运维团队之间的无缝协作。然而,工具之间缺乏适当的集成会阻碍不同团队之间的协调。这就是DevOps监控的用武之地,可以利用持续监控来获得整个DevOps管道的完整和统一的视图。甚至可以跟踪提交和拉取请求,以更新相关Jira问题的状态并通知团队。
不断变化的客户需求要求组织不断尝试,通过个性化和优化的转换渠道来优化他们的产品线。组织的团队经常在生产环境中运行数百个实验和功能标志,这使得很难确定任何降级体验的原因。此外,客户对不间断服务和应用程序的需求不断增加,可能会增加应用程序的漏洞。持续监控可以帮助组织监控实验,并确保它们按预期工作。
通常,大多数生产中断都是由频繁的代码更改触发的。因此,必须实现变更管理,特别是对于关键任务应用程序,例如银行和医疗保健应用程序。人们需要确定与变更相关的风险,并基于变更的风险自动化审批流程。全面的监控策略可以帮助组织处理这些复杂性,只需要一组丰富、灵活、高级的监控工具。
组织经常处理由许多规模的跨公司服务组成的分布式系统。因此,组织的团队需要监控和管理他们所构建的系统以及相关系统的性能。DevOps监控使组织能够轻松地处理这种依赖的系统监控。
左移测试就是向左移动时进行测试。在软件开发生命周期的开始阶段执行时,它可以显著提高代码质量,并减少测试周期。但是,只有当组织简化对预生产环境运行状况的监控并尽早且频繁地实施时,才能实现左移测试。持续监控还使组织能够在将应用程序部署到生产环境之前跟踪用户交互并维护应用程序的性能和可用性。
统一的监控和分析可以帮助组织的DevOps团队在整个软件生命周期中获得完整的端到端可见性。然而,在DevOps持续集成(CI)/持续部署(CD)生态系统中统一监控数据、分析和日志可能具有挑战性和复杂性。
每个IT企业都必须建立和维护IT基础设施,以便以无缝和高效的方式交付产品和服务。通常,IT基础设施包括与IT相关的一切,例如服务器、数据中心、网络、存储系统以及计算机硬件和软件。DevOps监控有助于管理和监控这个IT基础设施,这被称为基础设施监控。
基础设施监控从IT基础设施收集数据。它通过分析数据来获得深入的见解,从而帮助跟踪计算机系统、网络和其他IT统的性能和可用性。它还有助于收集关于CPU利用率、服务器可用性、系统内存、磁盘空间和网络流量等指标的实时信息。基础设施监控包括硬件监控、操作系统监控、网络监控和应用程序监控。
一些流行的基础设施监控工具有:
应用程序监控帮助DevOps团队跟踪应用程序性能的运行时指标,比如应用程序正常运行时间、安全性和日志监控细节。应用程序性能监控(APM)工具用于监控广泛的指标,包括事务时间和数量、API和系统响应以及整体应用程序运行状况。这些指标以图形和统计数据的形式得到,因此DevOps团队可以轻松地评估应用程序的性能。
一些流行的应用程序监控工具是:
网络监控用于跟踪和监控计算机网络及其组件(如防火墙、服务器、路由器、交换机和虚拟机)的性能和可用性。通常,网络监控系统共享5个重要数据点,即发现、映射、监控、警报和报告。网络监控有助于发现网络故障、测量性能和优化可用性。这使组织的DevOps团队能够防止网络停机和故障。
一些流行的NMS工具有:
DevOps团队经常交替使用监控和可观察性。虽然这两个概念在确保系统、数据和应用程序的安全性方面都起着至关重要的作用,但监控和可观察性是互补的功能,并不相同。以下了解一下这两个概念的不同之处:
监测和可观察性之间的区别取决于所收集的数据是否预定义。监控收集和分析从各个系统收集的预定义数据,可观察性收集所有IT系统产生的所有数据。
监控工具通常使用仪表板来显示性能指标和其他KPI,因此DevOps团队可以轻松地识别和纠正任何IT问题。然而,指标只能突出组织的团队可以预见的问题,因为它们是创建仪表板的问题。这使得DevOps团队难以监控云原生环境和应用程序的安全性和性能状况,因为这些问题通常是多方面的且不可预测的。
另一方面,可观察性工具利用从整个IT基础设施收集的日志、跟踪和度量来识别问题,并主动通知团队以减轻问题。在监控工具提供有用数据的同时,DevOps团队需要利用可观察性工具对整个IT基础设施的健康状况进行可操作的洞察,并在性能异常的第一个迹象时检测漏洞或脆弱的攻击载体。然而,可观察性并不能取代监测,与其相反,它有助于更好的监控。
DevOps监控工具使DevOps团队能够实现对整个DevOps应用程序开发生命周期的持续监控,并在将代码发布到生产环境之前识别潜在的错误。但是,组织需要选择最适合其业务目标的监控工具,以便以最小的成本获得高质量的产品。以下是市场上一些优秀10大的DevOps监控工具:
Splunk是机器生成数据方面最受欢迎的监控工具。除了监控,这个流行的工具还用于搜索、分析、调查、故障排除、警报和报告机器生成的数据。Splunk将所有机器生成的数据整合到一个中心索引中,使DevOps团队能够快速收集所需的见解。Splunk的诱人之处在于它不利用任何数据库来存储数据;与其相反,它使用索引来存储数据。
该工具有助于创建图形、仪表板和交互式可视化,因此组织的团队可以轻松访问数据并找到复杂问题的解决方案。
Splunk的主要特点如下:
Datadog是一个基于订阅的SaaS平台,支持对服务器、应用程序、数据库、工具和服务的持续监控。这个工具可以帮助组织培养一种可观察性、协作性和数据共享的文化,这样就可以获得关于操作变更的快速反馈,并提高开发速度和敏捷性。
Datadog的一些关键特性是:
Hashi公司的Consul是一个开源监控工具,用于连接、配置和保护动态基础设施中的服务。该工具使组织能够创建实时跟踪应用程序、服务和运行状况状态的中央注册中心。Consul的内置用户界面(UI)或APM集成使DevOps团队能够监控应用程序性能,并在服务级别识别问题区域。Consul用户界面中的拓扑图帮助组织可视化网格中注册的服务之间的通信流。
Consul的一些主要特性如下所示:
Monit是一个开源的DevOps监控工具。它用于管理和监控Unix系统。组织的团队可以利用Monit来监控守护进程,例如在系统启动时从/etc/init/启动的进程,比如Sendmail、apache、sshd和MySQL。该工具还可以用于运行在本地主机上运行的类似程序、文件、目录和文件系统,并跟踪更改,例如大小更改、时间戳更改以及校验和更改。此外,还可以使用Monit监控本地主机上的一般系统资源,例如CPU使用情况、内存使用情况和平均负载。
Monit的一些主要特点是:
Nagios是最流行的DevOps监控工具之一。它是一种开源工具,用于监控所有关键任务基础设施组件,包括服务、应用程序、操作系统、系统指标、网络协议和网络基础设施。该工具促进了基于代理和无代理的监控,使监控Linux和Windows服务器变得很容易。使用Nagios,组织的DevOps团队可以监控各种应用程序,包括Windows应用程序、Unix应用程序、Linux应用程序和Web应用程序。
Nagios的一些关键特性如下:
Prometheus是一个开源的监控工具包,主要用于系统监控和警报。该工具收集并存储度量信息以及记录它的时间戳,称为标签的可选键-值对也存储在度量信息中。Prometheus工具生态系统由多个组件组成,包括用于存储时间序列数据的主Prometheus服务器、用于检测应用程序代码的客户端库、用于处理短期作业的推送网关和用于处理警报的警报管理器。
Prometheus工具的一些关键特性是:
Sumo Logic的Sensu是针对关键任务系统的监控即代码解决方案。这种端到端的可观察性管道使组织的DevOps和SRE团队能够收集、过滤和转换监控事件,并将它们发送到他们选择的数据库。使用单个Sensu集群,组织可以轻松监控数万个节点,并快速处理每小时超过100亿个事件。该工具有助于企业级监控生产工作负载,为整个基础设施提供真正的多租户和多集群可见性。
Sensu工具的一些关键特性是:
Sematext是满足所有DevOps监控需求的一站式解决方案。与其他仅提供性能监控、日志记录或体验监控的监控工具不同,Semattext提供了DevOps团队需要的所有监控解决方案,以解决其生产和性能问题并加快进度。使用Semtext,组织的DevOps团队可以监控应用程序性能、日志、度量、真实用户、流程、服务器、容器、数据库、网络、库存、警报、事件和API。组织还可以执行日志管理、合成监控和JVM监控以及其他许多操作。
Sematext工具的一些关键特性是:
PagerDuty是一个操作性能监控工具,它可以让组织的DevOps团队评估应用程序的可靠性和性能。该工具使组织的DevOps团队与生产中的代码保持联系,利用机器学习技术来识别问题,并提醒团队尽早解决错误。这意味着组织的DevOps团队花更少的时间来响应事件,而有更多的时间来构建和创新。
PagerDuty工具的一些主要功能是:
PagerDuty作为独立的服务器节点工作,不依赖于分布式存储。
AppDynamics是市场上最流行的应用程序性能监控工具之一。作为一个持续监控工具,AppDynamics可以帮助监控组织的最终用户、应用程序、SAP、网络、数据库以及云计算和内部部署计算环境的基础设施。有了这个工具,组织的DevOps团队可以轻松地获得跨服务器、网络、容器、基础设施组件、应用程序、最终用户会话和数据库事务的完整可见性,因此他们可以快速响应性能问题。
AppDynamics工具的一些关键特性是:
毫无疑问,DevOps监控工具使组织的DevOps团队能够在整个软件开发生命周期中自动化监控过程。这些监控工具使组织的DevOps团队能够尽早识别代码错误,有效地运行代码操作,并快速响应使用中的代码更改。但是,必须有效地使用监控工具,以确保完全成功。以下是一些突出的DevOps监控用例,组织可以利用它们来获得DevOps的成功:
由于多个开发人员同时开发相同的项目功能,DevOps团队经常会遇到反复出现的代码库冲突。Git使组织的DevOps团队能够管理和解决冲突,包括提交和回滚。因此,当监控Git工作流时,可以轻松地保持代码冲突并确保项目的一致进展。
代码检测工具可以帮助DevOps团队分析代码的风格、语法和潜在问题。有了这些工具,组织的DevOps团队可以确保他们遵循编码的最佳实践和标准。代码检测使组织能够在代码问题触发运行时错误和其他潜在性能问题之前识别并解决它们。使用检测工具,组织可以确保代码干净且一致。
组织的DevOps团队需要分布式跟踪,以简化微服务应用程序的监控和调试过程。分布式跟踪帮助组织的团队理解应用程序如何通过API相互交互,更容易识别和解决应用程序性能问题。
随着持续集成(CI)/持续部署(CD)管道成为DevOps生态系统的重要元素,监控它们对于DevOps的成功至关重要。持续集成(CI)日志有助于确保代码构建平稳运行。否则,日志将通知组织代码构建中的错误或警告。因此,监控持续集成(CI)日志有助于识别构建管道中的潜在问题并主动解决它们。同样,持续部署(CD)日志会告知整个管道的运行状况和状态。因此,监控持续部署(CD)日志可以帮助DevOps团队轻松地排除任何失败的部署并修复潜在的问题。
配置管理更改日志帮助DevOps团队深入了解系统的运行状况和重要更改(包括人工和自动更改)。因此,监控这些日志使组织的团队能够跟踪对系统所做的更改,识别未经授权的更改并纠正问题。
代码插入是将代码添加到应用程序的过程。这一过程使组织能够收集有关应用程序性能及其操作路线的数据。这对于跟踪堆栈调用和了解场景值至关重要。因此,监控这种代码插装结果使组织能够衡量DevOps实践的效率,并了解潜在的差距(如果有的话)。它还可以帮助组织识别错误并改进测试。
就像采用DevOps本身一样,实现健壮的DevOps监控模型需要文化、流程和工具的战略组合。尽管组织可以从竞争对手采用DevOps监控的方式中获得灵感,但组织采用的正确模型必须与组织独特的组织需求和软件开发生命周期(SDLC)相一致。以下是一些最佳实践,可以帮助组织更好地监控DevOps:
知道该监控什么是成功的一半。因此,即使在开始实施DevOps监控策略之前,了解需要监控的内容也是至关重要的。组织的监控目标应该集中于服务器的性能、漏洞、用户活动和应用程序日志。
组织的DevOps监控策略必须以固定的开发目标为锚定。这些目标帮助组织了解DevOps监控策略的执行情况。最受欢迎的确保实现目标的方法是跟踪每个Sprint持续时间,并测量用于识别、记录和纠正问题的时间。利用机器学习技术自动化配置过程可以帮助组织节省大量时间并避免人工错误。
监控用户活动是最重要的监控类型之一。它可以帮助组织跟踪不寻常的请求,多次登录尝试,从未知设备登录,以及任何可疑的用户活动,如开发人员试图访问管理帐户。通过监控用户活动,组织可以确保正确的用户正在访问正确的资源。这个过程有助于防止对系统的潜在威胁,并减轻网络攻击。
从DevOps生态系统中大量可用的工具中选择正确的DevOps监控工具集是一项艰巨的任务。选择最适合软件开发生命周期(SDLC)和应用程序基础设施的精确工具始于评估过程。它主要涉及了解工具的特性和功能,以便轻松评估它是否最适合应用程序或基础设施监控。所以,在评估DevOps监控工具时,需要问一些问题:
原文标题:What Is DevOps Monitoring and How to Implement It in Your Organization,作者:Gilbert Martin