建立 Spring Boot Admin 來進行監控

  • 452
  • 0

用過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註冊

TestProject的 pom.xml 必須加上 spring-boot-admin-starter-client到dependency
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>1.5.2</version>
</dependency>
增加TestProject的 application.yaml的配置

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後,就可以從這獲得各種監控的資訊了