概述 spring boot starter actuator:是一個用於暴露自身信息的模塊,主要用於監控與管理。 為了保證actuator暴露的監控介面的安全性,需要添加安全控制的依賴spring boot start security依賴,訪問應用監控端點時,都需要輸入驗證信息。 關鍵配置: A ...
概述
spring-boot-starter-actuator:是一個用於暴露自身信息的模塊,主要用於監控與管理。
為了保證actuator暴露的監控介面的安全性,需要添加安全控制的依賴spring-boot-start-security依賴,訪問應用監控端點時,都需要輸入驗證信息。
關鍵配置:
//敏感信息訪問限制(單個介面)
endpoints.mappings.sensitive=true
//安全限制
management.security.enabled=false
//啟用和禁用介面(單個介面)
//預設情況下,所有介面(除了/shutdown)都啟用。
endpoints.metrics.enabled = false
//禁用全部介面
endpoints.enabled = false
Actuator監控分類
- 原生端點:在應用程式中提供眾多Web介面,通過它們瞭解應用程式運行時的內部狀況。主要分三類:
- 應用配置類:可以查看應用運行期的靜態信息,例如自動配置信息、載入的Springbean信息、yml文件配置信息、環境變數、請求映射信息。
- 度量指標類:主要是運行期的動態信息,例如堆棧、請求鏈、記憶體信息、線程池信息、HTTP請求統計等。
- 操作控制類:主要是指shutdown,用戶可以發送一個請求將應用的監控功能關閉。
- 用戶自定義端點:擴展性
Actuator的REST介面
HTTP方法 | 路徑 | 描述 |
---|---|---|
GET | /autoconfig | 提供了一份自動配置報告,記錄哪些自動配置條件通過了,哪些沒有通過 |
GET | /configprops | 描述配置屬性(包含預設值)如何註入Bean |
GET | /beans | 描述應用程式上下文裡面全部的Bean,以及它們的關係 |
GET | /dump | 獲取線程活動的快照 |
GET | /env | 獲取全部環境屬性 |
GET | /env/{name} | 根據名稱獲取特定的環境屬性值 |
GET | health | 報告應用程式的健康指標,這些值由HealthIndicator的實現類提供 |
GET | /info | 獲取應用程式的定製信息,這些信息由info打頭的屬性提供 |
GET | /mappings | 描述全部的URI路徑,以及它們和控制器(包含Actuator端點)的映射關係 |
GET | /metrics | 報告各種應用程式度量信息,比如記憶體用量和HTTP請求數 |
GET | /metrics/{name} | 報告指定名稱的應用程式度量值 |
POST | /shutdown | 關閉應用程式,要求endpoints.shutdown.enabled設置為true |
GET | /trace | 提供基本的HTTP請求跟蹤信息(時間戳、HTTP頭等) |
命令詳解
- autoconfig:用於程式運行時查看某個配置什麼條件下生效、或者為什麼沒有生效。
- configprops:查看配置文件中設置的屬性內容、以及一些配置屬性的預設值。關註配置信息。
- beans:展示了bean的別名、類型、是否單例、類的地址、依賴等信息。
- dump:生成當前線程活動的快照,包括線程名、線程ID、線程的狀態、是否等待鎖資源等信息。
- env:展示了系統環境變數的配置信息,包括使用的環境變數、JVM屬性、命令行參數、項目使用的jar包等信息。關註運行環境信息。
- 為了敏感信息暴露,所有名為password、secret、key(或者名字最後一段是這些)的屬性會展示為*。
- /env/{name}:獲取指定配置信息
- health:可以查看HealthEndPoint給我們提供預設的監控結果,包含磁碟檢測、資料庫檢測。
- info:就是我們自己配置在配置文件中以Info開頭的配置信息。
- mappings:描述全部的URI路徑,已經它們和控制器的映射關係。
- metrics:最重要的監控內容之一,主要監控了JVM使用、GC情況、類載入信息等。
metrics提供信息分類:
分類 | 首碼 | 報告內容 |
---|---|---|
垃圾收集器 | gc.* | GC次數、GC耗費的時間,適用於標記-清理垃圾收集器和並行收集器(數據來源於java.lang.management.GarbageCollectorMXBean) |
記憶體 | mem.* | 分配給應用程式的記憶體數量和空閑的記憶體數量(數據源自java.lang.Runtim) |
堆 | heap.* | 當前堆記憶體用量,數據源自java.lang.management.MemoryUsage |
類載入器 | classes.* | JVM類載入器載入與卸載的類的數量,數據源自java.lang. management.ClassLoadingMXBean |
系統 | processors、instance.uptime、uptime、systemload.average | 系統信息,例如處理器數量(數據源自java.lang.Runtime)、運行時間(數據源自java.lang.management.RuntimeMXBean)、平均負載(數據源自java.lang.management.OperatingSystemMXBean) |
線程池 | thread.* | 線程、守護線程的數量、JVM啟動後的線程數量峰值(數據源自java.lang .management.ThreadMXBean) |
數據源 | datasource.* | 數據源鏈接的數量(DataSource Bean) |
Tomcat會話 | httpsessions.* | Tomcat的會話數和最大會話數(疏數據源自嵌入式Tomcat的Bean) |
HTTP | counter.status.*、gauge.reponse. | 多種應用程式HTTP請求的度量值與計數器 |
- shutdown:優雅關閉Sprint Boot應用。
- trace:能報告所有Web請求的詳細信息,包括請求方法、路徑、時間戳以及請求和響應的header信息。