spring-boot-starter-actuator模塊爲spring boot構建的應用提供了一系列用於監控的端點。
添加依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
actuator包括的原生端點主要包括以下三類:
1、應用配置類:獲取應用程序加載的引用配置、環境變量、自動化配置報告等與spring boot應用密切相關的配置類信息。
2、度量指標類:獲取應用程序運行過程中用於監控的度量指標,比如內存信息、線程池信息、HTTP請求統計等。
3、操作控制類:提供對應用的關閉等操作類功能。
1、應用配置類主要端點
/autoconfig:該端點用來獲取應用的自動化配置報告,其中包括所有自動化配置的候選項。同時還列出了每個候選項自動化配置的各個先決條件是否滿足。所以,該端點可以幫助我們方便的找到一些自動化配置爲什麼沒有生效的具體原因。該報告內容將自動化配置內容分爲兩部分:
positiveMatches
中返回的是條件匹配成功的自動化配置negativeMatches
中返回的是條件匹配不成功的自動化配置
/beans:該端點用來獲取應用上下文中創建的所有Bean。
- bean:Bean的名稱
- scope:Bean的作用域
- type:Bean的Java類型
- reource:class文件的具體路徑
- dependencies:依賴的Bean名稱
/configprops:該端點用來獲取應用中配置的屬性信息報告。從下面該端點返回示例的片段中,我們看到返回了關於該短信的配置信息,prefix
屬性代表了屬性的配置前綴,properties
代表了各個屬性的名稱和值。所以,我們可以通過該報告來看到各個屬性的配置路徑,比如我們要關閉該端點,就可以通過使用endpoints.configprops.enabled=false
來完成設置。
/env:該端點與/configprops
不同,它用來獲取應用所有可用的環境屬性報告。包括:環境變量、JVM屬性、應用的配置配置、命令行中的參數。從下面該端點返回的示例片段中,我們可以看到它不僅返回了應用的配置屬性,還返回了系統屬性、環境變量等豐富的配置信息,其中也包括了應用還沒有沒有使用的配置。所以它可以幫助我們方便地看到當前應用可以加載的配置信息,並配合@ConfigurationProperties
註解將它們引入到我們的應用程序中來進行使用。另外,爲了配置屬性的安全,對於一些類似密碼等敏感信息,該端點都會進行隱私保護,但是我們需要讓屬性名中包含:password、secret、key這些關鍵詞,這樣該端點在返回它們的時候會使用*
來替代實際的屬性值。
/mappings:該端點用來返回所有Spring MVC的控制器映射關係報告。從下面的示例片段中,我們可以看該報告的信息與我們在啓用Spring MVC的Web應用時輸出的日誌信息類似,其中bean
屬性標識了該映射關係的請求處理器,method
屬性標識了該映射關係的具體處理類和處理函數。
/info:該端點用來返回一些應用自定義的信息。默認情況下,該端點只會返回一個空的json內容。我們可以在application.properties
配置文件中通過info
前綴來設置一些屬性,比如下面這樣
info.app.name=spring-boot-hello
info.app.version=v1.0.0
再訪問/info
端點,我們可以得到下面的返回報告,其中就包含了上面我們在應用自定義的兩個參數。{ "app": {
"name": "spring-boot-hello",
"version": "v1.0.0"
}
}
2、度量指標類主要端點
/metrics:該端點用來返回當前應用的各類重要度量指標,比如:內存信息、線程信息、垃圾回收信息等。我們還可以通過/metrics/{name}
接口來更細粒度的獲取度量信息,比如我們可以通過訪問/metrics/mem.free
來獲取當前可用內存數量。
/health:用來獲取應用的各類健康指標信息
/dump:該端點用來暴露程序運行中的線程信息。它使用java.lang.management.ThreadMXBean
的dumpAllThreads
方法來返回所有含有同步信息的活動線程詳情。
/trace:該端點用來返回基本的HTTP跟蹤信息。默認情況下,跟蹤信息的存儲採用org.springframework.boot.actuate.trace.InMemoryTraceRepository
實現的內存方式,始終保留最近的100條請求記錄。
2、操作控制類主要端點
在原生端點中,只提供了一個用來關閉應用的端點:/shutdown
。我們可以通過如下配置開啓它:
endpoints.shutdown.enabled=true
在配置了上述屬性之後,只需要訪問該應用的/shutdown
端點就能實現關閉該應用的遠程操作。/routes:返回網關的路由列表。
management.security.enabled=false 關閉對監控端點的權限控制