在这篇文章中,作者介绍了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 系统并非没有自身的挑战。破坏 CI/CD 管道平稳运行的三个常见问题是不稳定、性能下降和配置错误。
不稳定测试是 CI/CD 方程中不可预测的变量。当测试在代码没有任何更改的情况下产生不同的结果
(通过或失败)时,该测试被认为是“不稳定的”。出现不稳定现象通常有以下几个原因:
随着 CI/CD 流程的发展并变得更加复杂,系统性能可能会开始下降。这种回归可能不会立即显现出来,但长期的累积效应可能会阻碍 CI/CD 管道的效率。以下是常见的贡献者:
冗余操作、设置的等待时间太长或查询效率低下
。这在集成和端到端测试中尤其明显。添加更多功能和测试而不解决技术债务或进行优化时
,我们的构建时间可能会增加。有些测试从添加之日起可能会很慢。如果不解决这些问题,整个构建和测试过程可能会比需要的时间更长。即使是最深思熟虑的管道也可能因配置错误而失败。这可能导致:
"Sub-optimal"(次优)指的是情况、决策或结果不是最理想或最优的状态。它意味着某个事物的功能或表现没有达到最高水平或最高效率。这表明存在改进的空间,或者有更好的选择或解决方案可供选择。"Sub-optimal"可以用来描述各种情况,例如次优的表现、次优的结果、次优的策略或次优的条件。
DORA 指标源自DevOps 研究和评估 (DORA) 小组
的研究,已成为衡量软件交付和运营的有效性和健康状况的黄金标准
。这些指标包括:
正如我们已经讨论过的,CI/CD 流程中的失误可能会对软件交付的有效性和效率产生连锁反应。它可能导致更长的部署时间、更长的服务恢复持续时间以及更高的不成功更改的风险。因此,优化 CI/CD 管道不仅仅是简化操作;还包括简化操作。它还对重要的软件交付指标产生积极影响。
Grafana Labs 优化 CI/CD 可观察性的道路始于一个单一的焦点。交付团队希望更好地了解我们最常访问的存储库中的构建流程:grafana/grafana- 我们的Grafana 开源 GitHub 存储库。
我们遇到了不稳定测试问题,特别是在 Grafana OSS
和 Grafana Enterprise
存储库中,这限制了我们查看主要分支是否损坏的能力。结果,这基本上影响了 Grafana Labs 组织中的每个存储库。最重要的是,我们的 CI 工具Drone经常让运行者陷入困境,我们希望标准化显示 CI/CD 管道状态的方式
。
我们意识到,虽然我们为正在运行的软件提供了丰富的可观察性工具,但我们的交付过程可以从类似水平的洞察力中受益。
为了弥补这一差距,我们最初创建了一个自定义的Prometheus导出器
它为我们提供了新的数据涌入。我们设计的仪表板以直观的方式呈现信息,这样我们就可以一目了然地快速掌握 CI/CD 的健康状况,并针对我们最关心的事情发出警报。
以下是我们为确保可观察性成为 CI/CD 流程的一部分
而进行的更改的两个示例:
当这些分支之一的构建失败时,就会触发警报
,以便我们尽快解决问题。虽然我们最初的努力主要集中在grafana/grafana存储库上,但我们方法的成功很快引起了 Grafana 实验室其他团队的注意。我们认识到将这种可观察性扩展到我们组织中更多存储库的潜力。然而,我们希望确保扩大规模并不意味着这些团队会增加开销。我们的愿景是无缝集成,其他团队可以从中受益,而无需从头开始设置一切。
此外,我们意识到我们在存储库上观察 CI/CD 管道的方式grafana/grafana是非常主观的,这也反映在我们如何构建这些初始仪表板中。Grafana 组织拥有数十个(如果不是数百个)活跃存储库,每个存储库都有自己特定的可观察性需求和流程。
为了满足我们的即时需求,我们正在开发专门为我们当前的 CI 工具 Drone 定制的OpenTelemetry接收器
。这不仅满足了我们自己的需求,还为我们的 CI/CD 可观测性解决方案的更广泛应用奠定了基础。
但我们的愿景远远超出了我们自己的环境。我们预计未来 CI/CD 供应商将趋向于一个通用标准。无论底层 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