SpringBoot
SpringBoot 开发实用篇
文章目录
- SpringBoot
- SpringBoot 开发实用篇
- 6 监控
- 6.5 health 端点指标控制
- 6.5.1 问题引入
- 6.5.2 health 端点指标控制
- 6.5.3 小结
6 监控
6.5 health 端点指标控制
6.5.1 问题引入
之前我们通过配置文件以及配置类完成了info 端点的信息自定义设置
问题来了,那旁边的健康指标可以自定义吗?
6.5.2 health 端点指标控制
试试看能不能控制health 端点
直接重新启动服务器
查看面板
可以看到,其实没有任何变化
health 代表的是一个应用中的状态信息
类似上面的图中,db:数据库信息、diskSpace:磁盘信息、ping:能不能ping 通
给它加一个小技术
再次重启服务器,重新查看面板
上来了【如果我把redis 服务直接停掉】
重启应用
可以看到,效果很明显,服务直接down 掉了
而且这些错误信息和控制台输出的信息是一致的
一个down,直接导致我们的整个应用都down 掉了
再把redis 开启
刷新面板
不用重启,应用自动连接上去了
【自定义健康指标】
package com.dingjiaxiong.actuator;
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* ClassName: HealthConfig
* date: 2022/10/24 9:26
*
* @author DingJiaxiong
*/
@Component
public class HealthConfig extends AbstractHealthIndicator {
@Override
protected void doHealthCheck(Health.Builder builder) throws Exception {
builder.withDetail("runTime",System.currentTimeMillis());
Map infoMap = new HashMap();
infoMap.put("buildTime","2022");
builder.withDetails(infoMap);
}
}
重启应用,查看面板
可以看到信息,确实上去了,这个状态自己能设定吗【答案是当然的】
再次重启服务,查看面板
这样就up 了
这样的话我们就可以很容易加上一个条件判断
package com.dingjiaxiong.actuator;
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* ClassName: HealthConfig
* date: 2022/10/24 9:26
*
* @author DingJiaxiong
*/
@Component
public class HealthConfig extends AbstractHealthIndicator {
@Override
protected void doHealthCheck(Health.Builder builder) throws Exception {
boolean condition = false;
if (condition){
builder.withDetail("runTime",System.currentTimeMillis());
Map infoMap = new HashMap();
infoMap.put("buildTime","2022");
builder.withDetails(infoMap);
builder.up();
}
else{
builder.withDetail("上线了吗?","没有");
builder.down();
}
}
}
重启应用,查看面板
当然直接调用up() 和down 方法不太规范,标准的写法应该是下面这样
关键健康指标的简单介绍差不多就是这样 了
回顾一下
为Health端点添加自定义指标
6.5.3 小结
- 自定义Health端点信息