扩展
扩展无需创建单独的分发即可添加代理功能。
简介
扩展旨在在不创建新的 OpenTelemetry 分发或以任何方式修改代理代码的情况下,覆盖或自定义上游代理提供的仪器。
考虑一个已仪器化的数据库客户端,它为每次数据库调用创建一个 span,并从数据库连接中提取数据以提供 span 属性。以下是该场景中可使用扩展解决的示例用例:
“我根本不想要这个 span”:
创建扩展以通过提供新的默认设置来禁用选定的仪器。
“我想编辑一些不依赖任何数据库连接实例的属性”:
创建一个提供自定义
SpanProcessor的扩展。“我想编辑一些属性,并且它们的值取决于特定的数据库连接实例”:
创建一个包含新仪器的扩展,该仪器将自己的建议注入到与原始方法相同的方法中。您可以使用
order方法来确保它在原始仪器之后运行,并用新信息丰富当前 span。“我想删除一些属性”:
创建一个带有自定义导出器的扩展,或者在 OpenTelemetry Collector 中使用属性过滤功能。
“我不喜欢 OTel spans。我想修改它们及其生命周期”:
创建一个扩展,该扩展禁用现有仪器,并用新仪器替换它,该新仪器将
Advice注入与原始仪器相同(或更好)的方法中。您可以为此编写您的Advice,并直接使用现有的Tracer或对其进行扩展。由于您有自己的Advice,因此可以控制您使用的Tracer。
扩展示例
要获得如何为 OpenTelemetry Java instrumentation agent 创建扩展的演示,请构建并运行扩展项目。