SpringBoot之旅 -- SpringBoot 项目健康检查与监控
2018-02-11 00:00
736 查看
相关文章
Spring Boot 相关文章目录前言
You build it,You run it, 当我们编写的项目上线后,为了能第一时间知晓该项目是否出现问题,常常对项目进行健康检查及一些指标进行监控。Spring Boot-Actuator 就是帮助我们监控我们的Spring Boot 项目的。
使用
Spring Boot 最主要的特性就是AutoConfig(自动配置),而对于我们这些使用者来说也就是各种starter,Spring Boot-Actuator 也提供了starter,为我们自动配置,在使用上我们只需要添加starter到我们的依赖中,然后启动项目即可。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
常用Endpoint
Spring Boot-actuator,提供了许多有用的EndPoint,对Spring Boot应用提供各种监控,下面说一下我常用的EndPoint:/health 应用的健康状态
/configprops 获取应用的配置信息,因为Spring Boot 可能发布时是单独的Jar包,配置文件可能包含其中, 当我们需要检查配置文件时可以使用 ConfigpropsEndPoint 进行查看一些配置是否正确。
/trace 最近几次的http请求信息
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" }, "diskSpace": { "status": "UP", "total": 398458875904, "free": 315097989120, "threshold": 10485760 }, "db": { "status": "UP", "database": "MySQL", "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" }
相关文章推荐
- SpringBoot实现项目健康检查与监控
- SpringBoot之旅 -- SpringBoot 项目健康检查与监控
- SpringBoot 项目健康检查与监控(转)
- springboot(十九):使用Spring Boot Actuator监控应用
- SpringBoot(一)——构建第一个SpringBoot项目
- SpringBoot整合Sentry监控项目日志
- SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
- springboot学习: 初识Spring Boot框架,搭建第一个项目!
- 使用Spirng Boot Admin监控Spring Cloud应用项目
- Spring/Spring Boot微服务项目 集成Druid 实现监控功能
- spring boot的健康检查HealthIndicators
- springboot(十九):使用Spring Boot Actuator监控应用
- SpringBoot(一):如何创建SpringBoot项目?
- 13-Spring Boot (采用actuator监控spring boot的健康 )
- SpringBoot基础-在Eclipse中创建跑得起来的springboot项目,非STS插件方式
- 【SpringBoot探索一】SpringBoot快速搭建基础web项目
- springBoot admin 实现对springboot项目的监控-实战
- 给Spring Boot项目添加actuator监控
- SpringBoot整合Sentry监控项目日志
- springboot(二十):使用spring-boot-admin对spring-boot服务进行监控