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-service的peer.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_ENABLEDDefault: false
描述: 启用消费者消息接收遥测。
请注意,这将导致消费者端启动新的跟踪,并且只有一个span链接连接到生产者跟踪。
注意:表中列出的属性/环境变量名称仍处于实验阶段,可能会发生更改。
捕获最终用户属性
您可以配置代理以从Instrumentation库(如JavaEE/JakartaEE Servlet和Spring Security)捕获通用身份属性(enduser.id、enduser.role、enduser.scope)。
注意:鉴于涉及数据的敏感性,此功能默认关闭,但允许为特定属性进行选择性激活。在启用数据收集之前,您必须仔细评估每个属性的隐私影响。
系统属性: otel.instrumentation.common.enduser.id.enabled
环境变量: OTEL_INSTRUMENTATION_COMMON_ENDUSER_ID_ENABLEDDefault: false
描述: 确定是否捕获enduser.id语义属性。
系统属性: otel.instrumentation.common.enduser.role.enabled
环境变量: OTEL_INSTRUMENTATION_COMMON_ENDUSER_ROLE_ENABLEDDefault: false
描述: 确定是否捕获enduser.role语义属性。
系统属性: otel.instrumentation.common.enduser.scope.enabled
环境变量: OTEL_INSTRUMENTATION_COMMON_ENDUSER_SCOPE_ENABLEDDefault: 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语义属性中捕获的范围授予的权限前缀。