当前位置: 首页 > news >正文

可观测性-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
http://www.lryc.cn/news/198369.html

相关文章:

  • Android之播放本地视频和Url视频方法
  • 设计模式:工厂方法模式(C#、JAVA、JavaScript、C++、Python、Go、PHP):
  • C++基础——指针
  • PLC 学习day02 硬件输入/输入的知识
  • rabbitMq (2)
  • 通讯协议学习之路:RS422协议理论
  • 剪映failed to initialize,cuda.is_available()为false解决
  • 基于Spring Boot的LDAP开发全教程
  • 在 Linux 上保护 SSH 服务器连接的 8 种方法
  • 摩尔信使MThings的协议转换(数据网关)功能
  • Mac安装Kali保姆级教程
  • 利用Spring Boot框架做事件发布和监听
  • KingBase库模式表空间和客户端认证(kylin)
  • h5的扫一扫功能 (非微信浏览器环境下)
  • Typora 导出PDF 报错 failed to export as pdf. undefined 解决方案
  • [架构之路-239]:目标系统 - 纵向分层 - 中间件middleware
  • javascript利用xhr对象实现http流的comet轮循,主要是利用readyState等于3的特点
  • 【Mybatis源码】XPathParser解析器
  • 辉视智慧酒店解决方案助力传统酒店通过智能升级焕发新生
  • 文件和命令的查找与处理
  • 第七章:最新版零基础学习 PYTHON 教程—Python 列表(第三节 -Python程序访问列表中的索引和值)
  • 接口测试面试题整理​​​​​​​
  • 【保姆级教程】ChatGPT/GPT4科研技术应用与AI绘图
  • 凉鞋的 Godot 笔记 202. 变量概述与简介
  • HTML 常用标签及练习
  • Python 编程基础 | 第六章-包与模块管理 | 1、包与模块简介
  • 为中小企业的网络推广策略解析:扩大品牌知名度和曝光度
  • 资源受限MCU Flash空间占用优化
  • 冰蝎默认加密的流量解密
  • C#字符串操作:拼接、截取、分割等高效处理方法