前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是 CI/CD 可观察性,我们如何为更多可观察的管道铺平道路?

什么是 CI/CD 可观察性,我们如何为更多可观察的管道铺平道路?

作者头像
DevOps云学堂
发布2023-12-19 16:30:19
1420
发布2023-12-19 16:30:19
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成

在这篇文章中,作者介绍了CI/CD可观测性的概念和重要性。通过使用可观测性,团队可以提前解决问题,做出更明智的决策,并增加对软件发布的信心。文章还提到了CI/CD系统中常见的问题,包括不稳定性、性能回归和配置错误。为了解决这些问题,作者介绍了GraCIe,这是一个基于Grafana构建的应用插件,旨在提供对CI/CD系统的易于理解的方式。GraCIe利用Grafana Tempo、Grafana Loki和Prometheus的功能,通过使用OpenTelemetry,可以与几乎任何CI/CD平台无缝集成,为用户提供无与伦比的洞察力。作者还展望了未来,希望CI/CD供应商能够朝着一个共同的标准发展,实现遥测数据的普遍可访问性。

本篇文章是「DevOps云学堂」与你共同进步的第 66

可观察性不仅仅是观察错误监控基本健康信号。相反,它会更深入,以便您可以了解系统内行为背后的“原因”

CI/CD 可观察性在其中发挥着关键作用。它是关于深入了解持续集成和部署系统的整个管道 - 查看每个代码签入、每个测试、每个构建和每个部署。当您组合所有这些数据时,您可以全面了解整个软件交付过程,揭示效率领域、瓶颈和潜在故障点。

在本博客中,我们将更深入地探讨 CI/CD 管道可观察性的重要性。我们还将讨论 Grafana Labs 对增强 CI/CD 可观察性的追求,以及它如何引导我们设想一个解决方案——一个内部称为 GraCIe 的项目——它有可能使 CI/CD 见解民主化,为所有 Grafana 用户提供服务。未来几年。

为什么你应该关心 CI/CD 可观察性

顾名思义,CI/CD 可观察性是可观察性的一个子集,专注于软件开发生命周期。它有助于以多种方式确保流程可靠、相关且易于理解

  1. 积极主动解决问题。没有可观察性,我们只能对问题做出反应。有了它,我们可以在问题升级之前预见并解决问题,从而节省时间和资源。
  2. 更好的决策。通过了解 CI/CD 流程的细节,团队可以在资源分配、流程变更和工具采用方面做出更明智的决策。
  3. 建立信心。通过对 CI/CD 管道的清晰洞察,开发人员、测试人员和运营团队可以对他们发布的软件更有信心。它减少了“对部署的恐惧”并培育了持续改进的文化。
  4. 问责制和透明度。可观察性确保 CI/CD 流程的每一步都是可追溯的。这意味着,如果出现问题,可以追溯到其源头,促进问责并帮助解决根本原因,而不仅仅是解决症状。

常见问题

CI/CD 系统并非没有自身的挑战。破坏 CI/CD 管道平稳运行的三个常见问题是不稳定、性能下降和配置错误。

不稳定(Flakiness)

不稳定测试是 CI/CD 方程中不可预测的变量。当测试在代码没有任何更改的情况下产生不同的结果(通过或失败)时,该测试被认为是“不稳定的”。出现不稳定现象通常有以下几个原因:

  • 外部依赖和环境问题。如果这些依赖项不能始终可用,则依赖于外部服务、数据库或特定环境设置的测试可能会产生不可预测的结果。如果环境设置不正确或意外拆除,也可能会发生这种情况。从本质上讲,先前测试的残留或外部服务的不可用可能会扭曲结果,使其不可靠。
  • 测试条件。当系统的行为依赖于不可控事件的顺序或时间时,就会出现这种情况。特别是在异步操作中,如果管理不当,事件序列的不可预测性可能会导致偶发故障。

性能回归(Performance regression)

