我目前在 Java Spring Boot 中使用拦截器,并在 Python/Flask 中使用带有行李的
@before_request
钩子来动态地将 http 端点和 http 方法等属性添加到我的所有指标中。
我知道,我可以向资源添加共享属性,但这里的属性值是固定的。我知道我可以通过使用千分尺来获得一些这种行为。但我想知道实现它的“纯粹”OpenTelemetry 方法。有没有一种自动的方法来做到这一点,而不是手动编写钩子和拦截器?
对于 Java(使用 javaagent),您可以使用
ResourceProvider
创建扩展。这允许您动态定义资源。
这是一个例子。
@AutoService(ResourceProvider.class)
public class DemoResourceProvider implements ResourceProvider {
@Override
public Resource createResource(ConfigProperties config) {
Attributes attributes = Attributes.builder().put("custom.resource", "demo").build();
return Resource.create(attributes);
}
}
您可以参考此文档以获取有关扩展的更多信息。