千家信息网

Springboot中 actuator如何使用

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,Springboot中 actuator如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Springboot ac
千家信息网最后更新 2025年01月23日Springboot中 actuator如何使用

Springboot中 actuator如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Springboot actuator是一个追踪各种springboot应用状态的健康检查机制,使用需要添加一个pom

   org.springframework.boot   spring-boot-starter-actuator

在启动springboot中,我们往往会看到这样的一条日志 Exposing 20 endpoint(s) beneath base path '/actuator'

这个20是每一个springboot应用程序的健康检查点的个数,他是随着你配置文件中的配置而不同的。

由于本人配置的Server信息如下

server:  port: 8001  servlet:    context-path: /api-u

所以当我们访问actuator Web信息的路径如下

http://127.0.0.1:8001/api-u/actuator

这里需要注意的是,如果我们配置了oauth 2的资源访问权限的时候,需要对该路径放行

@EnableResourceServer@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true,securedEnabled = true)public class ResourceServerConfig extends ResourceServerConfigurerAdapter {   @Override   public void configure(HttpSecurity http) throws Exception {      http.csrf().disable().exceptionHandling()            .authenticationEntryPoint(                  (request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED))            .and().authorizeRequests().antMatchers(PermitAllUrl.permitAllUrl("/users-anon/**", "/sys/login","/actuator/**")).permitAll() //此处添加"/actuator/**"进行放行.anyRequest().authenticated().and().httpBasic();   }   @Override   public void configure(ResourceServerSecurityConfigurer resource) throws Exception {      //这里把自定义异常加进去      resource.authenticationEntryPoint(new AuthExceptionEntryPoint())            .accessDeniedHandler(new CustomAccessDeniedHandler());   }   @Bean   public BCryptPasswordEncoder bCryptPasswordEncoder() {      return new BCryptPasswordEncoder();   }}

在配置文件中做如下配置

management:  endpoint:    health:      show-details: always

此时我们访问http://127.0.0.1:8001/api-u/actuator的结果如下

{

"_links" : {

"self" : {

"href" : "http://127.0.0.1:8001/api-u/actuator" ,

"templated" : false

},

"health" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/health" ,

"templated" : false

},

"info" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/info" ,

"templated" : false

}

}

}

具体大家可以参考这个官网说明 https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/中的

https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#production-ready-endpoints-enabling-endpoints以及 https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#_auto_configured_healthindicators

其中的http://127.0.0.1:8001/api-u/actuator/health就是我们需要的健康检查的具体信息

{

"status" : "DOWN" ,

"details" : {

"rabbit" : {

"status" : "DOWN" ,

"details" : {

"error" : "org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused (Connection refused)"

}

},

"diskSpace" : {

"status" : "UP" ,

"details" : {

"total" : 499963174912 ,

"free" : 435209195520 ,

"threshold" : 10485760

}

},

"db" : {

"status" : "UP" ,

"details" : {

"database" : "MySQL" ,

"hello" : 1

}

},

"refreshScope" : {

"status" : "UP"

},

"discoveryComposite" : {

"status" : "UP" ,

"details" : {

"discoveryClient" : {

"status" : "UP" ,

"details" : {

"services" : [

"register-center" ,

"user-center"

]

}

},

"eureka" : {

"description" : "Remote status from Eureka server" ,

"status" : "UP" ,

"details" : {

"applications" : {

"REGISTER-CENTER" : 1 ,

"USER-CENTER" : 1

}

}

}

}

},

"configServer" : {

"status" : "UNKNOWN" ,

"details" : {

"error" : "no property sources located"

}

},

"hystrix" : {

"status" : "UP"

},

"redis" : {

"status" : "UP" ,

"details" : {

"version" : "3.2.12"

}

}

}

}

这里为该进程spring支持的各种服务的健康状态,UP为在线,DOWN为下线状态,UNKNOWN为不知道。

除了http://127.0.0.1:8001/api-u/actuator/health之外还有一个http://127.0.0.1:8001/api-u/actuator/info

这是一个描述信息的说明,如果我们在配置文件中做如下配置

info:  app-name: user  author: guanjian  email: 12345@xy.com

则可以在http://127.0.0.1:8001/api-u/actuator/info的返回信息中看到

{

"app-name" : "user" ,

"author" : "guanjian" ,

"email" : "12345@xy.com"

}

