作者:Dotan Horovits 和 Adriel Perkins,OpenTelemetry CI/CD 可观测性特别兴趣小组项目负责人
我们多年一直在讨论 CI/CD 管道报告和观察所需的共同“语言”,如今,我们终于看到这种语言的首个“单词”进入了可观测性的“词典”——OpenTelemetry 开放规范。随着 OpenTelemetry 语义约定 v1.27.0 的发布,你可以找到专门用于报告 CI/CD 管道的属性[1]。
这是 OpenTelemetry CI/CD 可观测性特别兴趣小组(SIG)[2]辛勤工作的结果。随着我们完成第一阶段的核心里程碑,我们觉得现在是与大家分享的好时机。
工程师需要对 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 频道迅速壮大,我们很快发现这个问题在许多组织中普遍存在。
在技术监督委员会和 CNCF 内其他成员的反馈下,我们请求批准成立一个专门的工作组,以在 OpenTelemetry 的语义约定 SIG 下讨论该主题。在他们的支持下,我们启动了正式的 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 点 PT 的专门会议时间。在这里,团队讨论当前和未来的工作,然后在周一的更大语义约定会议上进行汇报。我们非常期待社区的持续支持和参与,以推动这一标准化的重要领域。
CI/CD 是最新 OpenTelemetry 语义约定的一部分
经过几个月的迭代和反馈,第一组语义约定已在 v1.27.0 版本中合并。这一变化为 CI/CD 创建了基础语义,包括 CICD、artifacts、VCS、test 和 deployment 命名空间。这是 CI/CD 可观测性 SIG 和整个行业的重要里程碑。这为我们小组的其他目标奠定了基础,使其得以形成并实现。
那么,这实际上意味着什么?它提供了什么价值?让我们考虑两个命名空间的实际例子。
从版本控制系统(VCS)跟踪发布修订
版本控制系统(VCS)属性涵盖了 VCS 中常见的多个领域,如 refs 和变更(拉取/合并请求)。vcs.repository.ref.revision 属性是一个关键的元数据。随着 GitHub 和 GitLab 等版本控制系统发布事件,它们现在可以包含这个符合语义的属性。这意味着在集成代码、发布和部署到环境时,系统可以包括此属性,更轻松地跨越边界跟踪代码修订。在部署失败的情况下,你可以快速查看代码的修订并追溯到有问题的发布。这个属性实际上也是 DORA 指标中计算变更交付时间和失败部署恢复时间的关键元数据。
供应链安全的制品,与 SLSA 规范对齐
artifact 属性命名空间在首次实施中包含多个属性。这个命名空间中的一组关键属性涵盖了与 SLSA 模型密切相关的认证。这实际上是可观测性与软件供应链安全之间首次建立直接联系。考虑 SLSA 定义的供应链威胁模型:
制品票和认证的这些新属性有助于实时观察上图中建模的事件序列。实际上,现有的约定和将来添加的约定使得核心软件交付能力(如安全性和平台工程)之间通过可观测性语义实现互操作性。
CI/CD 可观测性工作组的下一步
我们提到的第一个重大里程碑是合并 OTEP,以使用新属性扩展语义约定,这现在已成为 OpenTelemetry 语义约定最新版本的一部分。
另一个重要里程碑是 OTEP #258,关于环境变量上下文传播,这一提案刚刚获得批准并合并。这个 OTEP 为编写规范奠定了基础。
随着我们在初始里程碑上取得进展,我们已更新 CI/CD 可观测性 SIG 的里程碑,目标是在 2024 年年底之前完成尽可能多的定义里程碑。特别是,我们专注于:
为版本控制系统添加度量约定。 在 CI/CD 系统中构建追踪原型(例如 ArgoCD、GitHub、GitLab、Jenkins)。 为 OTEP #258 准备实施,以添加到规范中。 向注册表添加更多领域的附加属性,如: 软件故障事件 有关 CI/CD 运行器的系统属性 开始处理信号特定的追踪和事件(日志)(为其他规范之间的互操作性搭建桥梁)。 采用来自实体和资源 OTEP 的更改。 启用特定供应商的扩展。 开源社区的语义采纳宣传策略。
以上提到的内容只是开始!我们在 CI/CD 项目板[3]上定义了大量工作,并且正在进行中!我们将继续迭代上述里程碑,争取在 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 技术委员会的两位核心赞助人,Carlos Alberto(Lightstep)和 Josh Suereth(Google)。Carlos 和 Josh 对 CI/CD 工作给予了极大支持,真正引导我们成功的流程和细节。
来自 OpenTelemetry 治理委员会的 Trask Stalnaker(Microsoft)和 Daniel Blanco(Skyscanner)也提供了出色的支持。Trask 和 Daniel 在支持 SIG 方面发挥了重要作用,使我们能够在 OpenTelemetry 社区中拥有自己的会议。
除了这些人,我们还得到了以下关键人物的重大反馈、支持和贡献:
Yuri Shkuro – Jaeger 创始人,OpenTelemetry 联合创始人 Andrea Frittoli – Tekton CD 维护者,CDEvents 联合创始人,IBM Emil Bäckmark – CDEvents 和 Eiffel 维护者,爱立信 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
这真是一个庞大的名单!我们非常感谢所有支持这一倡议并帮助实现的人!建立行业标准需要大量的思考能力和时间。困难的问题很难,但这些人迎接了挑战,使可观测性和 CI/CD 系统的世界变得更好、更具互操作性!
加入工作组讨论,产生影响
想了解更多吗?想参与塑造 CI/CD 可观测性吗?
我们邀请开发者和实践者参与讨论,贡献想法,帮助塑造 CI/CD 可观测性和 OpenTelemetry 语义约定的未来。讨论在 CNCF Slack 工作区的 #otel-cicd 频道进行,你可以在 GitHub 上发声,并参加每周四上午 6 点 PT 的 CICD SIG 会议。
专门用于报告 CI/CD 管道的属性: https://opentelemetry.io/docs/specs/semconv/attributes-registry/cicd/
[2]OpenTelemetry CI/CD 可观测性特别兴趣小组(SIG): https://github.com/open-telemetry/community/blob/main/projects/ci-cd.md
[3]CI/CD 项目板: https://github.com/orgs/open-telemetry/projects/79
点击【阅读原文】阅读网站原文。
CNCF概况(幻灯片)
扫描二维码联系我们!
CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。
CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请关注CNCF微信公众号。