如之前文章最終效果
management
:endpoints
:web
:exposure
:# 顯式配置不需要許可權驗證對外開放的端點
include
:"*"
# actuator 的 web 訪問方式的根位址為 /actuator,可以通過 management.endpoints.web.base-path 引數進行修改
# base-path: /monitor
# 禁用所有執行器端點
# enabled: false
endpoint
:health
:enabled
:true
show-details
: always
info
:enabled
:true
# json 列印輸出
spring
:jackson
:serialization
:indent_output
:true
監控資訊如果需要跨越呼叫,可通過cors配置來支援,預設處於禁用狀態。設定management.endpoints.web.cors.allowed-origins屬性後開啟。
比如允許來自 域的get和post呼叫:
management
:endpoints
:web
:cors
:allowed-origins
: allowed-methods
: get,post
,"beans":,
"caches-cache":"
,"templated"
:true},
"caches":,
"health":,
"health-path":"
,"templated"
:true},
"info":,
"conditions":,
"shutdown":,
"configprops":,
"env":,
"env-tomatch":"
,"templated"
:true},
"loggers-name":"
,"templated"
:true},
"loggers":,
"heapdump":,
"threaddump":,
"metrics-requiredmetricname":"
,"templated"
:true},
"metrics":,
"scheduledtasks":,
:}}
spring boot actuator 的關鍵特性是在應用程式裡提供眾多 web 介面,通過它們了解應用程式執行時的內部狀況。actuator 提供了 13 個介面,可以分為三大類:配置介面、度量介面和其它介面,具體如下表所示。
http 方法
路徑描述
get/autoconfig
提供了乙份自動配置報告,記錄哪些自動配置條件通過了,哪些沒通過
get/configprops
描述配置屬性(包含預設值)如何注入bean
get/beans
描述應用程式上下文裡全部的bean,以及它們的關係
get/dump
獲取執行緒活動的快照
get/env
獲取全部環境屬性
get/env/
根據名稱獲取特定的環境屬性值
get/health
報告應用程式的健康指標,這些值由healthindicator的實現類提供
get/info
獲取應用程式的定製資訊,這些資訊由info打頭的屬性提供
get描述全部的uri路徑,以及它們和控制器(包含actuator端點)的對映關係
get/metrics
報告各種應用程式度量資訊,比如記憶體用量和http請求計數
get/metrics/
報告指定名稱的應用程式度量值
post
/shutdown
關閉應用程式,要求endpoints.shutdown.enabled設定為true
get/trace
提供基本的http請求跟蹤資訊(時間戳、http頭等)
原生端點
原生端點分為三大類:
度量指標類:獲取應用程式執行過程中用於監控的度量指標,比如:記憶體資訊、執行緒池資訊、http請求統計等。
操作控制類:提供了對應用的關閉等操作類功能。
雖然actuator提供了很多執行中spring boot應用程式的內部工作細節,但難免和你的需求有所偏差。也許你並不需要它提供的所有功能,想要關閉一些也說不定。或者,你需要對actuator 稍作擴充套件,增加一些自定義的度量資訊,以滿足你對應用程式的需求。
修改介面 id
每個actuator 介面都有乙個id用來決定介面的路徑,比方說,/beans介面的預設id就是beans。比如要修改 /beans 為 /instances,則設定如下:
endpoints.beans.id = instances
啟用和禁用介面
雖然actuator的介面都很有用,但你不一定需要全部這些介面。預設情況下,所有介面(除 了/shutdown)都啟用。比如要禁用 /metrics 介面,則可以設定如下:
endpoints.metrics.enabled = false
如果你只想開啟一兩個介面,那就先禁用全部介面,然後啟用那幾個你要的,這樣更方便。
endpoints.enabled = false
endpoints.metrics.enabled = true
新增自定義度量資訊
actuator 自動配置有兩個例項 counterservice 和 gaugeservice 可以用來計數使用,我們所要做的就是把它們的例項注入所需的 bean 然後呼叫相應的方法。除此之外,我們還可以實現 publicmetrics 介面,提供自己需要的度量資訊。
建立自定義跟蹤倉庫
預設情況下,/trace 介面報告的跟蹤資訊都儲存在記憶體倉庫裡,100個條目封頂。一旦倉庫滿了,就開始移除老的條目,給新的條目騰出空間。在開發階段這沒什麼問題,但在生產環境中,大流量會造成跟蹤資訊還沒來得及看就被丟棄。我們可以將那些跟蹤條目儲存在其他地方——既不消耗記憶體,又能長久儲存的地方。只需實現spring boot的tracerepository介面即可。
插入自定義的健康指示器
實現 healthindicator 介面則可以實現自定義的健康指示器。
保護 actuator 介面
很多actuator端點發布的資訊都可能涉及敏感資料,還有一些端點,(比如/shutdown)非常危險,可以用來關閉應用程式。因此,保護這些端點尤為重要,能訪問它們的只能是那些經過授權的客戶端。
springboot整合actuator安全問題
記錄一次springboot使用actuator作為監控的安全問題 伺服器突然出現大量報錯,如mybatis報錯,sql檢查沒問題。觀察同一時間的請求日誌,發現多個如下請求 如果整合了hikaricp作為資料庫連線池 該連線池有個提供連線前執行sql的配置spring.datasource.hika...
actuator利用姿勢
漏洞1 敏感資訊獲取 http 馬賽克 8006 actuator httptrace 這個接 懂的,可以獲取當前登入使用者資訊 漏洞2 獲取mysql賬號密碼 先弄env host 馬賽克 8006 然後在重新整理 host 馬賽克 8006 然後監聽 解密嘗試連線 漏洞3 待補充 補充 後面我執...
springboot 使用actuator監控
spring boot starter actuator是乙個用於暴露自身資訊的模組,主要用於監控與管理。org.springframework.boot spring boot starter actuator 使用字首 actuator加上端點id來訪問。例如,在預設情況下,health端點對映...