开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情
一 Actuator基础知识
1.引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 引入actuator监控依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.配置application.yml文件
management:
endpoint:
shutdown:
enabled: true
endpoints:
web :
exposure :
include : '*'
info:
app:
name : imooc-springboot-study
groupId : imooc-spingboot-study
version: 1.0-SNAPSHOT
代码说明:
- shutdown:关闭应用监控
- endpoints:web:exposure:include:"*":打开所有监控点
- info:设置应用相关信息
3.重启应用
4.相关url配置
- 获取健康状态:127.0.0.1:8000/imooc/actuator/health
- 获取应用信息:127.0.0.1:8000/imooc/actuator/info
url汇总:
二 自定义监控器Actuactor
1.新增endpoint包
2.新增DateTimeEndPoint类文件
package com.imooc.springboot.study.endpoint;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Endpoint(id = "datetime")
public class DateTimeEndPoint {
private String format = "yyyy-mm-dd HH:mm:ss";
@ReadOperation
public Map<String,Object> info(){
Map<String,Object> info = new HashMap<>();
info.put("name","xiaoming");
info.put("age",20);
info.put("datetime",new SimpleDateFormat(format).format(new Date()));
return info;
}
@WriteOperation
public void setFormat(String format){
this.format = format;
}
}
代码说明:
- @Endpoint(id = "datetime"):定义endPoint的名字,也就是我们url访问的地址, 本例子url地址为http://127.0.0.1:8000/imooc/actuator/datetime
- @ReadOperation:读取监控配置
- public Map<String,Object> info:返回info对象方法
- @WriteOperation:设置监控配置
3.新增自定义监控配置DateTimeEndpointConfig
package com.imooc.springboot.study.endpoint;
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DateTimeEndpointConfig {
@Bean
@ConditionalOnMissingBean
@ConditionalOnEnabledEndpoint
public DateTimeEndPoint dateTimeEndPoint(){
return new DateTimeEndPoint();
}
}
代码说明:
- @Configuration:注解为配置类
- @Bean:定义为Bean
- @ConditionalOnMissingBean:Bean不存在,则注入
- @ConditionalOnEnabledEndpoint:开启则注入
4.重启项目
访问url:http://127.0.0.1:8000/imooc/actuator/datetime
修改时间格式:
方法:post
url地址:http://127.0.0.1:8000/imooc/actuator/datetime
请求数据:
{
"format":"yyyy-MM-dd"
}