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

}

}

}

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


文章题目:Springboot中actuator如何使用
本文来源:http://scyanting.com/article/jodsdj.html