需要引入spring-boot-starter-actuator,默認(rèn)情況下通過/actuator可以看到所有端點,也可以修改
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
management:
endpoints:
web:
base-path: /manage
端點配置
1.設(shè)置關(guān)閉所有端點
management:
endpoints:
enabled-by-default: false
2.啟動指定端點
management:
endpoint:
info:
enabled: true
3.數(shù)據(jù)緩存
management:
endpoint:
info:
cache:
time-to-live: 10s
http配置
1.通過http公開了除了env和beans端點之外所有內(nèi)容
management:
endpoints:
web:
exposure:
include: *
exclude: env,bean
cors跨域支持(默認(rèn)不支持)
management:
endpoints:
web:
cors:
allowed-origins: http://example.com
allowed-methods: GET,POST
修改magenserver服務(wù)器配置
management:
server:
port: 8081
address: 127.0.0.1
可以配置web服務(wù)使用不同的端口,同時綁定指定ip(不同端口表示啟動不同tomcat)
端點解釋:healthy健康檢查
訪問/actuator/health 查看
spring默認(rèn)提供 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("細(xì)節(jié)","1").up();
}else {
builder.withDetail("細(xì)節(jié)","2").down();
}
}
}
詳細(xì)內(nèi)容(默認(rèn)never)
management:
endpoint:
health:
show-details: always
端點日志配置:
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
通過/acutator/loggers查看日志
運(yùn)行時也可修改配置
metrics配置:
metrics支持查看關(guān)鍵性能指標(biāo),
可以與監(jiān)控系統(tǒng)進(jìn)行集成
自定義監(jiān)控指標(biāo),代碼中注入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();
}
}
}