用過Spring Boot後覺得這真的是一個超快速上手的framework,比起之前的Spring來講建置環境更方便了,而網路上也有人針對使用spring boot的開源項目可以進行監控,可以在同一個界面下查看有註冊監控的專案,包含了查看Log、環境參數及目前使用的記憶體,甚至可以即時更動Log level。Spring boot admin的官方說明寫的就非常清楚了,可直接參考官方文件和Quick Guide (v1.5.2);以下就是我在建置這個監控服務的方式
1.新增一個Spring boot admin (SBA) Project
要使用 Spring boot admin的話要有點Spring boot 的概念,首先我們必須先建立一個spring boot的project,pom檔可以直接到 start spring io產生,這個還滿好用的,快速產生一個pom.xml,在建立project後,請在pom.xml 加入spring boot admin所需要的dependency
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>1.5.2</version>
</dependency>
接著在spring boot 項目中必有的Application加入 @EnableAdminServer
@Configuration
@EnableAutoConfiguration
@EnableAdminServer
public class SpringBootAdminApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminApplication.class, args);
}
}
然後定義好spring boot admin之後會使用到哪個port,在application.yml我直接用9090做為spring boot admin的port
server:
port: 9000
建完後在這邊spring boot admin的服務就可以啟動了
2. 註冊Client
如果要讓Spring Booat Admin(SBA)監控,所有的application都要跟SBA註冊為Client,如果是spring cloud的專案,可以透過eureka ,不過因為目前我測試的還只是一般的spring boot專案,所以必須在每個SBA加入要向admin進行註冊的設定,譬如今天我有個叫 TestProject 的spring boot專案,那麼我必須去調整TestProject的pom.xml和application.yaml,這樣在啟動的時候才會知道去向SBA註冊
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>1.5.2</version>
</dependency>
application.property要加上 SBA 的url,這樣才知道去哪註冊,另外在spring boot 1.5 後,對endpoint的權限更嚴格了,如果想看endpoint不需要那麼嚴格的話
要加上 management.security.enabled: false
spring:
boot:
admin:
url: http://localhost:9000
management:
security:
enabled: false
另外,如果你的網站有 HTTP Basic authentication,必須給SBA可以登入的帳號與密碼,假設我的web 的username/password是admin/123;如果沒有給的話,到時候即使有向SBA註冊成功,也會因為沒有完整的授權而無法監控。
spring:
boot:
admin:
url: http://localhost:9000
client:
metadata:
user.name: admin
user.password: 123
設置完後就可以重啟專案了。這時候打開http://localhost:9000,就可以看到有被註冊的專案,註冊成功且有被完整授權的專案在Status會顯示Up,失敗的話會顯示Down
Up的專案按下detail後,就可以從這獲得各種監控的資訊了