探索监控和自动化在现代软件开发中的作用-从Kubernetes的探针到DevOps (探索监控和自拍的区别)
探针的作用
从功能上讲,探针的作用很简单:它是一种由 Kubernetes 提供的检查机制,用于检测应用程序是否正常运行。最常见的探测方式是 HTTP 探测。应用程序需要公开一个地址,Kubernetes 会定期调用该地址。如果地址返回 200 状态码,则认为应用程序正常;否则,认为应用程序异常。 一般情况下,需要为应用程序配置两个探针:活跃探针(liveness probe)和就绪探针(readiness probe)。 活跃探针:可以在应用程序有问题时触发重启,应用程序在重启后可能可以恢复正常。 就绪探针:保证应用程序有问题时切断流量,避免该应用程序被调用到。 虽然从功能角度看,这两个探针的区别似乎不大,但设置两个不同的探针是有原因的。后面将详细解释。宏观的意义
作为运维人员,特别是做过微服务应用程序运维的人,一定遇到过某个基础组件或上游服务出现故障的情况。在这种情况下,可观测工具可能会显示满屏的红色惊叹号。 当上游的 Pod 不可用时,其下游的 Pod 也无法工作,故障会传播到所有相关的 Pod 中。此时,运维人员需要一个工具来告诉他们:某个 Pod 本身出了问题,而其他 Pod 是因为依赖的 Pod 出问题了才报错的。这样才能专注于解决关键问题。 这种级联反应的故障恢复时,也往往绝非病去如抽丝,可能不断遇到个别的业务问题。有时,运维人员需要手动重启服务才能解决。他们一定希望:应用程序能在条件具备时自动恢复。 解决这两个需求的方法就是探针。探针如何发挥作用
这两个探针正是 Kubernetes 平台与应用程序之间沟通的契约。当返回报错时,应用程序实际要表达的意思和做出的承诺是: 活跃探针报错:应用程序本身存在问题,需要重启。 就绪探针报错:应用程序依赖的服务出现故障,应用程序无法正常工作,需要切断流量。 这样看,两个探针有着明显的区别。这两个探针与应用程序配合,是如何解决上一章所说的问题呢? 对于应用程序完全 hang 死的情况,无论是活跃探针还是就绪探针,都会探测异常,肯定会触发重启。这是探针机制最立竿见影的一个情况。 当应用程序本身发生问题时,活跃探针应该报告异常,从而触发重启。此时,问题的关键是,应用程序如何知道自己存在异常?确实挺难的。这个探针对应的接口应该能够模拟正常业务的主要逻辑,而且如果依赖的服务有问题,而且应用程序能够处理这个问题,则不应该报告异常。 当应用程序依赖的服务出现故障时,我们希望应用程序的活跃探针报告正常,而就绪探针报告报告异常。因为此时活跃探针报告异常触发应用程序重启也解决不了任务问题,大量的重启以及相关的报错反而会让运维人员感到恐慌。 探针这样工作有一个非常重要的前提条件,那就是应用程序在其依赖服务恢复时也能够自己恢复。如果应用程序无法自动恢复,也许我们只能选择让活跃探针在此时报告异常,运维需要面对反复重启的无尽惶恐之中。开发人员的责任
对于应用程序恢复的重要性,开发者需要理解上述过程,然后进行实现。 尽管像 Spring 这样的开发框架已经提供了探针相关的功能,开发人员可能配置一下就能完成,但实际情况往往并不简单。 例如,Spring 文档指出: Liveness 探针不应当依赖外部系统的状态。 但在实际中,外部系统的定义未必那么笃定。我们的应用程序也可能依赖于外部服务,并且能够处理该服务出现问题的情况。在这种情况下,活跃探针不应该报告异常。 开发人员需要根据应用程序的具体情况进行探针的配置和实现,这是确保应用程序能够在 Kubernetes 环境中正常运行的关键。总结
Kubernetes 探针是运维和开发人员在 DevOps 实践中需要密切关注的一个重要特性。了解探针的作用、配置方法和在解决应用程序可用性问题中的作用,对于提高应用程序的稳定性和可运维性至关重要。 希望本文能够帮助您更好地理解 Kubernetes 探针,并将其运用到您的应用程序中。为什么企业需要构建一站式DevOps平台呢?
可能有些读者不知道DevOps工具是什么,这里简单说一下,DevOps工具指用于支持DevOps流程的软件工具,包括但不限于以下几类:
这些工具可以帮助开发团队实现快速、高效、可靠的软件开发和运维流程,从而提高软质量和交付速度。
而一站式DevOps平台则是指一个集成了多种DevOps工具和服务的平台,可以满足软件开发、测试、部署、监控等全流程的需求。这种平台可以提供代码管理、构建、测试、部署、容器化、自动化运维、日志监控等多种功能,使得开发团队可以在同一个平台上完成整个软件开发和运维的过程,从而提高开发效率和质量。
所以不难理解,企业需要构建一站式DevOps平台的原因一般也就有以下几点:
简单点说,构建一站式DevOps平台可以帮助企业提高开发效率、加快交付速度、提高软件质量、降低成本和提高团队协作效率,是企业实现数字化转型和提高竞争力的重要手段。
在生活中,一站式DevOps平台可以应用于各个行业,特别是那些需要快速交付高质量软件的行业,比如:
总之,一站式DevOps平台可以帮助企业提高软件开发效率、加快交付速度、提高软件质量、降低成本和提高团队协作效率。所以一般情况下,有条件的企业都有应该构建一个一站式DevOps平台。
可观测性有哪些好处?
可观测性的最大好处是,在所有其他条件相同的情况下,一个更可观测的系统更容易被理解(整体和部分),更容易被监控,更容易和更安全地发布代码,并且更容易修复故障。 更具体地说,可观测性能够直接支持敏捷/DevOps/SRE 团队的该目标:更快地交付更高质量的软件:发现并解决“未知的不确定问题”——超出现有认知的问题。 监控工具的一个主要限制是它们只关注“已知的某个具体问题”——您已经知道需要注意的异常情况。 可观测性能够发现以前不知道但可能会导致问题的条件,然后跟踪它们与特定性能问题的关系,并提供上下文来确定根本原因和快速解决问题。 在开发早期发现并解决问题。 可观测性将监控纳入软件开发过程的早期阶段。 DevOps 团队可以在影响客户体验或 SLA 之前识别并修复新代码中的问题。 自扩展性。 例如,您可以将检测和数据聚合指定为 Kubernetes 集群配置的一部分,并从它启动的那一刻开始收集遥测数据,直到它停止运行。 支持故障自愈的基础架构。 将可观测性与 AIOps 机器学习,自动化功能相结合,根据系统的输出来预测问题的发生并全自动的解决问题。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。