扩展

扩展可以添加代理的功能,而无需创建单独的分发文件。

简介

扩展的设计目的是在无需创建新的OpenTelemetry分发文件或以任何方式更改代理代码的情况下,覆盖或自定义上游代理的工具。

考虑一个已安装仪表的数据库客户端,每次数据库调用都会创建一个跨度,并从数据库连接中提取数据以提供跨度属性。以下是可以通过使用扩展解决的该场景的示例用例:

  • “我根本不想要此跨度”

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

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

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

  • “我想要编辑一些属性,其值取决于特定的数据库连接实例”

    创建一个具有新仪表的扩展,该仪表将其自己的建议注入与原始仪表相同的方法中。您可以使用order方法确保它在原始仪表之后运行,并使用新信息增强当前跨度。

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

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

  • “我不喜欢OTel跨度。我想要修改它们和它们的生命周期”

    创建一个禁用现有仪表并用新的仪表替换的扩展,新的仪表将Advice注入到与原始仪表相同(或更好的)方法中。您可以编写自己的Advice并直接使用现有的Tracer,或者扩展它。由于有了自己的Advice,您可以控制使用哪个Tracer

扩展示例

要了解如何为OpenTelemetry Java仪表代理创建扩展的演示,请构建和运行扩展项目

最后修改 December 10, 2023: translate (a4350d6e)