随着 CI/CD 流程的发展并变得更加复杂,系统性能可能会开始下降。这种回归可能不会立即显现出来,但长期的累积效应可能会阻碍 CI/CD 管道的效率。以下是常见的贡献者:

  • 测试执行效率低下。某些测试可能会运行比必要的时间更长的时间,这可能是因为冗余操作、设置的等待时间太长或查询效率低下。这在集成和端到端测试中尤其明显。
  • 代码和测试膨胀。当我们添加更多功能和测试而不解决技术债务或进行优化时,我们的构建时间可能会增加。有些测试从添加之日起可能会很慢。如果不解决这些问题,整个构建和测试过程可能会比需要的时间更长。

配置错误(Misconfigurations)

即使是最深思熟虑的管道也可能因配置错误而失败。这可能导致:

  • 次优测试计划。CI/CD 管道遵循一条关键路径,其中每个步骤都依赖于前一个步骤。如果步骤未设置为按正确的顺序执行或正在等待非依赖项,则可能会导致效率低下。
  • 次优容量规划。未配置足够的资源或对所需工作负载规划不当可能会导致管道出现瓶颈。如果 CI/CD 流程在关键阶段没有必要的能力,则可能会减慢整个工作流程或导致中断和故障。

"Sub-optimal"(次优)指的是情况、决策或结果不是最理想或最优的状态。它意味着某个事物的功能或表现没有达到最高水平或最高效率。这表明存在改进的空间,或者有更好的选择或解决方案可供选择。"Sub-optimal"可以用来描述各种情况,例如次优的表现、次优的结果、次优的策略或次优的条件。

了解 DORA 指标的重要性

DORA 指标源自DevOps 研究和评估 (DORA) 小组的研究,已成为衡量软件交付和运营的有效性和健康状况的黄金标准。这些指标包括:

  • 部署频率 (DF):组织成功发布到生产环境的频率
  • 变更平均前置时间 (MLT):从代码提交到代码在生产中运行所需的时间
  • 平均恢复时间 (MTTR):发生服务事件或缺陷后恢复服务需要多长时间
  • 变更失败率 (CFR):导致失败的变更百分比

正如我们已经讨论过的,CI/CD 流程中的失误可能会对软件交付的有效性和效率产生连锁反应。它可能导致更长的部署时间更长的服务恢复持续时间以及更高的不成功更改的风险。因此,优化 CI/CD 管道不仅仅是简化操作;还包括简化操作。它还对重要的软件交付指标产生积极影响。

我们如何开始优化 CI/CD 可观察性

Grafana Labs 优化 CI/CD 可观察性的道路始于一个单一的焦点。交付团队希望更好地了解我们最常访问的存储库中的构建流程:grafana/grafana- 我们的Grafana 开源 GitHub 存储库。

我们遇到了不稳定测试问题,特别是在 Grafana OSSGrafana Enterprise 存储库中,这限制了我们查看主要分支是否损坏的能力。结果,这基本上影响了 Grafana Labs 组织中的每个存储库。最重要的是,我们的 CI 工具Drone经常让运行者陷入困境,我们希望标准化显示 CI/CD 管道状态的方式。 我们意识到,虽然我们为正在运行的软件提供了丰富的可观察性工具,但我们的交付过程可以从类似水平的洞察力中受益。

为了弥补这一差距,我们最初创建了一个自定义的Prometheus导出器 它为我们提供了新的数据涌入。我们设计的仪表板以直观的方式呈现信息,这样我们就可以一目了然地快速掌握 CI/CD 的健康状况,并针对我们最关心的事情发出警报。 以下是我们为确保可观察性成为 CI/CD 流程的一部分而进行的更改的两个示例:

  • 我们从一组受保护的分支中释放 Grafana。因此,Grafana 必须在任何给定时间都可以从这些分支构建,因此我们添加了一个警报来密切关注潜在问题。当这些分支之一的构建失败时,就会触发警报,以便我们尽快解决问题。
  • 我们开始跟踪未由任何代码更改触发的重新启动次数。我们仍然必须准确地了解如何有效地使用这些数据,但是现在,当我们看到这个数字增加时,我们假设这是因为过程中某个地方出现了某种不稳定。这可能会导致我们进一步调查并防止其他贡献者遇到相同的问题。

