OpenTelemetry 正在扩展到 CI/CD 可观测性领域
多年来,我们一直在讨论需要一种通用的“语言”来报告和观测 CI/CD 流水线,现在,我们终于看到了这种语言的第一个“词语”进入了可观测性的“词典”——OpenTelemetry 开放规范。随着 OpenTelemetry 语义约定 v1.27.0 的发布,您现在可以找到用于报告 CI/CD 流水线的指定属性。
这是OpenTelemetry 内的 CI/CD 可观测性特别兴趣小组 (SIG) 辛勤工作的成果。随着我们完成第一阶段的核心里程碑,我们认为现在是时候与世界分享了。
工程师需要 CI/CD 流水线的可观测性
CI/CD 可观测性对于确保软件能够高效可靠地发布到生产环境至关重要。运行良好的 CI/CD 流水线可以通过缩短交付周期 DORA 指标并能够快速识别和解决损坏或不稳定的流程,从而直接影响业务成果。通过将可观测性集成到 CI/CD 工作流程中,团队可以实时监控流水线的健康状况和性能,深入了解瓶颈和需要改进的领域。
通过利用用于监控生产环境的相同成熟工具,组织可以扩展其可观测性功能以包含发布周期,从而促进软件交付的整体方法。无论是开源还是专有工具,在为 CI/CD 流水线选择可观测性工具链时,都不需要重新发明轮子。
标准化需求
然而,CI/CD 工具的多样化带来了实现一致的端到端可观测性的挑战。由于每种工具在报告流水线执行状态方面都有自己的方式、格式和语义约定,工具链中的碎片化可能会阻碍无缝监控。迁移工具变得痛苦,因为它需要重新实现现有的仪表板、报告和警报。
当您需要以统一的方式监控发布流水线中涉及的多个工具时,情况会变得更具挑战性。这就是开放标准和规范变得至关重要。它们创建了一种通用的统一语言,一种独立于工具和供应商的语言,能够跨不同工具实现一致的可观测性,并使团队能够保持对其 CI/CD 流水线性能的清晰全面的视图。
标准化需求与创建上述语义约定(报告流水线中发生情况的语言)相关。还需要标准化用于在系统中传播此报告的方式,例如在流水线执行期间生成进程时。这促使我们推广标准化使用环境变量进行进程间的上下文和行李传播,这是最近获得批准和合并的另一个重要里程碑。
OpenTelemetry:CI/CD 可观测性规范的自然归宿
这一认识促使我们寻找创建规范的正确方法。OpenTelemetry 作为遥测生成和收集的标准应运而生。OpenTelemetry 规范的任务恰恰是解决这个问题:创建一种通用、统一且独立于供应商的遥测规范。它得到云原生计算基金会 (CNCF) 的支持,确保其保持开放和供应商中立。作为 OpenTelemetry 的长期倡导者,将 OpenTelemetry 扩展到涵盖这个重要的 DevOps 用例是顺理成章的。
几年前,我们开始了一个OpenTelemetry 扩展提案 (OTEP #223),提出了将 OpenTelemetry 扩展到涵盖 CI/CD 可观测性用例的设想。同时,我们在 CNCF Slack 上启动了一个 Slack 频道,以聚集支持这一想法的同行爱好者,并开始集思广益,设想它的样子。Slack 频道不断发展,我们很快发现这个问题在许多组织中都是普遍存在的。
在获得技术监督委员会和 CNCF 内其他成员的反馈后,我们采取了请求授权的途径,在 OpenTelemetry 的语义约定 SIG(简称 SIG SemConv)下启动一个专门的工作组来处理这个主题。在他们的批准下,我们正式启动了 CI/CD 可观测性 SIG,以正式化我们之前的 Slack 小组讨论和目标。
OpenTelemetry 的 CI/CD 可观测性 SIG
自 2023 年 11 月以来,SIG 一直在与来自多家公司和开源项目的专家合作,积极开发 CI/CD 可观测性语义的标准。成立之初,我们决定在 2024 年重点关注几个关键领域:
- 跨 CI/CD 系统的初始通用属性集。
- 开发原型,包括整体和特定信号的属性。
- 将上下文传播器作为环境变量添加到 OpenTelemetry 规范的提案 (OTEP #258)。
- 将 OpenTelemetry 约定与CDEvents 和Eiffel 连接的策略。
起初,我们的 SIG 在每周一参加更大的语义约定工作组会议。这为我们提供了机会,在研究和讨论如何实现路线图上的目标时获得方向。这也使我们能够认识许多更大的 OpenTelemetry 社区的成员,征求对我们设计的反馈,并获得关于如何继续的指导。OpenTelemetry 语义约定工作组对 CI/CD 计划给予了极大的支持。
在完成并发布了初始里程碑(见下文)后,我们的 SIG 在OpenTelemetry 日历上获得了自己专属的会议时间,每周四太平洋时间上午 6 点。该小组在此处聚集,在周一参加更大的语义约定会议之前讨论当前和未来的工作。我们非常期待社区继续支持和参与,因为我们将继续推动这一关键的标准化领域。
CI/CD 是最新的 OpenTelemetry 语义约定的一部分
经过数月的迭代和反馈,第一套语义约定已合并到 v1.27.0 版本中。此更改为 CI/CD 带来了第一套基础语义,涵盖 CICD、artifacts、VCS、test 和 deployment 命名空间。这是 CI/CD 可观测性 SIG 和整个行业的重大里程碑。这为我们小组所有其他目标开始成形和实现奠定了基础。
但那实际上意味着什么?它提供了什么价值?让我们以两个命名空间为例,考虑实际应用。
跟踪版本控制系统 (VCS) 的发布版本
版本控制系统 (VCS) 属性涵盖了 VCS 中的多个常见区域,如引用和更改(拉取/合并请求)。vcs.repository.ref.revision 属性是关键的元数据。当 GitHub 和 GitLab 等版本控制系统发出事件时,它们现在可以包含此符合语义的属性。这意味着在集成代码、发布代码并将其部署到环境时,系统可以包含此属性,并更容易地跨边界跟踪代码版本。如果部署失败,您可以快速查看代码版本并将其追溯到有问题的版本。此属性实际上也是DORA 指标的关键元数据,因为您可以计算交付周期和失败部署恢复时间。
符合 SLSA 规范的供应链安全构件
首次实现时,构件属性命名空间包含多个属性。该命名空间内的一组关键属性涵盖了与SLSA 模型紧密对齐的证明。这实际上是可观测性和软件供应链安全首次建立直接联系。考虑 SLSA 定义的以下供应链威胁模型。

这些用于构件和证明的新属性有助于实时观察上述图表中建模的事件顺序。实际上,现有的以及将来将添加的约定使得安全和平台工程等核心软件交付能力之间能够通过可观测性语义实现互操作性。
CI/CD 可观测性工作组的下一步
如前所述,我们达成的第一个主要里程碑是合并 OTEP,用新属性扩展语义约定,该属性现已成为 OpenTelemetry 语义约定最新版本的一部分。
第二个重要里程碑是OTEP #258(环境变量上下文传播),该提案刚刚获得批准并合并。此 OTEP 为编写规范奠定了基础。
既然我们已在初始里程碑上取得了进展,我们已更新了CI/CD 可观测性 SIG 2024 年剩余时间的里程碑。我们的目标是在年底前完成尽可能多的既定里程碑。值得注意的是,我们专注于:
- 添加版本控制系统的指标约定。
- 在 CI/CD 系统中构建跟踪原型(例如,ArgoCD、GitHub、GitLab、Jenkins)。
- 让OTEP #258 准备好实施,添加到规范中。
- 向注册表添加更多属性,涵盖更多领域,例如:
- 开始进行跟踪和事件(日志)信号的特定工作,为其他规范之间的互操作性搭建桥梁。
- 采纳实体和资源 OTEP 的更改。
- 启用供应商特定扩展.
- 开源社区推广语义采用策略。
到目前为止提到的一切都只是开始!我们的CICD 项目看板上有大量已定义的工作,并且我们正在进行中!我们将继续对我们为 2024 年剩余时间设定的上述里程碑进行迭代。以下是值得关注的一些亮点:
- 版本控制系统指标——DORA 的领先指标
- 来自 GitHub Actions 和审计日志的跟踪
- 特别感谢以下为此组件做出贡献的人
- Tyler Helmuth – Honeycomb
- Andrzej Stencel – Elastic
- Curtis Robert – Splunk
- Justin Voss
- Kristof Kowalski – Anz Bank
- Mike Sarahan – Nvidia
- 特别感谢以下为此组件做出贡献的人
- GitHub 接收器组件的相应版本,但在 GitLab 中实现
以及更多!
扩展 OpenTelemetry 需要集体的力量
哇,要做的事情真多!这个 SIG 肯定会持续到 2024 年之后,并贯穿 2025 年。标准很难,但至关重要。而且,我们 SIG 中有一些了不起的人在为这些标准做出贡献!你想知道是谁吗?
首先,我们要感谢 OpenTelemetry 领导委员会的关键成员,他们为我们迄今为止的工作提供了大力支持,并将继续这样做。
来自 OpenTelemetry 技术委员会的两位核心赞助人是 Lightstep 的 Carlos Alberto 和 Google 的 Josh Suereth。Carlos 和 Josh 都大力支持 CICD 工作,真正指导我们完成取得成功所需的流程和细节。
来自 OpenTelemetry 治理委员会的 Microsoft 的 Trask Stalnaker 一直是我们出色的盟友,而 Skyscanner 的 Daniel Blanco 现在担任我们的现任联络员。Trask 和 Daniel 在支持 SIG 并使我们能够在 OpenTelemetry 社区拥有自己的会议方面发挥了关键作用。
除了这些人之外,我们还获得了以下关键人物的宝贵反馈、支持和贡献:
- Yuri Shkuro – Jaeger 的创建者,OpenTelemetry 的联合创始人
- Andrea Frittoli – Tekton CD 维护者,CDEvents 联合创建者,IBM
- Emil Bäckmark – CDEvents 和 Eiffel 维护者,Ericsson
- Magnus Bäck – Eiffel,Axis Communications
- Liudmila Molkova – Microsoft
- Christopher Kamphaus – Jemmic,Jenkins
- Giordano Ricci – Grafana Labs
- Giovanni Liva – Dynatrace,Keptn
- Ivan Calvo – Elastic,Jenkins
- Armin Ruech – Dynatrace
- Michael Safyan – Google
- Robb Kidd – Honeycomb
- Pablo Chacin – Grafana Labs
- Alexandra Konrad – Elastic
- Alexander Wert – Elastic
- Joao Grassi – Dynatrace
- DJ Gregor – Discover
列出了这么多名字!我们非常感谢所有支持这项倡议并帮助其实现的人!制定行业标准需要大量的思考能力和时间。棘手的问题确实棘手,但这些人已经迎接了挑战,让可观测性和 CICD 系统的世界变得更美好、更具互操作性!
加入工作组的讨论,产生影响
想了解更多信息?想参与塑造 CI/CD 可观测性?
我们邀请开发者和从业者参与讨论,贡献想法,并帮助塑造 CI/CD 可观测性和 OpenTelemetry 语义约定的未来。讨论在CNCF Slack 工作区下的#otel-cicd 频道进行,您可以参与本文中提到的任何 GitHub 问题,并加入 CICD SIG 每周的电话会议,时间为每周四太平洋时间上午 6 点。
本文的一个版本也发布在 CNCF 博客上。