但是我们在以上配置中可以看到的信息很少,需要激活所有的actuator端点,增加配置如下

management:  endpoints:    web:      exposure:        include: "*"  endpoint:    health:      show-details: always

此时再次访问http://127.0.0.1:8001/api-u/actuator的结果如下

{

"_links" : {

"self" : {

"href" : "http://127.0.0.1:8001/api-u/actuator" ,

"templated" : false

},

"archaius" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/archaius" ,

"templated" : false

},

"auditevents" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/auditevents" ,

"templated" : false

},

"beans" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/beans" ,

"templated" : false

},

"health" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/health" ,

"templated" : false

},

"conditions" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/conditions" ,

"templated" : false

},

"configprops" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/configprops" ,

"templated" : false

},

"env" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/env" ,

"templated" : false

},

"env-toMatch" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/env/{toMatch}" ,

"templated" : true

},

"info" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/info" ,

"templated" : false

},

"logfile" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/logfile" ,

"templated" : false

},

"loggers-name" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/loggers/{name}" ,

"templated" : true

},

"loggers" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/loggers" ,

"templated" : false

},

"heapdump" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/heapdump" ,

"templated" : false

},

"threaddump" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/threaddump" ,

"templated" : false

},

"metrics-requiredMetricName" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/metrics/{requiredMetricName}" ,

"templated" : true

},

"metrics" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/metrics" ,

"templated" : false

},

"scheduledtasks" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/scheduledtasks" ,

"templated" : false

},

"sessions-sessionId" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/sessions/{sessionId}" ,

"templated" : true

},

"sessions" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/sessions" ,

"templated" : false

},

"httptrace" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/httptrace" ,

"templated" : false

},

"mappings" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/mappings" ,

"templated" : false

},

"refresh" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/refresh" ,

"templated" : false

},

"features" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/features" ,

"templated" : false

},

"service-registry" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/service-registry" ,

"templated" : false

}

}

}

现在来挑几个做一下说明 http://127.0.0.1:8001/api-u/actuator/configprops 查看所有的配置信息(当然密码会隐藏) 片段

"spring.cloud.config-org.springframework.cloud.bootstrap.config.PropertySourceBootstrapProperties" : {

"prefix" : "spring.cloud.config" ,

"properties" : {

"overrideSystemProperties" : true ,

"overrideNone" : false ,

"allowOverride" : true

}

},

"configClientProperties" : {

"prefix" : "spring.cloud.config" ,

"properties" : {

"headers" : {},

"discovery" : {

"enabled" : false ,

"serviceId" : "configserver"

},

"profile" : "default" ,

"name" : "user-center" ,

"uri" : "http://localhost:8888" ,

"enabled" : true ,

"failFast" : false ,

"username" : "user"

}

},

http://127.0.0.1:8001/api-u/actuator/metrics 查看某些指标的具体数值,比如JVM,tomcat等等

{

"names" : [

"rabbitmq.acknowledged" ,

"rabbitmq.consumed" ,

"jvm.buffer.memory.used" ,

"jvm.memory.used" ,

"jvm.gc.memory.allocated" ,

"rabbitmq.connections" ,

"jvm.memory.committed" ,

"tomcat.global.request.max" ,

"tomcat.sessions.created" ,

"tomcat.sessions.expired" ,

"jvm.gc.max.data.size" ,

"logback.events" ,

"rabbitmq.published" ,

"system.cpu.count" ,

"jvm.memory.max" ,

"rabbitmq.rejected" ,

"jvm.buffer.total.capacity" ,

"jvm.buffer.count" ,

"process.files.max" ,

"jvm.threads.daemon" ,

"rabbitmq.channels" ,

"process.start.time" ,

"tomcat.global.error" ,

"tomcat.sessions.active.max" ,

"http.server.requests" ,

"tomcat.global.sent" ,

"jvm.gc.live.data.size" ,

"process.files.open" ,

"process.cpu.usage" ,

"tomcat.global.received" ,

"tomcat.servlet.request" ,

"jvm.gc.pause" ,

"process.uptime" ,

"tomcat.threads.config.max" ,

"system.load.average.1m" ,

"tomcat.cache.hit" ,

"tomcat.servlet.error" ,

"tomcat.threads.current" ,

"tomcat.servlet.request.max" ,

"tomcat.cache.access" ,

"tomcat.sessions.active.current" ,

"system.cpu.usage" ,

"jvm.threads.live" ,

"jvm.classes.loaded" ,

"jvm.classes.unloaded" ,

"tomcat.threads.busy" ,

"jvm.threads.peak" ,

"jvm.gc.memory.promoted" ,

"tomcat.sessions.rejected" ,

"tomcat.sessions.alive.max" ,

"tomcat.global.request"

]

}