扩大我们的可观察性工作

虽然我们最初的努力主要集中在grafana/grafana存储库上,但我们方法的成功很快引起了 Grafana 实验室其他团队的注意。我们认识到将这种可观察性扩展到我们组织中更多存储库的潜力。然而,我们希望确保扩大规模并不意味着这些团队会增加开销。我们的愿景是无缝集成,其他团队可以从中受益,而无需从头开始设置一切。

此外,我们意识到我们在存储库上观察 CI/CD 管道的方式grafana/grafana是非常主观的,这也反映在我们如何构建这些初始仪表板中。Grafana 组织拥有数十个(如果不是数百个)活跃存储库,每个存储库都有自己特定的可观察性需求和流程。

使用 OpenTelemetry 进行构建

为了满足我们的即时需求,我们正在开发专门为我们当前的 CI 工具 Drone 定制的OpenTelemetry接收器。这不仅满足了我们自己的需求,还为我们的 CI/CD 可观测性解决方案的更广泛应用奠定了基础。

但我们的愿景远远超出了我们自己的环境。我们预计未来 CI/CD 供应商将趋向于一个通用标准。无论底层 CI/CD 系统如何,遥测数据都可以普遍访问的标准

增强 Grafana 中的 CI/CD 可观察性

考虑到以上所有因素,我们构建了GraCIe。 GraCIe 是我们正在构建的一个固执己见的 Grafana 应用程序插件,旨在为用户提供一种简单的方法来了解他们的 CI/CD 系统。它非常适合评估构建性能、识别测试结果中的不一致以及分析构建输出。该应用程序简化了这些流程,旨在轻松提供有关管道的见解。

通过利用Grafana Tempo、Grafana Loki和 Prometheus的强大功能,我们为一个全新的领域(即 CI/CD 可观察性)构建了一种固执己见的体验,因为它最终依赖于更成熟的可观察性用例中使用的相同遥测信号。此外,通过依赖 OpenTelemetry,GraCIe 几乎可以与任何 CI/CD 平台无缝协作,为用户提供相同的无与伦比的见解,而无需自定义设置或配置

未来是可互操作的

我们刚刚开始使用 GraCIe。我们不仅要解决当今的挑战,还要积极塑造 CI/CD 可观察性的未来。我们梦想这样一个世界:每个 Grafana 用户,无论其 CI/CD 平台如何,都可以轻松获得所需的工具和见解。 如果您想了解更多关于我们在这个领域所做的事情,请查看此OpenTelemetry 提案(https://github.com/open-telemetry/oteps/pull/223),为 CI/CD 可观察性添加语义约定。如果您想权衡 CI/CD 可观察性的未来,请在此处分享您的反馈(https://docs.google.com/forms/u/0/d/1m9a680x3E9nCfHSTWKeuoZNNPUEWIGFzR8KV3GJZdiU/viewform?edit_requested=true)。

文章翻译 https://grafana.com/blog/2023/11/20/ci-cd-observability-via-opentelemetry-at-grafana-labs/?utm_campaign=blog&utm_content=youre_probably_familiar_w&utm_medium=social&utm_source=tw

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps云学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么你应该关心 CI/CD 可观察性
  • 常见问题
    • 不稳定(Flakiness)
      • 性能回归(Performance regression)
        • 配置错误(Misconfigurations)
        • 了解 DORA 指标的重要性
        • 我们如何开始优化 CI/CD 可观察性
        • 扩大我们的可观察性工作
        • 使用 OpenTelemetry 进行构建
        • 增强 Grafana 中的 CI/CD 可观察性
        • 未来是可互操作的
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档