Spring Boot Endpoint监控端点扩展

举报
西魏陶渊明 发表于 2022/09/25 02:17:19 2022/09/25
【摘要】 提示 什么是端点? 端点就是SpringBoot通过web或者jmx的方式向外部暴露应用的信息,或者上下文的信息。SpringCloud-Admin就是根据此技术来进行实现的。他们用到的技术就是@Endpoint,而不是通过自己@GetMapping之类进行实现的。下面小编就带大家一起来学习端点的使用。学会本文后在利用前...

提示

什么是端点? 端点就是SpringBoot通过web或者jmx的方式向外部暴露应用的信息,或者上下文的信息。SpringCloud-Admin就是根据此技术来进行实现的。他们用到的技术就是@Endpoint,而不是通过自己@GetMapping之类进行实现的。下面小编就带大家一起来学习端点的使用。学会本文后在利用前面我们讲过的autoconfigure的自动化配置后,你就可以开发更高级的SpringBoot应用(非业务系统)。本教程将带你从业务系统开发者转变为研发系统开发者。

用过SpringBoot的同学可能知道,SpringBoot有很多监控端点,比如当我们引入健康监控组件


    
  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-actuator</artifactId>
  4. <version>2.6.7</version>
  5. </dependency>
1 2 3 4 5

系统就会自动暴露出许多,web端口供外部调用,获取应用的信息,或者上下文的信息。

image-20190308191019856

# 一、如何定义端点

可以使用@Endpoint,@WebEndpoint,@JmxEndpoint,或者EndpointWebExtension来实现HTTP方式的端点,可以是传统SpringMVC也可以是最新的Spring WebFlux

  • @Endpoint相当于@WebEndpoint@JmxEndpoint的整合。web和jmx方式都支持

  • @WebEndpoint 只会生成web的方式的端点监控

image-20190308190517126

  • JmxEndpoint 只会生成Jmx的方式监控

image-20190308183731989

Operation HTTP method
@ReadOperation GET
@WriteOperation POST
@DeleteOperation DELETE

# 二、路径规则

默认的基础路径是/actuator,如果一个端点配置的路径是sessions,那么它的全路径就是/actuator/sessions


    
  1. @Component
  2. @WebEndpoint(id = "sessions")
  3. public class MyHealthEndpoint {
  4. @ReadOperation
  5. public Info get(@Selector String name) {
  6. return new Info(name, "23");
  7. }
  8. }
1 2 3 4 5 6 7 8

@Selector 的含义是让这个路径变成/actuator/sessions/{name} 我们能从路径上获取一个入参。

# 三、相关配置

# 3.1 自定义管理端点路径

management.endpoints.web.base-path = /manage

此配置会将/actuator/sessions/{name}转换成/manage/sessions/{name}

# 3.2 自定义管理服务器地址

默认端口和应用的端口是一致的,但是也可以通过配置的方式改变端口


    
  1. management.server.port = 8081
  2. management.server.address = 127.0.0.1
1 2

# 3.3 激活端点


    
  1. //激活所有的端点的web方式请求
  2. management.endpoints.web.exposure.include=*
  3. //关闭端点web方式
  4. management.endpoints.web.exposure.exclude=env,beans
  5. //激活所有的JMX方式请求
  6. management.endpoints.jmx.exposure.include=*
1 2 3 4 5 6

# 3.4 跨域方式请求


    
  1. //允许跨域的网址
  2. management.endpoints.web.cors.allowed-origins=http://example.com
  3. //允许跨域的方法
  4. management.endpoints.web.cors.allowed-methods=GET,POST
1 2 3 4

# 四、总结

最后我们来总结。 其实@WebEndpoint 就相当于声明成一个@RestController的控制类而请求方法分别被下面注解代替。

Operation HTTP method
@ReadOperation GET
@WriteOperation POST
@DeleteOperation DELETE

文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。

原文链接:springlearn.blog.csdn.net/article/details/125858084

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。