如何在部署中实施实时监控
不可否认,在当今的技术环境中,应用系统已变得越来越繁杂。为了及时获悉各种软件应用的健康和服务状态,我们需要通过关注基本的应用指标,来确保应用的所有组件在部署的整个过程中,按照预期运行。
不过,对于项目团队而言,在部署过程中实施实时的监控,似乎已成为了极难实现的运营“必备品”。对此,Datadog 正好一显身手。它是一个业界领先的监控和分析平台,可以提供从前端应用到底层硬件等基础架构的每个部分的可见性。与之配套的是大家较为熟悉的 Ansible。这是一款在部署和配置管理方面尤为强大的自动化工具。
在本文中,我将和您讨论 Datadog 实时监控会被如何集成到基于 Ansible 的部署中,以及在整体部署过程中,如何通过实时监控以大幅降低事故的发生。当然,其相关概念与方法,也可以被应用到类似的监控和部署工具集中。
为何要在部署中集成实时监控?
在不断迭代与发展的 DevOps 领域,开发与运营之间的界限正变得越来越模糊,两者直接的协作正变得越来越紧密。正是这种整合,促进了团队成员越来越需要在应用系统的整个生命周期内进行持续监控,而不仅仅是在部署之后才监控。
那么,如果将 Datadog 与您的现有部署流程、及部署脚本相集成,到底能够带来哪些优势呢?我为您总结了如下三项基本要素:
即时反馈:在部署过程中实施实时监控的主要好处之一是,它能够创建即时的反馈回路。特别是在滚动部署的过程中,当一台或多台主机部署出现问题时,实时监控数据可以立即被用于做出暂停或启动部署回滚的决策。这种快速回撤往往就决定了是会发生较小的故障,还是大型灾难。尤其是对于某些海量用户级别的应用而言,即使 1 分钟的停机时间,也可能导致大量的错误和损失。
资源和性能监控:在部署新功能或变更现有服务时,我们往往会在无形中引入涉及到性能、资源利用率、以及相关成本的风险。而通过实时监控,团队可以立即获悉变更给系统性能和资源利用率造成的影响,进而采取任何必要的即时补救措施,以确保用户继续获得最佳的使用体验。
主动解决问题:通过将 Datadog 直接集成到部署流程中,而不是在最终用户受到影响后才对问题做出反应,项目团队可以更主动的方式解决问题,并防止潜在的问题演变成重大故障。这种积极主动的方法,不但可以增加系统的整体正常运行时间,并提高部署发布的稳定性,而且能够保障用户持续的满意度。
在部署中实施实时监控的过程
一旦部署工具被触发,底层的脚本就会开始执行。对此,我们需要根据应用的各项实际需求,预先确定执行监控检查的理想位置,并发送一个或多个 Datadog API 请求,去查询相关指标、监控过程数据、或其他有助于我们确定部署和整个应用健康状况的信息。
据此,我们需要在脚本中添加逻辑,以便解析来自 Datadog 的 API 响应,并做出是否转入下一组部署的适当决策。例如,如果我们发现错误过多、且监控频繁报障的话,那么我们就应该相应地对这些收集到的信息予以解析,以决定是否中止部署,不再继续下去,从而减少潜在的生产事故的影响半径。下图展示了这个典型的工作流程。当然,具体各个阶段可以根据您的应用的实际需求进行调整。
具有集成监控的部署流
利用 Datadog 及其 API 接口进行实时查询
除了基础监控功能,Datadog 还提供了另一个增强 DevOps 团队能力的关键优势:其强大的 API 接口。它不仅是一项功能,更是一种变革性的工具。借助以编程方式查询指标、以及各项跟踪和日志等能力,项目团队可以动态地将 Datadog 更深入地集成到其运营之中。据此,他们可以进行定制化的监控配置、自动警报设置、以及即时提取相关数据。而且,这种实时查询不仅仅是为了获取数据,更是为了给部署决策提供相关信息,完善应用性能,进而创建一个更具协同性的技术生态环境。通过利用 Datadog 的 API,监控不再是一种被动的观察,而是优化部署工作流程的主动驱动力。
同时,作为一种监控工具,Datadog 可以密切关注目标系统的各项技术设置,检查其性能和错误状况。由于能够提供及时的反馈,因此系统一旦出现问题,Datadog 就会立即向运营团队发出警报,以协助他们更快地解决问题,保持一切顺利运行。在如下的实施方案中,我们通过获取查询监控器的数据,以判定是否有任何被触发的警报。此外,我们还会查询各项指标和其他类似的数据,以协助确定应用的健康状况。
下图展示便是一个从 Datadog 的 API 参考表中,获取特定监视器详细信息的示例。
对 Datadog API 端点的 Curl 请求示例
以 Ansible 自动化部署为例
当我们使用 Datadog 等工具深入研究复杂的监控时,了解支撑目标应用的部署机制是至关重要的。在此,我们将以 Ansible 为例。如前所述,它是一款以简单性和强大功能为显著优势的开源自动化工具。
通常,Ansible 会使用声明式语言(Declarative Language)来定义系统配置,使其既易于人类阅读,又能够直接与各种平台和工具相集成。在部署方面,Ansible 可以确保一致性和可重复的应用部署,从而降低与手动流程相关的各类风险。如果与 Datadog 等实时监控解决方案配合使用,Ansible 不仅可以自动化部署应用,而且能够确保它们在部署之后以最佳的状态运行。可以说,这种自动化部署与实时监控之间的协同,构建出了一个强大的、反应灵敏的、容错性高的部署生态系统。
下图的代码片段展示了在 Ansible 中,Datadog 监控器如何实现以“deployment_priority: blocker”为标签,进行查询的示例。
在 Ansible 中实现的监控查询
在此基础上,我们需要解析从 Datadog 返回的所有此类监控的状态,以决定是终止监控,还是继续到下一台主机或下一组部署。
迭代监视器的解析和决策的制定
至此,我们已完成了在部署过程中实施实时监控,并具备了对 Datadog 的监控信息予以解析,进而在部署过程中及时做出明智的决策的能力。
小结
在上文的探讨中,我们既利用了强大的部署工具 Ansible 所提供的一致、可靠的部署的能力;又结合了 Datadog 等平台的细粒度实时监控能力,提高了项目部署的运营效率和可靠性。随着技术领域的不断发展,Ansible 和 Datadog 等工具充分证明了集成式智能 DevOps 的实践潜力。
无论您是经验丰富的 DevOps 专业人士,还是刚刚涉足本领域的“小白”,了解并利用这种协同,都将有利于打造一个面向未来、具有高自愈能力的技术生态系统。
版权声明: 本文为 InfoQ 作者【互联网工科生】的原创文章。
原文链接:【http://xie.infoq.cn/article/b5b0b8beaf1f0d5818a9180e0】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论