引入自动配置
创建一个SpringBoot工程引入Actuator启动器。这里没有引入版本号是因为我们当前的SpringBoot工程的父工程为我们做了版本裁定,从pom文件中点进去查看你就会发现内置的对应的版本
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
开启指标监控
在配置文件中开启(application.properties),默认的情况下我们所有的指标在JMX的模式下才开启的,http模式下需要我们手动开启
#开启全部结点
management.endpoints.enabled-by-default= true
#默认开启web的访问方式(JMX方式默认时全部开启的)
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
事例
接下来我们就能以http的方式访问我们SpringBoot工程的一些指标了
http://localhost:8080/actuator 查看当前有哪些指标可以查看
{
"_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
}
.....省略很多.....
}
}
http://localhost:8080/actuator/health 查看当前系统的健康状态
{
"status": "UP",
"components": {
"db": {
"status": "UP",
"details": {
"database": "MySQL",
"validationQuery": "isValid()"
}
},
"diskSpace": {
"status": "UP",
"details": {
"total": 512094846976,
"free": 376973795328,
"threshold": 10485760,
"exists": true
}
},
"ping": {
"status": "UP"
}
}
}
http://localhost:8080/actuator/beans 能查看当前工程中有哪些bean,以及是否是单实例、依赖关系、类型等等
从中我们就能得到类似的信息:sqlSessionTemplate这个实例是一个单实例,类型为:org.mybatis.spring.SqlSessionTemplate,依赖org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration和sqlSessionFactory
{
"contexts": {
"application": {
"beans": {
.....省略很多实例.....
"sqlSessionTemplate": {
"aliases": [],
"scope": "singleton",
"type": "org.mybatis.spring.SqlSessionTemplate",
"resource": "class path resource [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]",
"dependencies": [
"org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration",
"sqlSessionFactory"
]
}
},
"parentId": null
}
}
}
http://localhost:8080/actuator/conditions 查看当前系统配置类的情况、为什么配置成功了、为什么没有配置成功等等
{
"contexts": {
"application": {
"positiveMatches": {
.....省略很多....
"DruidDataSourceAutoConfigure": [{
"condition": "OnClassCondition",
"message": "@ConditionalOnClass found required class 'com.alibaba.druid.pool.DruidDataSource'"
}],
"LocalDevToolsAutoConfiguration.RestartConfiguration#conditionEvaluationDeltaLoggingListener": [{
"condition": "OnPropertyCondition",
"message": "@ConditionalOnProperty (spring.devtools.restart.log-condition-evaluation-delta) matched"
}]
},
"negativeMatches": {
.....省略很多....
"RemoteDevToolsAutoConfiguration": {
"notMatched": [{
"condition": "OnPropertyCondition",
"message": "@ConditionalOnProperty (spring.devtools.remote.secret) did not find property 'secret'"
}],
"matched": [{
"condition": "OnClassCondition",
"message": "@ConditionalOnClass found required classes 'javax.servlet.Filter', 'org.springframework.http.server.ServerHttpRequest'"
}]
}
},
"unconditionalClasses": [
.....省略很多....
"org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration",
"org.springframework.boot.actuate.autoconfigure.availability.AvailabilityHealthContributorAutoConfiguration"
]
}
}
}
http://localhost:8080/actuator/configprops 获取系统配置文件信息
{
"contexts": {
"application": {
"beans": {
.....省略很多.....
"spring.jdbc-org.springframework.boot.autoconfigure.jdbc.JdbcProperties": {
"prefix": "spring.jdbc",
"properties": {
"template": {
"fetchSize": -1,
"maxRows": -1
}
},
"inputs": {
"template": {
"fetchSize": {},
"maxRows": {}
}
}
},
"spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties": {
"prefix": "spring.jackson",
"properties": {
"serialization": {},
"visibility": {},
"parser": {},
"deserialization": {},
"generator": {},
"mapper": {}
},
"inputs": {
"serialization": {},
"visibility": {},
"parser": {},
"deserialization": {},
"generator": {},
"mapper": {}
}
},
"management.health.db-org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorProperties": {
"prefix": "management.health.db",
"properties": {
"ignoreRoutingDataSources": false
},
"inputs": {
"ignoreRoutingDataSources": {}
}
},
}
}
端点和描述的功能可以查看SpringBoot的官方文档
https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints
开启与禁用
#我们可以选择性的开启、关闭对应的节点
management.endpoint.{节点名字}.enabled=false