1. 程式人生 > >Spring Boot Actuator認識

Spring Boot Actuator認識

概述

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資訊。