1. 程式人生 > 其它 >SpringBoot監控工具包Actuator使用

SpringBoot監控工具包Actuator使用

一、什麼是Actuator?

  當一個SpringBoot專案執行的時候,我們可能需要對這個專案進行實時監控,actuator是一個監控工具包,用來在程式執行時監控執行資料,開發者可以使用http端點或jmx來管理和監控應用程式的健康狀況、應用資訊、記憶體使用狀況等。web服務端點是指您的程式用來和其他應用程式進行通訊的url地址。

  在SpringBoot中,端點(endpoints)可用於監控應用及與應用進行互動,Spring Boot包含很多內建的端點,你也可以新增自己的。例如,health端點提供了應用的基本健康資訊。每個端點都可以啟用或禁用。這控制著端點是否被建立,並且它的bean是否存在於應用程式上下文中。要遠端訪問端點,除了啟用端點,還必須通過JMX或HTTP進行暴露。大部分應用選擇HTTP方式暴露,端點的ID對映到一個帶/actuator

字首的URL。

  SpringBoot2的端點預設根路徑已經由 “/” 調整到了 “/actuator“ 下,可以在配置檔案application.yml中配置根路徑:management.endpoints.web.base-path=/ 。SpringBoot內建瞭如下一些端點:

  在web專案中還可以使用如下端點:

二、Actuator的使用

   1、引入jar包:使用Actuator需要在springboot專案中引入jar包,Maven引入方式如下

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

  2、啟用端點:預設情況下,除shutdown以外的所有端點均已啟用。要配置單個端點的啟用,請使用management.endpoint.<id>.enabled屬性。配置舉例如下

#啟用端點
management:
endpoints:
enabled-by-default:
false #全域性配置,關閉所有端點 endpoint: #單一端點配置 shutdown: enabled:true #啟用shutdown端點

  3、暴露端點:要遠端訪問端點,必須通過JMX或HTTP進行暴露,配置舉例如下

#暴露監控端點
management:
   endpoints:     
web: #http方式暴露
base
-path:/actuator #actuator提供的api介面根路徑 exposure: include: "*" #需要開放的端點,預設只打開health、info,*表示所有
exclude: #需要排除的端點
jmx: #jmx方式暴露
exposure:
include: "*"
exclude:

    注意:禁用的端點將從應用程式上下文中完全刪除。如果您只想更改端點公開(對外暴露)的技術,請改為使用includeexclude屬性。由於端點可能包含敏感資訊,因此應仔細考慮何時公開它們。下表顯示了內建端點的預設暴露情況。

  4、端點訪問路徑:預設情況下,端點通過使用端點的ID在/actuator路徑下的HTTP上公開。例如,beans端點暴露在/actuator/beans下。如果要將端點對映到其他路徑,則可以使用management.endpoints.web.path-mapping屬性。另外,如果您想更改基本路徑,則可以使用management.endpoints.web.base-path

  5、端點跨域訪問:預設情況下,CORS支援處於禁用狀態,只有在設定了management.endpoints.web.cors.allowed-origins屬性後才能啟用。以下配置允許來自example.com域的GET和POST呼叫:

management:
   endpoints:     
      web:              
        cors:
           allowed-origins = http://example.com
           allowed-methods = POST,GET

  6、自定義端點:如果新增用@Endpoint註解@Bean,則任何使用@ReadOperation@WriteOperation@DeleteOperation註釋的方法都會自動通過JMX公開,並且也可以通過HTTP在Web應用程式中通過HTTP公開。也可以使用Jersey,Spring MVC或Spring WebFlux通過HTTP公開端點。

  7、端點操作:

    端點上的操作通過引數接收輸入,這些引數的值取自URL的查詢引數和JSON請求主體。通過JMX公開時,引數將對映到MBean操作的引數。引數預設是必需的,可以通過使用@org.springframework.lang.Nullable註釋使其成為可選的。

    傳遞給端點操作方法的引數在必要時會自動轉換為所需的型別。在呼叫操作方法之前,使用ApplicationConversionService的例項將通過JMX或HTTP請求接收到的輸入轉換為所需的型別。