You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenTelemetry Java如何获取OTEL_RESOURCE_ATTRIBUTES的键值对?

获取OTEL_RESOURCE_ATTRIBUTES中的自定义属性

当然可以获取,OpenTelemetry Java SDK会自动将OTEL_RESOURCE_ATTRIBUTES中的自定义属性与HostResource、OsResource等内置资源属性合并到同一个Resource对象中,直接通过该对象即可遍历所有属性:

  1. 获取全局OpenTelemetry实例的Resource:
OpenTelemetry openTelemetry = OpenTelemetrySdk.getGlobal();
Resource resource = openTelemetry.getResource();
  1. 遍历所有属性(包含内置和自定义):
for (AttributeKey<?> key : resource.getAttributeKeys()) {
    Object value = resource.getAttribute(key);
    System.out.printf("Resource Attribute: %s = %s%n", key.getKey(), value);
}

如果是手动构建OpenTelemetry SDK实例,也可以显式加载环境变量中的资源属性并合并:

Resource defaultResource = Resource.getDefault();
Resource envResource = Resource.fromEnvironmentVariables();
Resource combinedResource = defaultResource.merge(envResource);

// 后续将combinedResource传入TracerProvider、LogEmitterProvider的构建器
资源属性如何关联到日志和追踪
  • 追踪(Traces):当你通过Tracer创建Span时,OpenTelemetry会自动将Resource中的所有属性附加到Span的元数据中。所有由该Tracer生成的Span都会携带这些属性,在Jaeger、Zipkin等追踪后端查看Span详情时,就能看到包括自定义属性在内的所有Resource字段。

  • 日志(Logs):

    • 直接使用OpenTelemetry的LogEmitter创建日志时,LogRecord会自动关联当前的Resource属性;
    • 如果你使用Logback、SLF4J等日志框架的OpenTelemetry Instrumentation插件,插件会自动将Resource属性注入到每条日志的属性字段中,这些属性会随日志一起发送到后端(如Loki、Elasticsearch),方便后续过滤和分析。

内容的提问来源于stack exchange,提问作者David Andalcio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:22:09