SpringBoot实现项目健康检查与监控
|
Spring Boot 最主要的特性就是AutoConfig(自动配置),而对于我们这些使用者来说也就是各种starter, Spring Boot-Actuator 也提供了starter,为我们自动配置,在使用上我们只需要添加starter到我们的依赖中,然后启动项目即可。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 常用Endpoint
HealthEndPoint 当我们访问 http://localhost:8088/health 时,可以看到 HealthEndPoint 给我们提供默认的监控结果,包含 磁盘检测和数据库检测。
{
"status": "UP","diskSpace": {
"status": "UP","total": 398458875904,"free": 315106918400,"threshold": 10485760
},"db": {
"status": "UP","database": "MySQL","hello": 1
}
}
其实看 Spring Boot-actuator 源码,你会发现 HealthEndPoint 提供的信息不仅限于此,org.springframework.boot.actuate.health 包下 你会发现 ElasticsearchHealthIndicator、RedisHealthIndicator、RabbitHealthIndicator 等 也就是 HealthEndPoint 也提供 ES,Redis 等组件的健康信息。 自定义Indicator 扩展 HealthEndPoint 看源码 其实 磁盘和数据库健康信息就是 DiskSpaceHealthIndicator、DataSourceHealthIndicator 来实现的,当我们对一些我们自定义的组件进行监控时, 我们也可以实现个Indicator :
@Component
public class User implements HealthIndicator {
/**
* user监控 访问: http://localhost:8088/health
*
* @return 自定义Health监控
*/
@Override
public Health health() {
return new Health.Builder().withDetail("usercount",10) //自定义监控内容
.withDetail("userstatus","up").up().build();
}
}
这时我们再次访问: http://localhost:8088/health 这时返回的结果如下,包含了我们自定义的 User 健康信息。
{
"status": "UP","user": {
"status": "UP","usercount": 10,"userstatus": "up"
},"free": 315097989120,"hello": 1
}
}
自定义EndPoint 其实除了扩展 HealthEndPoint 来添加一些健康检查, 我们也可以自定定义一些EndPoint 来提供程序运行时一些信息的展示:
@Configuration
public class EndPointAutoConfig {
@Bean
public Endpoint<Map<String,Object>> customEndPoint() {
return new SystemEndPoint();
}
}
@ConfigurationProperties(prefix="endpoints.customsystem")
public class SystemEndPoint extends AbstractEndpoint<Map<String,Object>> {
public SystemEndPoint(){
super("customsystem");
}
@Override
public Map<String,Object> invoke() {
Map<String,Object> result= new HashMap<>();
Map<String,String> map = System.getenv();
result.put("username",map.get("USERNAME"));
result.put("computername",map.get("COMPUTERNAME"));
result.put("userdomain",map.get("USERDOMAIN"));
return result;
}
}
访问 http://localhost:8088/customsystem 来查看我们自定义的EndPoint ,返回结果如下:
{
"username": "xxx","userdomain": "DESKTOP-6EAN1H4","computername": "DESKTOP-6EAN1H4"
}
我们在为Spring Boot应用添加actuator后,期望的health接口返回结果应该是类似下面的结果:
{
status: "UP",diskSpace:
{
status: "UP",total: 250182889472,free: 31169568768,threshold: 10485760
},db:
{
status: "UP",database: "H2",hello: 1
}
}
如果只是返回了status
{
status: "UP"
}
则需要为应用新增配置,以yml配置文件为例,需要添加如下配置: management: security: enabled: false endpoints: health: sensitive: false management.endpoint.health.show-details=always 总结 以上所述是小编给大家介绍的SpringBoot实现项目健康检查与监控,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持! 您可能感兴趣的文章:
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
