需要引入spring-boot-starter-actuator,默认情况下通过/actuator可以看到所有端点,也可以修改
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
management:
endpoints:
web:
base-path: /manage
端点配置
1.设置关闭所有端点
management:
endpoints:
enabled-by-default: false
2.启动指定端点
management:
endpoint:
info:
enabled: true
3.数据缓存
management:
endpoint:
info:
cache:
time-to-live: 10s
http配置
1.通过http公开了除了env和beans端点之外所有内容
management:
endpoints:
web:
exposure:
include: *
exclude: env,bean
cors跨域支持(默认不支持)
management:
endpoints:
web:
cors:
allowed-origins: http://example.com
allowed-methods: GET,POST
修改magenserver服务器配置
management:
server:
port: 8081
address: 127.0.0.1
可以配置web服务使用不同的端口,同时绑定指定ip(不同端口表示启动不同tomcat)
端点解释:healthy健康检查
访问/actuator/health 查看
spring默认提供 redis rabbitmq datasource mongoDB
自定义健康检查
@Component
public class MyHealthCheck extends AbstractHealthIndicator {
@Override
protected void doHealthCheck(Health.Builder builder) throws Exception {
int i =new Random().nextInt();
if(1%2==0){
builder.withDetail("细节","1").up();
}else {
builder.withDetail("细节","2").down();
}
}
}
详细内容(默认never)
management:
endpoint:
health:
show-details: always
端点日志配置:
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
通过/acutator/loggers查看日志
运行时也可修改配置
metrics配置:
metrics支持查看关键性能指标,
可以与监控系统进行集成
自定义监控指标,代码中注入MeterRegistry对象
@Component
public class MyMetrics {
private final List<String> words = new CopyOnWriteArrayList<>();
public MyMetrics(MeterRegistry meterRegistry){
meterRegistry.gaugeCollectionSize("dictionary.size", Tags.empty(),this.words);
}
}
自定义端点:
@Endpoint(id = "myEndpoint")
@Component
public class MyEndPoint {
String name = "default";
@ReadOperation
public String getName(){
return "{\"name\":\""+name+"\"}";
}
@DeleteOperation
public void delName(){
name = "";
}
@WriteOperation
public void setName(@Selector String name){
this.name = name;
}
}
jmx配置:
public class TestJmxListener implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
JmxTest jmxTest;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
try {
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName = null;
objectName = new ObjectName("JmxBean:name=testJMIX");
server.registerMBean(jmxTest,objectName);
Registry registry = LocateRegistry.createRegistry(1099);
JMXServiceURL jmxServiceURL = new JMXServiceURL("server:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(jmxServiceURL,null,server);
cs.start();
} catch (Exception e){
e.printStackTrace();
}
}
}