springboot --自定義健康檢查

1、添加依賴

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2、通過實現HealthIndicator接口方式

@Component
public class MyHealthIndicator implements HealthIndicator {
    @Override
    public Health health() {
        // 檢查通過(方式一新建對象)
        return new Health.Builder().withDetail("usercount", 10) //自定義監控內容
                .withDetail("userstatus", "up").up().build();
        // 檢查失敗(方式二靜態方法)
        //return Health.down().withDetail("status", errorCode)
        //        .withDetail("message", "服務故障").build();
    }
}

3、通過繼承AbstractHealthIndicator 方式

public class RedisHealthIndicator extends AbstractHealthIndicator {

    private static final String VERSION = "version";

    private static final String REDIS_VERSION = "redis_version";

    private final RedisConnectionFactory redisConnectionFactory;

    public RedisHealthIndicator(RedisConnectionFactory connectionFactory) {
        Assert.notNull(connectionFactory, "ConnectionFactory must not be null");
        this.redisConnectionFactory = connectionFactory;
    }

    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        RedisConnection connection = RedisConnectionUtils
                .getConnection(this.redisConnectionFactory);
        try {
            if (connection instanceof RedisClusterConnection) {
                ClusterInfo clusterInfo = ((RedisClusterConnection) connection)
                        .clusterGetClusterInfo();
                builder.up().withDetail("cluster_size", clusterInfo.getClusterSize())
                        .withDetail("slots_up", clusterInfo.getSlotsOk())
                        .withDetail("slots_fail", clusterInfo.getSlotsFail());
            }
            else {
                Properties info = connection.info();
                builder.up().withDetail(VERSION, info.getProperty(REDIS_VERSION));
            }
        }
        finally {
            RedisConnectionUtils.releaseConnection(connection,
                    this.redisConnectionFactory);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章