Google Code Prettify

2018年2月28日 星期三

Spring Boot Admin

Spring Boot 廣泛用於微服務,在這種分散式系統,監控是一件很重要的事,Spring Boot 提供了一個名為 Spring Boot Admin 的監控工具,只需要進行一些設定就可以監控,非常方便,說明如下:
  • 建立一個 spring boot admin 的 server 端程式
下面是這個程式的 build.gradle,和一般的 spring boot 沒什麼不同,主要就是加入紅色那幾行,讓 gradle 協助我們載入相關的 jar 檔。spring boot 預設使用的 log 是 logback,但是我習慣用 log4j2,所以加入綠色的那幾行,將 logback 移除並加入 log4j2。
buildscript {
 ext {
  springBootVersion = '1.5.10.RELEASE'
 }
 repositories {
  mavenCentral()
 }
 dependencies {
  classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
 }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'idv.steven'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
 mavenCentral()
}

configurations.all {
      exclude group: 'log4j', module: 'log4j'
      exclude group: 'org.slf4j', module: 'slf4j-log4j12'
      exclude group: 'org.slf4j', module: 'log4j-over-slf4j'
      exclude group: 'ch.qos.logback', module: 'logback-core'
      exclude group: 'ch.qos.logback', module: 'logback-classic'
}

ext {
      springBootAdminVersion = '1.5.7'
      log4j2Version = '2.10.0'
}

dependencies {
      compile('de.codecentric:spring-boot-admin-starter-server')
      compile('de.codecentric:spring-boot-admin-server-ui')
 
      compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: "${log4j2Version}"
      compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: "${log4j2Version}"
      compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: "${log4j2Version}"
 
      testCompile('org.springframework.boot:spring-boot-starter-test')
}

dependencyManagement {
      imports {
            mavenBom "de.codecentric:spring-boot-admin-dependencies:${springBootAdminVersion}"
      }
}
  • 設定 port
server.port=8081
embedded tomcat 預設的 port 是 8080,因為我打算用來測試的 client 程式「第一個 spring boot web 程式 (使用 embedded tomcat)」也有用到 embedded tomcat 已經佔去了 8080 port,所以在 application.properties 中加入如上內容設定使用 8081 port。
  • 執行 server
執行上述 server 程式後,打開瀏覽器,打入 http://localhost:8081,可以看到如下畫面,這樣就確定已經正常啟動了!
接下來要來看一下 client 程式怎麼修改,可以讓這個 server 進行監控。
  • 修改 client 程式的 build.gradle
buildscript {
 ext {
  springBootVersion = '1.5.10.RELEASE'
 }
 repositories {
  mavenCentral()
 }
 dependencies {
  classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
 }
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'idv.steven'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
      mavenCentral()
}

configurations.all {
      exclude group: 'log4j', module: 'log4j'
      exclude group: 'org.slf4j', module: 'slf4j-log4j12'
      exclude group: 'org.slf4j', module: 'log4j-over-slf4j'
      exclude group: 'ch.qos.logback', module: 'logback-core'
      exclude group: 'ch.qos.logback', module: 'logback-classic'
}

ext {
      springBootAdminVersion = '1.5.7'
      log4j2Version = '2.10.0'
}

dependencies {
      compile('org.springframework.boot:spring-boot-starter-data-jpa') 
      compile('org.springframework.boot:spring-boot-starter-web')
      compile('org.springframework.boot:spring-boot-starter-thymeleaf')
      compile('de.codecentric:spring-boot-admin-starter-client')
 
      compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: "${log4j2Version}"
      compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: "${log4j2Version}"
      compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: "${log4j2Version}"
      
      compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.2.1'
      compile group: 'javax.inject', name: 'javax.inject', version: '1'
      compileOnly('org.projectlombok:lombok')
      testCompile('org.springframework.boot:spring-boot-starter-test')
}

dependencyManagement {
      imports {
            mavenBom "de.codecentric:spring-boot-admin-dependencies:${springBootAdminVersion}"
      }
}
紅色部份是為了導入 Spring Boot Admin client 而加入的。
  • 修改 application.properties (client)
spring.boot.admin.url=http://localhost:8081
spring.boot.admin.client.name=demo

endpoints.sensitive=false
endpoints.logfile.external-file=d:/tmp/demo.log
在 application.properties 中加入如上設定,前兩行指出 Spring Boot Admin Server 的網址及要顯示在監控畫面的程式名稱; 後兩行是為了將 client 的 log4j2 產生的 log file 送到監控畫面而設定的,這樣萬一監控時發現錯誤,可以立即看 log。
  • 執行 client
執行後,client 會自動連到 server 註冊,然後就會顯示在監控畫面,如上。如果想看更詳細的資料,可以按【Details】,將顯示如下畫面,其中第二項「Log」就是 log4j2 的 log file 內容。



沒有留言:

張貼留言