springboot 07 Spring Boot Actuator: Production-ready features

weixin_33670713發表於2018-03-22

Spring Boot Actuator: Production-ready features

當你的應用釋出後,spring-boot包含很多的功能來幫你監控和管理應用;你可以選擇通過http,JMX,或者一些遠端的shell

1. Enabling production-ready features

spring-boot-actuator 提供了spring boot所有的監控管理功能。最簡單的安裝方式是新增依賴spring-boot-starter-actuator。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

2. Endpoints

Actuator endpoints 允許你監控管理你的應用,Spring-boot已經內嵌了一系列的endpoints。使用什麼方式來展示這些監控資訊依賴於你選擇的什麼技術,大多數情況會選擇HTTP monitoring,每一個endpoint有一個id,對映到url。eg: health endpoint will be mapped to /health.
下面將展示出提供的監控以及ID:

ID Description Sensitive Default
actuator 展示其他的endpoints. 需要Spring HATEOAS在classpath. true
autoconfig 顯示自動配置報表,展示所有自動配置的條件以及原因 true
beans 顯示出Spring 容器中所有的Bean資訊 true
configprops 顯示出所有的配置資訊 true
dump 執行一次執行緒快照 true
env 的引數 true
flyway Shows any Flyway database migrations that have been applied. true
health 展示出應用當前的健康資訊 false
info 當前應用的資訊 false
liquibase Shows any Liquibase database migrations that have been applied. true
metrics 顯示當前應用的JVM資訊,記憶體情況,GC… true
mappings 列出當前應用的 true
shutdown 執行引用被優雅的shutdown true
trace 顯示最近的請求資訊,預設儲存最近100條 HTTP requests true
如果你使用的是 Spring Mvc,還有一些額外的endpoints可以使用:

ID Description Sensitive Default
docs 需要 false
heapdump hprof true
jolokia Exposes JMX beans over HTTP (when Jolokia is on the classpath). true
logfile properties have been set). Supports the use of the HTTP true
Sensitive 的意思是說 是否敏感,在一些web security開啟的情況下,Sensitive為true的endpoint需要輸入username/password才能夠檢視

2.1 Customizing endpoints

endpoint能夠被自定義,在application.properties中配置,eg:
endpoints.beans.id=springbeans #修改id
endpoints.beans.sensitive=false #是否敏感
endpoints.shutdown.enabled=true #是否開啟

2.2 CORS support

endpoints.cors.allowed-origins=http://example.com
endpoints.cors.allowed-methods=GET,POST

2.3 Adding custom endpoints

http://docs.spring.io/spring-boot/docs/1.4.2.RELEASE/reference/htmlsingle/#production-ready-customizing-endpoints-programmatically

2.4 Securing sensitive endpoints

如果你專案中使用到了Spring-security,那麼所有敏感的endpoint都將會保護起來,需要使用username and password才能夠訪問
security.user.name=admin
security.user.password=secret
management.security.roles=SUPERUSER

2.5 Customizing the management endpoint paths

有時候你需要分組管理endpoint,使用一個單獨的path,eg:如果你專案中已經存在了一個/info,你可以使用management.context-path配置一個字首
management.context-path=/manage
The application.properties example above will change the endpoint from /{id} to /manage/{id} (e.g./manage/info).
endpoints.{name}.id : 修改id
endpoints.{name}.path:修改path eg:endpoints.health.path=/ping/me => /ping/me

2.6 Customizing the management server port

management.port=8081 : 配置 Managerment server的埠
management.security.enabled=false : 不使用安全管理,即使專案中使用了spring-security,也不使用username ,password
management.address=127.0.0.1
management.port=-1 : disabling HTTP endpoints
The end

相關文章