扩展

扩展无需创建单独的分发即可添加代理功能。

简介

扩展旨在在不创建新的 OpenTelemetry 分发或以任何方式修改代理代码的情况下,覆盖或自定义上游代理提供的仪器。

考虑一个已仪器化的数据库客户端,它为每次数据库调用创建一个 span,并从数据库连接中提取数据以提供 span 属性。以下是该场景中可使用扩展解决的示例用例:

  • “我根本不想要这个 span”:

    创建扩展以通过提供新的默认设置来禁用选定的仪器。

  • “我想编辑一些不依赖任何数据库连接实例的属性”:

    创建一个提供自定义 SpanProcessor 的扩展。

  • “我想编辑一些属性,并且它们的值取决于特定的数据库连接实例”:

    创建一个包含新仪器的扩展,该仪器将自己的建议注入到与原始方法相同的方法中。您可以使用 order 方法来确保它在原始仪器之后运行,并用新信息丰富当前 span。

  • “我想删除一些属性”:

    创建一个带有自定义导出器的扩展,或者在 OpenTelemetry Collector 中使用属性过滤功能。

  • “我不喜欢 OTel spans。我想修改它们及其生命周期”:

    创建一个扩展,该扩展禁用现有仪器,并用新仪器替换它,该新仪器将 Advice 注入与原始仪器相同(或更好)的方法中。您可以为此编写您的 Advice,并直接使用现有的 Tracer 或对其进行扩展。由于您有自己的 Advice,因此可以控制您使用的 Tracer

扩展示例

要获得如何为 OpenTelemetry Java instrumentation agent 创建扩展的演示,请构建并运行扩展项目


最后修改日期 2024 年 7 月 18 日:重新组织代理配置 (#4811) (94b83c90)