为什么(以及如何)github正在采用OpenTeLeMetry

Wolfgang Hennerbicler的形象

多年来,GitHub工程师已经开发了许多方法来观察我们的系统行为方式。我们主要利用STATSD进行指标,Syslog格式为纯文本日志和OpentRacing用于请求跟踪。虽然我们有点标准化了我们发出的东西,但我们倾向于在我们开发的每个新系统中遍布同样的问题。

而且,虽然每个组件用于其个人目的,但互操作性是挑战。例如,几件GitHub的基础设施使用不同的STATSD方言,这意味着我们必须在不同的地方进行特殊情况 - 我们的遥测代码 - 这是一个非琐碎的工作量!

不同的组件可以使用不同的词汇表进行类似的可观察性概念,使调查工作变得困难。例如,在各种遥测信号中遵循Github.com的请求围绕着围绕Github.Com要求,这可以包括指标,追踪,日志,错误和例外。虽然我们发出了很多遥测数据,但仍然难以在实践中使用。

我们需要一个可以让我们在Github上标准化遥测使用的解决方案,同时使组织周围的开发人员可以轻松介绍其代码。这OpenTeLemetry.项目为我们提供了这一点!

引入OpenTelemetry

OpenTeLemetry为遥测信号引入了常见的供应商 - 中性格式:OTLP。它还使得遥测信号能够容易地彼此相关。

此外,我们可以通过采用OpenTeLemetry SDKS来减少工程师的手工工作 - 他们固有的可扩展性允许工程师避免如果我们需要更改我们的遥测集合后端,并且只有一个客户端,我们可以轻松地重新启动他们的应用程序在CodeBases之间传播最佳实践。

OpenTelemetry使我们能够为我们的工程师构建集成和固执的解决方案。为可观察性而设计可能是我们应用工程师思想的前沿,因为我们可以使它如此有益。

我们正在研究的,为什么

目前,我们正专注于构建对OpenTelemetry跟踪信号的优秀支持。我们认为,跟踪应用程序应该是实现可观察性的主要切入点,因为我们生活在分布式系统的世界中,而跟踪以一种几乎不可思议的方式阐明了这一点。

我们相信跟踪允许我们在适当的时候自然地、轻松地添加/派生额外的信号:例如,许多指标可以由后端自动计算,跟踪事件可以自动转换为详细的日志,异常可以自动报告给我们的跟踪系统。

我们正在为OpenTeMetry构建已有的内部辅助库,使工程师可以快速添加跟踪到他们的系统,而不是花费时间重新发明轮子以获得不满意的结果。例如,我们的辅助库自动确保您在测试期间不发出痕迹,以使您的测试套件顺利运行:

#在初始化程序中,或配置/ application.rb openteLemetry :: sdk.configure do | c |如果是Rails.env.test?c.add_span_processor(#在生产中,万博足球竞猜app您几乎肯定想要BatchspanProcessor!OpenteLemetry :: SDK :: Trace :: Export :: SimpeNeLemetry :: SDK :: Trace :: Nope :: NoopsPanexporter.new))结束)

OpenTeLemetry社区已开始写入库,自动为其他库添加分布式跟踪功能 - 例如Ruby Postgres适配器。我们认为,仔细应用自动仪器可以产生强大的结果,鼓励开发人员定制追踪以满足其特定需求。这里,在以前没有追踪的Rails应用程序中,以下自动仪器足以进行有用,可操作的见解:

#在初始化程序中,或配置/ application.rb openteLemetry :: sdk.configure do | c |C.USE'OpenTeLemetry :: inserventation :: Rails'C.USE'OpenTeLemetry :: Orchentation :: PG',Enable_SQL_OBFUSCONATION:TRUE C.USE'OPENENELEMETRY :: INSTRUMENTION :: ACTIVEJOB'#此应用程序使各种出站HTTP调用,有各种底层#tptt http客户端库 - 你可能不需要这么多!C.USE'OpenTeLemetry :: inserventation :: Faraday'C.USE'OpenTeLemetry :: interningation :: net :: http'c.use'OpenTeLemetry :: internervation :: RestClient'结束

这个简短的示例是配置OpenTelemetry sdk的标准方法c.use线路告诉SDK加载并初始化我们的某一组自动仪器。在那后,我们可以立即深入了解表现不佳的页面!下面的此请求追踪视图显示了一种单独的自动仪器的完整,清晰的数据库操作迹象:

OpenteLemetry跟踪的屏幕截图,以确定糟糕的页面性能

我们正在构建我们今天拥有的信号的智能自动关联,以OpenTelemetry追踪为根。例如,通过在日志行中自动添加跟踪标识符,我们可以将请求跟踪与日志连接起来。我们有一个令人兴奋的计划,即基于这些信号为团队自动构建有用且相关的仪表板、警报和工具。随着OpenTelemetry工作的进展,我们将把重点转移到日志和度量系统上,以便在跟踪还不够的时候使用。我们将尽我们所能为OpenTelemetry项目做出贡献,供所有人使用!

你为什么要兴奋,你应该如何参与?

OpenTeLemetry.是一个CNCF.项目已经启动运行了很长一段时间。这是一个非常广泛的项目,我们相信它有真正的潜力改变我们整个行业如何对待我们工作中最必要的一个方面——如何观察和理解我们的系统。这就是为什么我们对它如此兴奋,也是为什么我们要把它介绍给我们的工程师。

更好、更可观测的分布式系统是可能的,我们有机会共同塑造它们。如果你感兴趣,我们邀请你加入OpenTeLemetry社区提高每个人的可观察性。如果你想帮助我们改善我们的内部开发者体验,我们邀请你加入我们!!