運作狀态監控Actuator
一、Actuator簡介
SpringBoot的Actuator提供了運作狀态監控的功能, Actuator 的監控資料可以通過REST、遠端shell和JMX方式獲得。首先介紹通過REST方式檢視Actuator的節點的方法,這種是最常見且簡單的方法:在工程的POM檔案中引入Actuator的起步依賴spring-boot-starter-actuator,代碼清單如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在配置檔案application-dev.properties中配置management.port 和management.security.enabled這兩個配置分别配置了Actuator 對外暴露REST API 接口的端口号和Actuator采取非安全驗證方式,其代碼清單如下:
server:
port: 8082
management:
port: 9001
security:
enabled: false
endpoints:
shutdown:
enabled: true
在上述的配置代碼中指定了Actuator對外暴露REST API 接口的端口為9001 ,如果不指定,端口為應用程式的啟動端口,這樣做的目的是将程式端口和程式的監控端口分開。
SpringBoot Actuator的關鍵特性是在應用程式裡提供衆多的Web節點,通過這些節點可以實時地了解應用程式的運作狀況。有了Actuator ,你可以知道Bean在Spring應用程式上下文裡是如何組裝在一起的,并且可以擷取環境屬性的資訊和運作時度量資訊。Actuator 提供了13 個API 接口,用于監控運作狀态的SpringBoot的狀況,具體如下圖所示:
二、檢視運作程式的健康狀态
打開浏覽器通路http://localhost:9001/heath,可以檢視應用程式的運作狀态和磁盤狀态等資訊。浏覽器顯示的資訊如下:
“/health ”API 接口提供的資訊是由一個或多個健康訓示器提供的健康資訊的組合結果,下圖列出了SpringBoot自帶的健康訓示器
三、檢視運作程式的Bean
如果需要了解Spring Boot上下文注入了哪些Bean以及這些Bean 的類型、狀态、生命周期等資訊時, 隻需要發起一個GET類型的請求,請求API 為“/beans”, 在浏覽器上通路“ http://localhost:9001/beans ,浏覽器會顯示如下的資訊:
在傳回的資訊中包含了Bean的以下4類資訊:
1)bean: Spring 應用程式上下文中的Bean名稱或Id
2)resource: class 檔案的實體位置,通常是一個Url,指向建構出的Jar檔案的路徑
3)scope: Bean的作用域
4)type:Bean的類型
四、使用shell 連接配接Actuatr
通過REST API這種方式,開發人員通過Actuator可以很友善地了解運作中的程式的監控資訊。Actuator也可以通過shell的方式連接配接。通過shell 連接配接Actuator,需要在工程的POM檔案加上shell的起步依賴spring-boot-starter-remote-shell,代碼如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-remote-shell</artifactId>
</dependency>
在程式的pom檔案加上spring-boot-starter-remote-shell起步依賴後,啟動Springboot應用程式,在程式的控制台會輸出連接配接shell的密碼,密碼是随機的,每次都不一樣,大概格式如下:
Using default password for shell access : 45f17018-5839-478e-alal-06de4cc82d4f
與密碼相對應的使用者名是user,可以通過遠端SSH連接配接shell,它的端口是2000,這是固定的,連接配接上shell後,這時可以通過終端檢視Actuator 的各個端點。SpringBoot提供了4個特有的shell指令,如圖:
Actuator是Spring Boot一個非常重要的功能, Actuator為開發人員提供了Spring Boot的運作狀态資訊,通過Actuator可以檢視程式的運作狀态的資訊
————————————————————————————————————————————