Instrumentation 配置

此页面描述了可同时应用于多个Instrumentation的通用设置。

对等服务名称

对等服务名称是连接到的远程服务的名称。它对应于本地服务的资源中的service.name

系统属性: otel.instrumentation.common.peer-service-mapping环境变量: OTEL_INSTRUMENTATION_COMMON_PEER_SERVICE_MAPPING

描述: 用于指定从主机名或IP地址到对等服务的映射,作为逗号分隔的<host_or_ip>=<user_assigned_name>对。对等服务将作为属性添加到与映射匹配的主机或IP地址的span中。

例如,如果设置为以下值

1.2.3.4=cats-service,dogs-abcdef123.serverlessapis.com=dogs-api

那么,对1.2.3.4的请求将具有cats-servicepeer.service属性,对dogs-abcdef123.serverlessapis.com的请求将具有dogs-api的属性。

自Java代理版本1.31.0以来,可以提供端口和路径来定义peer.service

例如,如果设置为以下值

1.2.3.4:443=cats-service,dogs-abcdef123.serverlessapis.com:80/api=dogs-api

然后,对1.2.3.4的请求将没有peer.service属性的覆盖,而1.2.3.4:443将具有peer.servicecats-service,对dogs-abcdef123.serverlessapis.com:80/api/v1的请求将具有dogs-api的属性。

数据库语句清理

代理在设置db.statement语义属性之前,会清理所有数据库查询/语句。查询字符串中的所有值(字符串、数字)都将被问号(?)替换。

注意:JDBC绑定参数未包含在db.statement中。如果您希望捕获绑定参数,请参阅相关问题

示例

  • SQL查询SELECT a from b where password="secret"在导出的span中将显示为SELECT a from b where password=?
  • Redis命令HSET map password "secret"在导出的span中将显示为HSET map password ?

此行为默认对所有数据库Instrumentation都已启用。使用以下属性禁用它

系统属性: otel.instrumentation.common.db-statement-sanitizer.enabled环境变量: OTEL_INSTRUMENTATION_COMMON_DB_STATEMENT_SANITIZER_ENABLED

默认: true
描述: 启用数据库语句清理。

在消息传递Instrumentation中捕获消费者消息接收遥测

您可以配置代理以在消息传递Instrumentation中捕获消费者消息接收遥测。使用以下属性启用它

系统属性: otel.instrumentation.messaging.experimental.receive-telemetry.enabled环境变量: OTEL_INSTRUMENTATION_MESSAGING_EXPERIMENTAL_RECEIVE_TELEMETRY_ENABLED

Default: false
描述: 启用消费者消息接收遥测。

请注意,这将导致消费者端启动新的跟踪,并且只有一个span链接连接到生产者跟踪。

注意:表中列出的属性/环境变量名称仍处于实验阶段,可能会发生更改。

捕获最终用户属性

您可以配置代理以从Instrumentation库(如JavaEE/JakartaEE ServletSpring Security)捕获通用身份属性enduser.idenduser.roleenduser.scope)。

注意:鉴于涉及数据的敏感性,此功能默认关闭,但允许为特定属性进行选择性激活。在启用数据收集之前,您必须仔细评估每个属性的隐私影响。

系统属性: otel.instrumentation.common.enduser.id.enabled环境变量: OTEL_INSTRUMENTATION_COMMON_ENDUSER_ID_ENABLED

Default: false
描述: 确定是否捕获enduser.id语义属性。

系统属性: otel.instrumentation.common.enduser.role.enabled环境变量: OTEL_INSTRUMENTATION_COMMON_ENDUSER_ROLE_ENABLED

Default: false
描述: 确定是否捕获enduser.role语义属性。

系统属性: otel.instrumentation.common.enduser.scope.enabled环境变量: OTEL_INSTRUMENTATION_COMMON_ENDUSER_SCOPE_ENABLED

Default: false
描述: 确定是否捕获enduser.scope语义属性。

Spring Security

对于使用自定义授权前缀的Spring Security用户,您可以使用以下属性从enduser.*属性值中剥离这些前缀,以更好地表示实际的角色和范围名称。

系统属性: otel.instrumentation.spring-security.enduser.role.granted-authority-prefix环境变量: OTEL_INSTRUMENTATION_SPRING_SECURITY_ENDUSER_ROLE_GRANTED_AUTHORITY_PREFIX

默认: ROLE_
描述: 标识要在enduser.role语义属性中捕获的角色授予的权限前缀。

系统属性: otel.instrumentation.spring-security.enduser.scope.granted-authority-prefix环境变量: OTEL_INSTRUMENTATION_SPRING_SECURITY_ENDUSER_SCOPE_GRANTED_AUTHORITY_PREFIX

默认: SCOPE_
描述: 标识要在enduser.scopes语义属性中捕获的范围授予的权限前缀。