定制 Endpoint
1. 定制 Health 信息
// 定制的 Endpoint,名字会自动去掉后边的 HealthIndicator
@Component
public class MyComHealthIndicator extends AbstractHealthIndicator {
/**
* 真实的检查方法
* @param builder
* @throws Exception
*/
@Override
protected void doHealthCheck(Health.Builder builder) throws Exception {
// mongodb 获取连接进行测试
HashMap<String, Object> map = new HashMap<>();
// 检查完成
if(true){
builder.up(); //健康
// builder.status(Status.UP);
map.put("ms",100);
}else{
builder.down();
// builder.status(Status.DOWN);
map.put("ms",3000);
}
// 返回信息
builder.withDetail("code",100)
.withDetails(map);
}
}
management:
health:
enabled: true
show-details: always # 总显示详细信息,可以显示每个模块的状态信息。
2. 定制 info
直接在 application.yaml 中编辑就可以
info:
appName: boot-admin
appVersion: 1.0.0
mavenProjectName: @project.artifactId@
mavenProjectVersion: @project.Version@
# 获取maven pom.xml文件中的内容,只要使用 @内容@ 即可。
注意要在 pom.xml 文件中添加以下内容
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
或者使用代码来定制
@Component
public class AppInfoContributor implements InfoContributor {
@Override
public void contribute(Info.Builder builder) {
HashMap<String, Object> map = new HashMap<>();
builder.withDetail("msg","hello")
.withDetails(map);
}
}
3. 定制 Metrics 信息
class MyService {
Counter counter;
public MyService(MeterRegistry meterRegistry){
counter = meterRegistry.counter("showname");
}
public void hello(){
counter.increment();
}
}
// 或者用以下方法
@Bean
MeterBinder queueSize(Queue queue){
return (rigistry) -> Gauge.builder("queueSize",queue::size).register(registry);
}
4. 定制 监控端点 Endpoint
@Component
@Endpoint(id="myservice")
public class MyServiceEndpoint{
@ReadOperation
public Map getDockerInfo(){
return Collections.singletonMap("info","docker started...");
}
@WriteOperation
public void stopDocker(){
System.out.println("docker stopped...");
}
}