扩展
扩展可以添加代理的功能,而无需创建单独的分发文件。
简介
扩展的设计目的是在无需创建新的OpenTelemetry分发文件或以任何方式更改代理代码的情况下,覆盖或自定义上游代理的工具。
考虑一个已安装仪表的数据库客户端,每次数据库调用都会创建一个跨度,并从数据库连接中提取数据以提供跨度属性。以下是可以通过使用扩展解决的该场景的示例用例:
-
“我根本不想要此跨度”:
创建一个扩展来通过提供新的默认设置来禁用选定的仪表。
-
“我想要编辑一些不依赖于任何数据库连接实例的属性”:
创建一个提供自定义
SpanProcessor
的扩展。 -
“我想要编辑一些属性,其值取决于特定的数据库连接实例”:
创建一个具有新仪表的扩展,该仪表将其自己的建议注入与原始仪表相同的方法中。您可以使用
order
方法确保它在原始仪表之后运行,并使用新信息增强当前跨度。 -
“我想要删除一些属性”:
创建一个具有自定义导出器的扩展,或在OpenTelemetry Collector中使用属性过滤功能。
-
“我不喜欢OTel跨度。我想要修改它们和它们的生命周期”:
创建一个禁用现有仪表并用新的仪表替换的扩展,新的仪表将
Advice
注入到与原始仪表相同(或更好的)方法中。您可以编写自己的Advice
并直接使用现有的Tracer
,或者扩展它。由于有了自己的Advice
,您可以控制使用哪个Tracer
。
扩展示例
要了解如何为OpenTelemetry Java仪表代理创建扩展的演示,请构建和运行扩展项目。
最后修改 December 10, 2023: translate (a4350d6e)