Spring Boot Actuator認識
阿新 • • 發佈:2018-12-03
概述
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資訊。