1. 程式人生 > 程式設計 >Springboot actuator應用後臺監控實現

Springboot actuator應用後臺監控實現

一 前言

springboot 額外的特色是提供了後臺應用監控,可以通過 HTTP 或者 JMX的方式管理監控應用,本文主講HTTP方式;其主要的功能是監控應用的健康狀態,檢視環境變數等;

二 pom.xml

springboot 2.1.1,主要引入 actuator 依賴,web依賴用於測試;

		 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

三 預設開啟端點

3.1 預設端點 health

直接編寫主程式入口,啟動;瀏覽器輸入 http://localhost:8080/actuator/health;結果如下,狀態是UP;

Springboot actuator應用後臺監控實現

翻翻原始碼heath狀態碼如下

public OrderedHealthAggregator() {
  this.setStatusOrder(Status.DOWN,Status.OUT_OF_SERVICE,Status.UP,Status.UNKNOWN);
 }
  • DOWN 服務無法獲得,狀態碼503;
  • .OUT_OF_SERVICE 服務無法獲得,狀態碼503;
  • UP 獲得服務,狀態碼200;
  • UNKNOWN 獲得未知服務,狀態碼200;

在 application.yml 中配置 healthy 資訊 示例如下:

management: endpoint: health: show-details: always

列印詳細資訊:

Springboot actuator應用後臺監控實現

基本配置如下:

never :預設,表示不顯示詳細資訊;when-authorized:詳細資訊顯示給 認證過的使用者;使用

management.endpoint.health.roles 配置always: 顯示詳細資訊給所有使用者3.2 預設端點 info

瀏覽器輸入 http://localhost:8080/actuator/info; 展示空資訊如下圖:

Springboot actuator應用後臺監控實現

在application.yml 中 配置工程 info 資訊 示例如下;

#配置資訊info: actuator: name: springboot-actutor version: 1.0.0 author: zszxz

展示結果如下:

Springboot actuator應用後臺監控實現

四 HTTP端點說明

端點 端點描述 預設值
auditevents 當前應用的審計事件 Yes
beans 顯示spring IOC 容器載入的所有bean Yes
caches 顯示可獲得的快取 Yes
conditions 顯示自動配置通過condition判斷匹配或者不匹配的配置資訊 Yes
configprops 顯示 通過 @ConfigurationProperties 配置的屬性資訊 Yes
env spring環境變數屬性資訊 Yes
flyway 顯示flyway 配置資料庫已經遷移的資訊 Yes
health 顯示應用的健康資訊 Yes
httptrace 顯示 HTTP 軌跡資訊預設最新的100 HTTP request或response Yes
info 顯示自定義的應用資訊 Yes
integrationgraph 顯示spring 整合 graph 資訊 Yes
loggers 顯示配置檔案中日誌修改資訊 Yes
liquibase 顯示 任意的 Liquibase 資料庫已經遷移的資訊 Yes
metrics 顯示當前應用的指標 Yes
mappings 顯示 @RequestMapping paths. 配置的路徑資訊 Yes
scheduledtasks 顯示任務排程資訊 Yes
sessions 刪除或者恢復Spring Session會話,不支援web響應式程式設計 Yes
shutdown 關閉應用 No
threaddump 執行一個執行緒轉儲 Yes

五 配置開啟端點

application.yml 中配置需要開啟的端點,其中 * 表示開啟所有端點,示例如下:

management:
 endpoints:
 web:
  exposure:
  # 使用萬用字元 * 表示匹配所有端點
  # 排除的端點
  exclude: caches
  # 包括的端點
  include: info,health,beans,env,shutdown,threaddump

5.1 threaddump示例

http://localhost:8080/actuator/threaddump ;用於返回執行緒快照,分析執行緒阻塞,死鎖等,部分內容如下

{
	"threads": [{
		"threadName": "DestroyJavaVM","threadId": 41,"blockedTime": -1,"blockedCount": 0,"waitedTime": -1,"waitedCount": 0,"lockName": null,"lockOwnerId": -1,"lockOwnerName": null,"inNative": false,"suspended": false,"threadState": "RUNNABLE","stackTrace": [],"lockedMonitors": [],"lockedSynchronizers": [],"lockInfo": null
	}

5.2 beans示例

http://localhost:8080/actuator/beans ; 用於返回 spring 容器載入的所有bean,部分內容如下;

{
	"contexts": {
		"application": {
			"beans": {
				"endpointCachingOperationInvokerAdvisor": {
					"aliases": [],"scope": "singleton","type": "org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor","resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/EndpointAutoConfiguration.class]","dependencies": ["environment"]
				},"defaultServletHandlerMapping": {
					"aliases": [],"type": "org.springframework.web.servlet.HandlerMapping","resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]","dependencies": []
				}

5.3 關閉應用示例

普通情況下是沒有開啟這個配置,是比較危險的動作,會導致應用停止;修改application.yml配置如下

management:
 endpoints:
 web:
  exposure:
  # 使用萬用字元 * 表示匹配所有端點
  # 排除的端點
  exclude: caches
  # 包括的端點
  include: info,shutdown
 endpoint:
 health:
  show-details: always
 # 開啟關閉應用 需要post請求
 shutdown:
  enabled: true

訪問地址 http://localhost:8080/actuator/shutdown; 注意僅支援使用POST請求,否則 會 405錯誤;

六 CORS 支援

application.yml 修改配置如下, allowed-origins 中允許跨域的ip地址; allowed-methods 配置 允許通過的請求,還有支援時間等;

management:
 endpoints:
 web:
  exposure:
  # 使用萬用字元 * 表示匹配所有端點
  # 排除的端點
  exclude: caches
  # 包括的端點
  include: info,shutdown
  # 跨域處理
  cors:
  allowed-origins: http://localhost:8080/
  allowed-methods: post,delete,get,put
 endpoint:
 health:
  show-details: always
 # 開啟關閉應用 需要post請求
 shutdown:
  enabled: true

七 修改預設路徑

在 配置檔案中新增 base-path , 會修改掉預設路徑 actuator/endpoint;

management:
 endpoints:
 web:
  exposure:
  # 使用萬用字元 * 表示匹配所有端點
  # 排除的端點
  exclude: caches
  # 包括的端點
  include: info,shutdown
  # 自定義配置監控路徑
  base-path: /zszxz
  # 跨域處理
  cors:
  allowed-origins: http://localhost:8080/
  allowed-methods: post,put
 endpoint:
 health:
  show-details: always
 # 開啟關閉應用 需要post請求
 shutdown:
  enabled: true

示例url: http://localhost:8080/zszxz/info

結果如下

Springboot actuator應用後臺監控實現

八 其他配置說明

還可以引入 security 依賴 配置 賬號密碼,角色資訊,達到訪問控制,詳細的可以參照官網;

還可以使用註解進行配置,自定義端點,詳細參照官網;

jmx支援,可以使用open jdk 自帶的工具 jconsole 進行監控;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。