Spring Boot Actuator分析,自定义端点
程序员文章站
2022-05-02 11:42:13
...
每个Actuator端点都是有一个特定的ID用来决定端点的路径。/beans端点的默认ID就是 beans。端点的路径是由ID决定的,那么可以通过修改ID来改变端点的路径。要做的就是设置一个属性, 属性名是 endpoints.endpoint-id.id
- 修改端点的ID:
endpoints.beans.id=beansome
这时要是想查看bean的信息时,路径就由原来的/beans变为/beansome;
- 开启和禁用端点:
禁用端点所有的端点: endpoints.enabled=false
禁用某个特定的端点:
endpoints.endpoint-id.enabled=false
禁用后,再次访问该端点的URL时,会出现404错误。
禁用某个特定的端点:
endpoints.endpoint-id.enabled=false
禁用后,再次访问该端点的URL时,会出现404错误。
- 默认端点信息:
HTTP方法 |
路径 |
描述 |
鉴权 |
GET |
/autoconfig |
查看自动配置的使用情况 |
true |
GET |
/configprops |
查看配置属性,包括默认配置 |
true |
GET |
/beans |
查看bean及其关系列表 |
true |
GET |
/dump |
打印线程栈 |
true |
GET |
/env |
查看所有环境变量 |
true |
GET |
/env/{name} |
查看具体变量值 |
true |
GET |
/health |
查看应用健康指标 |
false |
GET |
/info |
查看应用信息 |
false |
GET |
/mappings |
查看所有url映射 |
true |
GET |
/metrics |
查看应用基本指标 |
true |
GET |
/metrics/{name} |
查看具体指标 |
true |
POST |
/shutdown |
关闭应用 |
true |
GET |
/trace |
查看基本追踪信息 |
true |
- 自定义端点
首先,我们需要继承 AbstractEndpoint 抽象类。因为它是 Endpoint 接口的抽象实现,此外,我们还需要重写 invoke 方法。
@ConfigurationProperties(prefix = "endpoints.person")
public class PersonEndpoint extends AbstractEndpoint<Map<String, Object>> {
public PersonEndpoint() {
super("person", false);
}
@Override
public Map<String, Object> invoke() {
Map<String, Object> result = new HashMap<String, Object>();
DateTime dateTime = DateTime.now();
result.put("当前时间", dateTime.toString());
result.put("当前时间戳", dateTime.getMillis());
return result;
}
}
通过设置 @ConfigurationProperties(prefix = "endpoints.person"),我们就可以在 application.properties 中通过 endpoints.person 配置我们的端点。上面就是自定义的端点,简单解释下:
- 构造方法PersonEndpoint(),两个参数分别表示端点 ID 和是否端点默认是敏感的。我这边设置端点 ID 是 servertime,它默认不是敏感的。
- 我们需要通过重写 invoke 方法,返回我们要监控的内容。这里我定义了一个 Map,它将返回两个参数,一个是标准的包含时区的当前时间格式,一个是当前时间的时间戳格式
创建配置类,实例化bean
@Configuration
public class EndpointConfig {
@Bean
public static Endpoint<Map<String, Object>> servertime() {
return new PersonEndpoint();
}
}
启动Spring Boot工程在浏览器中访问
http://localhost:8080/person
上一篇: PHP 比较两个数组是否是相同
下一篇: 《软件工程导论》期末复习知识总结
推荐阅读
-
SpringBoot 源码解析 (六)----- Spring Boot的核心能力 - 内置Servlet容器源码分析(Tomcat)
-
[Spring Boot]使用自定义注解统一请求返回值
-
spring boot使用自定义的线程池执行Async任务
-
Spring-Boot使用嵌入式容器,那怎么配置自定义Filter呢
-
spring-boot-2.0.3不一样系列之番外篇 - 自定义session管理,绝对有值得你看的地方
-
Spring boot 学习笔记 1 - 自定义错误
-
IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示
-
浅谈Spring Boot 属性配置和自定义属性配置
-
Spring boot中自定义Json参数解析器
-
spring boot 2.0 源码分析(四)