Spring Boot Admin 用于監(jiān)控基于 Spring Boot 的應(yīng)用,包括Server和Client。Client 把自身的信息“注冊(cè)”到 Server,然后就能在 Server 上看到“注冊(cè)”的 Spring Boot 應(yīng)用的狀態(tài)信息了。
【不引入spring-cloud的情況】
1. Server 端
1) pom.xml中引入
de.codecentricspring-boot-admin-serverde.codecentricspring-boot-admin-server-ui
2)主類開啟監(jiān)控:@EnableAdminServer,@Configuration,@EnableAutoConfiguration
2. Client 端
1)pom.xml中引入
de.codecentricspring-boot-admin-starter-client
2)properties配置文件中指定Server注冊(cè)地址,如 spring.boot.admin.url=http://localhost:8080
注意:client端注冊(cè)上去之后,默認(rèn)只顯示detail,trace,heapdump,若需要查看Metrics,Enviroment,Threads,JMX,Logging等,需引入 spring-boot-starter-actuator ,并配置endpoints.sensitive: false
3.Server 端監(jiān)控自己
若Server 端需要監(jiān)控自己,把 Server 端也當(dāng)作是 Client 一樣來配置就可以實(shí)現(xiàn)了:參考第2點(diǎn)
【引入spring-cloud的情況】
Spring Boot Admin 注冊(cè)到Eureka Server 中后,可以管理所有注冊(cè)到 Eureka Server 的應(yīng)用,包括 Spring Boot Admin 自己(因?yàn)樽约阂矔?huì)注冊(cè)到 Eureka Server)
1. Server 端
1)pom.xml中引入
org.springframework.cloudspring-cloud-starter-eureka
de.codecentricspring-boot-admin-serverde.codecentricspring-boot-admin-server-ui
2)主類開啟監(jiān)控:@EnableEurekaClient,@EnableAdminServer
3)properties中配置 eureka.instance.client.serviceUrl.defaultZone
2. Client 端
只需要注冊(cè)到Eureka Server 即可,無需做其他配置,若配置了 spring.boot.admin.url ,那么會(huì)在監(jiān)控主頁顯示2個(gè)重復(fù)的client端。
1)客戶端要添加 spring-boot-starter-actuator 依賴,因?yàn)楂@取應(yīng)用信息是通過 actuator 中的相關(guān) endpoints 獲取的。
2)JMX-bean管理 和 Loglevel 管理 參考下面
【動(dòng)態(tài)修改環(huán)境變量值】
1. 打開Server端的URL,如http://localhost:60003/
2. 在Environment manager中可以指定property-name,修改property-value,然后update environment。可修改多個(gè)
3. 修改后的值在 PropertySource manager 中會(huì)顯示,在/env端點(diǎn)中也會(huì)顯示。在@ConfigurationProperties綁定的類中的值會(huì)更新。此操作可用來動(dòng)態(tài)更新業(yè)務(wù)配置
4. 點(diǎn)擊 Reset environment,修改的所有值會(huì)還原。@ConfigurationProperties綁定的類中的值也還原
5. 進(jìn)程重啟后,所有環(huán)境變量值按初始化值
【Spring Boot Admin Server 配置說明】
spring.boot.admin.context-path Admin Server 保留的靜態(tài)訪問和API的前綴(當(dāng)你在業(yè)務(wù)應(yīng)用中使用而不是單獨(dú)使用時(shí)就很有必要了)
spring.boot.admin.monitor.period 默認(rèn)10.000,更新應(yīng)用信息的頻率,單位毫秒
spring.boot.admin.monitor.status-lifetime 默認(rèn)10.000 被監(jiān)控的應(yīng)用信息的過期時(shí)間,單位毫秒
【Spring Boot Admin Client 配置說明】
Spring Boot Admin Client 注冊(cè)到 Spring Boot Admin Server,Client 定期地發(fā)送 Http Post 到 admin 提供自己的應(yīng)用信息。如果需要管理 loglevels 或 JMX-beans ,則要在依賴中添加 Jolokia ,使得 JMX-beans 也可以通過 http 訪問。
spring.boot.admin.client.enabled 默認(rèn)true 默認(rèn)開啟
spring.boot.admin.url admin server 的地址列表,此設(shè)置會(huì)觸發(fā)自動(dòng)配置,必須
spring.boot.admin.api-path 注冊(cè)到 admin server 端點(diǎn)的 Http-path
spring.boot.admin.username? 注冊(cè)到 admin server 的賬號(hào)
spring.boot.admin.password 注冊(cè)到 admin server 的密碼
spring.boot.admin.period 默認(rèn)10.000 重試注冊(cè)的間隔時(shí)間
spring.boot.admin.auto-registration 默認(rèn)true 應(yīng)用啟動(dòng)后自動(dòng)執(zhí)行周期性的注冊(cè)任務(wù)
spring.boot.admin.auto-deregistration 默認(rèn)false 當(dāng)應(yīng)用關(guān)閉時(shí),自動(dòng)取消注冊(cè)
spring.boot.admin.client.health-url
spring.boot.admin.client.management-url
spring.boot.admin.client.service-url
spring.boot.admin.client.name 注冊(cè)時(shí)的名字
spring.boot.admin.client.prefer-ip 默認(rèn)false
【其他配置】
1. 在spring boot admin中的info中顯示的內(nèi)容需在server或client中配置info,如:
#Info配置
info.aaa.description: Eureka
info.aaa.url: https://github.com/jixuju/spring-cloud-test
info.aaa.build-by: superwind20
2. 在spring boot admin中的turbine中顯示的hystrix信息,需在server中配置turbine,如:
#turbine配置
spring.boot.admin.turbine.url: http://localhost:60002/turbine.stream
spring.boot.admin.turbine.clusters: PROVIDER-SERVICE,RIBBON-SERVICE,FEIGN-SERVICE
3. JMX-bean管理(若需要管理JMX,則要配置)
JMX-bean 管理需要使用第三方的 jolokia ,因?yàn)?spring-boot-admin-starter-client 會(huì)自動(dòng)依賴 jolokia-core,所以這里不需要顯示依賴了,下面的基于 Eureka 注冊(cè)發(fā)現(xiàn)的配置中,由于沒有配置spring-boot-admin-starter-client ,就需要顯示地依賴:
pom.xml
org.jolokia
jolokia-core
4. Loglevel 管理(若需要管理Logging日志,則要配置)
當(dāng)前日志級(jí)別管理僅限 Logback,通過 JMX 實(shí)現(xiàn),所以需要依賴 jolokia 。同時(shí),還需要配置 Logback 的 JMXConfigurator:
logback.xml
這個(gè) logback.xml 放在與 application.properties 同級(jí)的目錄就可以了,如果不配置 Logback,那么 Spring Boot Admin 就無法管理應(yīng)用的日志級(jí)別。