系统上线后其稳定性是至关重要的,开发者做到对系统运行状态及各种信息了如指掌,才有底气保证系统没有问题,很多开发者连通过运行数据来监控系统状态的意识都没有,系统上线稳定后是否稳定全凭运气和被动接收用户反馈才知道。
【SpringBoot|SpringBoot揭密(spring-boot-starter-actuator与应用监控)】SpringBoot提供了非常成熟的应用监控模块SpringBoot Actuator,其中Actuator可理解为探测器,通过spring-boot-starter-actuator开箱即用,即可获得通过HTTP或者JMX方式暴露的EndPoint,EndPoint可理解为Spring MVC中类似于Controller的Handler,引入以下依赖,即可获取该功能:
org.springframework.boot
spring-boot-starter-actuator
配置management.endpoints.web.exposure.include=*,通过访问basePath:/actuator能看到目前提供的endpoint,典型的如health(可用于健康检查)、info、metrics(可用于指标监控)
{
"_links": {
"self": {
"href": "http://localhost:8080/actuator",
"templated": false
},
"beans": {
"href": "http://localhost:8080/actuator/beans",
"templated": false
},
"caches-cache": {
"href": "http://localhost:8080/actuator/caches/{cache}",
"templated": true
},
"caches": {
"href": "http://localhost:8080/actuator/caches",
"templated": false
},
"health": {
"href": "http://localhost:8080/actuator/health",
"templated": false
},
"health-path": {
"href": "http://localhost:8080/actuator/health/{*path}",
"templated": true
},
"info": {
"href": "http://localhost:8080/actuator/info",
"templated": false
},
"conditions": {
"href": "http://localhost:8080/actuator/conditions",
"templated": false
},
"configprops": {
"href": "http://localhost:8080/actuator/configprops",
"templated": false
},
"env": {
"href": "http://localhost:8080/actuator/env",
"templated": false
},
"env-toMatch": {
"href": "http://localhost:8080/actuator/env/{toMatch}",
"templated": true
},
"loggers": {
"href": "http://localhost:8080/actuator/loggers",
"templated": false
},
"loggers-name": {
"href": "http://localhost:8080/actuator/loggers/{name}",
"templated": true
},
"heapdump": {
"href": "http://localhost:8080/actuator/heapdump",
"templated": false
},
"threaddump": {
"href": "http://localhost:8080/actuator/threaddump",
"templated": false
},
"metrics-requiredMetricName": {
"href": "http://localhost:8080/actuator/metrics/{requiredMetricName}",
"templated": true
},
"metrics": {
"href": "http://localhost:8080/actuator/metrics",
"templated": false
},
"scheduledtasks": {
"href": "http://localhost:8080/actuator/scheduledtasks",
"templated": false
},
"mappings": {
"href": "http://localhost:8080/actuator/mappings",
"templated": false
}
}
}
这些信息均是可以自定义扩展的,特别是health和metrics,对于指标数据,SpringBoot Actuator对接了各种监控系统,支持将指标数据上报到监控系统可视化及配置告警,如监控系统prometheus和可视化grafana,Actuator采用了MicroMeter技术来采集指标,MicroMeter可理解为类似于SLF4J的门面,可以将监控指标数据Meter注册到各监控系统的注册表MeterRegister中,最终通过监控系统所需的格式上报上去,如果对接prometheus,可引入以下依赖:
io.micrometer
micrometer-registry-prometheus
Actuator中引入了诸多自动装配类,但发现满足prometheus endpoint自动装配条件(@ConditionalOnClass(PrometheusMeterRegistry.class)普罗米修斯这个类正是上面依赖引入的)后即提供新的接口:http://localhost:8080/actuator/prometheus
推荐阅读
- 微服务|初识微服务技术栈
- Spring|【Spring框架】帮助理解AspectJ框架的练习题
- SpringBoot异步任务获取HttpServletRequest
- 数据库|除了Mybatis,我们还能用什么访问数据库
- SpringBoot 2.x 实战仿B站高性能后端项目-无密分享
- java|Github标星86k 的Spring Cloud学习教程+实战项目推荐!!上岸蚂蚁金服!!
- 4 种 SpringBoot 项目鉴权方式
- 课程设计|SpringBoot+vue前后端分离的社区维修平台
- 课程设计|Springboot+vue前后端分离的考研资讯平台