本文主要是介绍可观测性-Metrics-WebClient异步Http远程Call,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码示例
1.依赖导入
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
2.定义一个远程call客户端
@Service
public class BaiduClient {@Beanpublic WebClient baidu(WebClient.Builder webClientBuilder) {return webClientBuilder.baseUrl("https://xxxx.cn").build();}
}
3.定义一个指标注册器(输出到日志文件)
@Configuration
public class MetricsRegistryConfiguration {@ConditionalOnProperty(name = "metrics.export", havingValue = "log", matchIfMissing = true)@Beanpublic MeterRegistry meterRegistry() {return new LoggingMeterRegistry(new LoggingRegistryConfig() {@Overridepublic String get(String key) {return null;}@Overridepublic Duration step() {return Duration.ofSeconds(60);}}, Clock.SYSTEM);}}
4.日志配置
<!-- 定义metrics的输出为日志 INFO --><logger name="io.micrometer.core.instrument.logging.LoggingMeterRegistry" level="INFO"/>
5.调用示例
@Controller
public class XXXXController {@AutowiredWebClient baidu;@GetMapping("/test")@ResponseBodypublic Response captcha() {baidu.get().uri("/echo").retrieve().bodyToMono(String.class).block(Duration.ofSeconds(10));}
6.示例结果日志
http.client.requests{client.name=xxx.cn,error=none,exception=none,method=GET,outcome=SUCCESS,status=200,uri=/echo} throughput=0.3/s mean=0.271909994s max=0.6102772s
高级
你还可以使用ObservationWebClientCustomizer
定制。
默认情况下,生成的指标名称为http.client.requests
。您可以通过设置属性来自定义名称
management.observations.http.client.requests.name
(3.X版本)management.metrics.web.client.requests-metric-name
(2.X)
自定义标签,提供一个实现自org.springframework.web.reactive.function.client
包中的 ClientRequestObservationConvention 的 @Bean
低基数键
名称 | 描述 |
---|---|
method(必需) | HTTP 请求方法的名称,如果无法创建请求则为 “none”。 |
uri(必需) | 用于 HTTP 请求的 URI 模板,如果未提供则为 “none”。仅考虑 URI 的路径部分。 |
client.name(必需) | 从请求 URI 主机派生的客户端名称。 |
status(必需) | HTTP 响应的原始状态代码,或者在发生 IOException 时为 “IO_ERROR”,或者如果未接收到响应则为 “CLIENT_ERROR”。 |
outcome(必需) | HTTP 客户端交换的结果。 |
exception(必需) | 在交换过程中抛出的异常的名称,如果没有发生异常则为 “none”。 |
高基数键
名称 | 描述 |
---|---|
http.url(必需) | HTTP 请求的 URI。 |
参考:
- https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator
- https://spring.io/projects/spring-boot#learn
这篇关于可观测性-Metrics-WebClient异步Http远程Call的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!