我尝试通过这种方式向微米Metric对象添加一个动态标签,但即使在其他服务中不是这样,经过身份验证的用户也总是为空。
@Bean
public MeterFilter meterFilter() {
return new MeterFilter() {
@Override
public Meter.Id map(Meter.Id id) {
String uri = id.getTag("uri");
if (uri != null && uri.contains("/api")) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null) {
id.withTags(Tags.of("user", authentication.getName()));
}
}
return id;
}
};
}
Authentication
对象始终为空,因为SecurityContextHolder.clearContext()
调用位于FilterChain
的末尾
1条答案
按热度按时间dphi5xsq1#
这可能不是一个好主意,因为用户名(主体)可能是高基数数据,请参阅本文了解更多详细信息:https://develotters.com/posts/high-cardinality/
您可以使用Exemplars将用户名附加到跨度并关联指标,而不是执行此操作。