比方说我们要查看JVM的最大内存,访问 http://127.0.0.1:8001/api-u/actuator/metrics/jvm.memory.max

{

"name" : "jvm.memory.max" ,

"measurements" : [

{

"statistic" : "VALUE" ,

"value" : 5.587337215E9

}

],

"availableTags" : [

{

"tag" : "area" ,

"values" : [

"heap" ,

"nonheap"

]

},

{

"tag" : "id" ,

"values" : [

"Compressed Class Space" ,

"PS Survivor Space" ,

"PS Old Gen" ,

"Metaspace" ,

"PS Eden Space" ,

"Code Cache"

]

}

]

}

http://127.0.0.1:8001/api-u/actuator/metrics/jvm.memory.used JVM已经使用的内存

{

"name" : "jvm.memory.used" ,

"measurements" : [

{

"statistic" : "VALUE" ,

"value" : 9.31419992E8

}

],

"availableTags" : [

{

"tag" : "area" ,

"values" : [

"heap" ,

"nonheap"

]

},

{

"tag" : "id" ,

"values" : [

"Compressed Class Space" ,

"PS Old Gen" ,

"PS Survivor Space" ,

"Metaspace" ,

"PS Eden Space" ,

"Code Cache"

]

}

]

}

http://127.0.0.1:8001/api-u/actuator/beans 查看spring中注入的所有bean

部分片段

"spring.cloud.config-org.springframework.cloud.bootstrap.config.PropertySourceBootstrapProperties" : {

"aliases" : [],

"scope" : "singleton" ,

"type" : "org.springframework.cloud.bootstrap.config.PropertySourceBootstrapProperties" ,

"resource" : null ,

"dependencies" : []

},

"propertySourcesPlaceholderConfigurer" : {

"aliases" : [],

"scope" : "singleton" ,

"type" : "org.springframework.context.support.PropertySourcesPlaceholderConfigurer" ,

"resource" : "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" ,

"dependencies" : []

}

如果我们不想激活所有的端点,只激活部分端点,比如configprops,metrics,beans,health,info,配置如下

management:  endpoints:    web:      exposure:        include: "configprops,metrics,beans,health,info"  endpoint:    health:      show-details: always

访问http://127.0.0.1:8001/api-u/actuator结果如下

{

"_links" : {

"self" : {

"href" : "http://127.0.0.1:8001/api-u/actuator" ,

"templated" : false

},

"beans" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/beans" ,

"templated" : false

},

"health" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/health" ,

"templated" : false

},

"configprops" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/configprops" ,

"templated" : false

},

"info" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/info" ,

"templated" : false

},

"metrics-requiredMetricName" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/metrics/{requiredMetricName}" ,

"templated" : true

},

"metrics" : {

"href" : "http://127.0.0.1:8001/api-u/actuator/metrics" ,

"templated" : false

}

}

}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

配置 信息 健康 文件 激活 状态 端点 结果 检查 内存 片段 部分 帮助 应用 支持 不同 最大 清楚 下线 个数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全普法宣传周 浦东网络安全保卫支队长 阜阳餐饮软件开发哪家好 阿尔法家拆单软件无法连接服务器 数据库单元格只读怎么修改 每年网络安全事件造成的经济 网络技术服务如何开票 金柚互联网科技有限公司 临沂知否网络技术有限公司地址 监控服务器两个对调 核心节点数据库系统重大故障 软件开发合规问题 数据库设计由前端还是后端做 服务器两个cpu温度差异大 网络安全知多少个人信息安全 腾讯云开发服务器有多大 苹果6数据库开不了怎么办 怎么在数据库更改软件的账号密码 河北正规软件开发项目信息 上海金掌网络技术有限责任公司 建设银行主机服务器在哪 update数据库数据丢失 网络安全密码嗅探实验 被盗丢失手机数据库 数据库设计由前端还是后端做 一般家用网络安全类型为 网络安全防护 5g 网络安全小内容 广州微趣网络技术有限公司面试 全民奇迹服务器怎么找人
0