日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot 2.0官方文档之 Actuator

發布時間:2025/4/5 javascript 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 2.0官方文档之 Actuator 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/alinyua/article/details/80009435

前言:本文翻譯自Spring Boot 2.0.1.RELEASE官方文檔,該Spring Boot版本是當前(2018年4月份)官方推薦版本,因Spring Boot 2.0的Actuator與之前版本有較大不同,而網上相關博文資料較舊,故建議閱讀官方文檔再做實踐.轉載需經本人同意,注明出處方可轉載.

目錄:

?

    • 執行器(Actuator)的定義
    • 1. 開啟Actuator
    • 2. 端點(Endpoints)
      • 2.1 啟用端點
      • 2.2 暴露端點
      • 2.3 保護HTTP端點
      • 2.4 配置端點緩存時間
      • 2.5 端點的發現頁
      • 2.6 端點的路徑
      • 2.7 跨域支持
      • 2.8 實現自定義端點
        • 2.8.1 接收輸入
        • 2.8.2 自定義Web端點
        • 2.8.3 Servlet端點
        • 2.8.4 控制器端點
      • 2.9 健康信息
        • 2.9.1 自動配置的HealthIndicators
        • 2.9.2 編寫自定義HealthIndicators
        • 2.9.3 反應性健康指標
        • 2.9.4 自動配置的ReactiveHealthIndicators
      • 2.10 應用信息
        • 2.10.1 自動配置的InfoContributors
        • 2.10.2 自定義應用信息
        • 2.10.3 Git提交信息
        • 2.10.4 構建信息
        • 2.10.5 編寫自定義InfoContributors
    • 3. 通過HTTP進行監控和管理
      • 3.1 自定義管理端點路徑
      • 3.2 自定義管理服務器端口
      • 3.3 配置管理專用SSL
      • 3.4 自定義管理服務器地址
      • 3.5 禁用HTTP端點

?

執行器(Actuator)的定義

執行器是一個制造業術語,指的是用于移動或控制東西的一個機械裝置,一個很小的改變就能讓執行器產生大量的運動。?
An actuator is a manufacturing term that refers to a mechanical device for moving or controlling something. Actuators can generate a large amount of motion from a small change.

1. 開啟Actuator

spring-boot-actuator模塊提供Spring Boot所有的production-ready特性,啟用該特性的最簡單方式是添加spring-boot-starter-actuator?‘Starter’依賴。?
按以下配置為Maven項目添加執行器:

<dependencies><dependency><groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

對于Gradle,使用下面的聲明:

dependencies {compile("org.springframework.boot:spring-boot-starter-actuator") }
  • 1
  • 2
  • 3

2. 端點(Endpoints)

執行器端點(endpoints)可用于監控應用及與應用進行交互,Spring Boot包含很多內置的端點,你也可以添加自己的。例如,health端點提供了應用的基本健康信息。?
每個端點都可以啟用或禁用。這控制著端點是否被創建,并且它的bean是否存在于應用程序上下文中。要遠程訪問端點,還必須通過JMX或HTTP進行暴露,大部分應用選擇HTTP,端點的ID映射到一個帶/actuator前綴的URL。例如,health端點默認映射到/actuator/health。

注意:?
Spring Boot 2.0的端點基礎路徑由“/”調整到”/actuator”下,如:/info調整為/actuator/info?
可以通過以下配置改為和舊版本一致:

management.endpoints.web.base-path=/

下面的端點都是可用的:

ID描述默認啟用
auditevents顯示當前應用程序的審計事件信息Yes
beans顯示一個應用中所有Spring Beans的完整列表Yes
conditions顯示配置類和自動配置類(configuration and auto-configuration classes)的狀態及它們被應用或未被應用的原因Yes
configprops顯示一個所有@ConfigurationProperties的集合列表Yes
env顯示來自Spring的?ConfigurableEnvironment的屬性Yes
flyway顯示數據庫遷移路徑,如果有的話Yes
health顯示應用的健康信息(當使用一個未認證連接訪問時顯示一個簡單的’status’,使用認證連接訪問則顯示全部信息詳情)Yes
info顯示任意的應用信息Yes
liquibase展示任何Liquibase數據庫遷移路徑,如果有的話Yes
metrics展示當前應用的metrics信息Yes
mappings顯示一個所有@RequestMapping路徑的集合列表Yes
scheduledtasks顯示應用程序中的計劃任務Yes
sessions允許從Spring會話支持的會話存儲中檢索和刪除(retrieval and deletion)用戶會話。使用Spring Session對反應性Web應用程序的支持時不可用。Yes
shutdown允許應用以優雅的方式關閉(默認情況下不啟用)No
threaddump執行一個線程dumpYes

如果使用web應用(Spring MVC, Spring WebFlux, 或者 Jersey),你還可以使用以下端點:

ID描述默認啟用
heapdump返回一個GZip壓縮的hprof堆dump文件Yes
jolokia通過HTTP暴露JMX beans(當Jolokia在類路徑上時,WebFlux不可用)Yes
logfile返回日志文件內容(如果設置了logging.file或logging.path屬性的話),支持使用HTTP?Range頭接收日志文件內容的部分信息Yes
prometheus以可以被Prometheus服務器抓取的格式顯示metrics信息Yes

注意?
Spring Boot 2.0的端點和之前的版本有較大不同,使用時需注意?
另外,端點的監控機制也有很大不同,啟用了不代表可以直接訪問,還需要將其暴露出來,傳統的management.security管理已被標記為不推薦,現在一般使用單獨啟用并暴露

2.1 啟用端點

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

management.endpoint.shutdown.enabled=true
  • 1

另外可以通過management.endpoints.enabled-by-default來修改全局端口默認配置,以下示例啟用info端點并禁用所有其他端點:

management.endpoints.enabled-by-default=false management.endpoint.info.enabled=true
  • 1
  • 2

注意?
禁用的端點將從應用程序上下文中完全刪除。如果您只想更改端點公開(對外暴露)的技術,請改為使用include和exclude屬性,詳情見下文

2.2 暴露端點

由于端點可能包含敏感信息,因此應仔細考慮何時公開它們。下表顯示了內置端點的默認曝光:

IDJMXWeb
auditeventsYesNo
beansYesNo
conditionsYesNo
configpropsYesNo
envYesNo
flywayYesNo
healthYesYes
heapdumpN/ANo
httptraceYesNo
infoYesYes
jolokiaYesNo
logfileYesNo
loggersYesNo
liquibaseYesNo
metricsYesNo
mappingsYesNo
prometheusN/ANo
scheduledtasksYesNo
sessionsYesNo
shutdownYesNo
threaddumpYesNo

要更改公開哪些端點,請使用以下技術特定的include和exclude屬性:

PropertyDefault
management.endpoints.jmx.exposure.exclude*
management.endpoints.jmx.exposure.include*
management.endpoints.web.exposure.exclude*
management.endpoints.web.exposure.includeinfo, health

include屬性列出了公開的端點的ID,exclude屬性列出了不應該公開的端點的ID?
exclude屬性優先于include屬性。包含和排除屬性都可以使用端點ID列表進行配置。

注意?
這里的優先級是指同一端點ID,同時出現在include屬性表和exclude屬性表里,exclude屬性優先于include屬性,即此端點沒有暴露

例如,要停止通過JMX公開所有端點并僅公開health和info端點,請使用以下屬性:

management.endpoints.jmx.exposure.include=health,info
  • 1

*可以用來選擇所有端點。例如,要通過HTTP公開除env和beans端點之外的所有內容,請使用以下屬性:

management.endpoints.web.exposure.include=* management.endpoints.web.exposure.exclude=env,beans
  • 1
  • 2

注意?
*在YAML中有特殊的含義,所以如果你想包含(或排除)所有的端點,一定要加引號,如下例所示:

management:endpoints:web:exposure:include: '*'
  • 1
  • 2
  • 3
  • 4
  • 5

如果您的應用程序對外公開,我們強烈建議您保護您的端點,方法見下文。?
如果您希望在暴露端點時實施您自己的策略,您可以注冊一個EndpointFilter?bean。

2.3 保護HTTP端點

您應該注意保護HTTP端點的方式與使用其他任何敏感網址的方式相同。如果存在Spring Security,則默認使用Spring Security的內容協商策略(content-negotiation strategy)保護端點。例如,如果您希望為HTTP端點配置自定義安全性,比方說只允許具有特定角色的用戶訪問它們,Spring Boot提供了一些方便的RequestMatcher對象,可以與Spring Security結合使用。?
一個典型的Spring Security配置可能看起來像下面的例子:

@Configuration public class ActuatorSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests() .anyRequest().hasRole("ENDPOINT_ADMIN") .and() .httpBasic(); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

上例使用EndpointRequest.toAnyEndpoint()將請求與所有端點進行匹配,然后確保所有端點都具有ENDPOINT_ADMIN角色。有關詳細信息,請參閱API文檔(HTML或PDF)。

如果您的應用程序部署在防火墻后面,您可能更喜歡所有的執行器端點都可以在無需驗證的情況下進行訪問。

您可以通過更改management.endpoints.web.exposure.include屬性來完成此操作,如下所示:

management.endpoints.web.exposure.include=*
  • 1

此外,如果存在Spring Security,則需要添加自定義安全配置,以允許對端點進行未經身份驗證的訪問,如以下示例所示:

@Configuration public class ActuatorSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests() .anyRequest().permitAll() } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.4 配置端點緩存時間

對于不帶任何參數的讀取操作,端點自動緩存對其響應。要配置端點緩存響應的時間,請使用cache.time-live屬性。以下示例將beans端點緩存的生存時間設置為10秒:

management.endpoint.beans.cache.time-to-live=10s
  • 1

注意?
在進行經過驗證的HTTP請求時,Principal將被視為端點的輸入,因此不會緩存響應。

2.5 端點的發現頁

“discovery page”添加了指向所有端點的鏈接。默認情況下,“discovery page”可通過/actuator訪問。?
需要注意的是,這里的/actuator指的是端點的基礎路徑,如果基礎路徑改變,發現頁訪問路徑會跟著改變.?
例如,如果基礎路徑是/manage,則發現頁面可從/ manage獲得?
但是,當基礎路徑設置為/時,禁用發現頁面以防止與其他映射發生沖突的可能性。?
基礎路徑的設置見下

2.6 端點的路徑

默認情況下,端點通過使用端點的ID在/actuator路徑下的HTTP上公開。例如,beans端點暴露在/actuator/beans下。如果要將端點映射到其他路徑,則可以使用management.endpoints.web.path-mapping屬性。另外,如果您想更改基本路徑,則可以使用management.endpoints.web.base-path。?
以下示例將/actuator/health重新映射到/healthcheck:

management.endpoints.web.base-path=/ management.endpoints.web.path-mapping.health=healthcheck
  • 1
  • 2

2.7 跨域支持

跨源資源共享(Cross-origin resource sharing,CORS)是W3C規范,允許您以靈活的方式指定授權哪種跨域請求。如果您使用Spring MVC或Spring WebFlux,則可以配置Actuator的Web端點來支持這些場景。

默認情況下,CORS支持處于禁用狀態,只有在設置了management.endpoints.web.cors.allowed-origins屬性后才能啟用。以下配置允許來自example.com域的GET和POST調用:

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

請參閱CorsEndpointProperties以獲取完整的選項列表。

2.8 實現自定義端點

如果添加用@Endpoint注解的@Bean,則任何使用@ReadOperation,@WriteOperation或@DeleteOperation注釋的方法都會自動通過JMX公開,并且也可以通過HTTP在Web應用程序中通過HTTP公開。也可以使用Jersey,Spring MVC或Spring WebFlux通過HTTP公開端點。

您還可以使用@JmxEndpoint或@WebEndpoint編寫技術特定的端點。這些端點僅限于各自的技術。例如,@WebEndpoint僅通過HTTP公開,而不通過JMX公開。

您可以使用@EndpointWebExtension和@EndpointJmxExtension編寫技術特定的擴展。這些注釋可讓您提供技術特定的操作,以增強現有端點。

最后,如果您需要訪問特定于Web框架的功能,則可以實現Servlet或Spring?@Controller和@RestController端點,但代價是它們不能通過JMX或使用其他Web框架提供。

2.8.1 接收輸入

端點上的操作通過參數接收輸入。?
當通過網絡公開時,這些參數的值取自URL的查詢參數和JSON請求主體。?
通過JMX公開時,參數將映射到MBean操作的參數。?
參數默認是必需的,可以通過使用@org.springframework.lang.Nullable注釋使其成為可選的。

為了允許輸入映射到操作方法的參數,實現端點的Java代碼應該用-parameters編譯,實現端點的Kotlin代碼應該用?-java-parameters編譯。?
如果您使用的是Spring Boot的Gradle插件,或者您正在使用Maven和spring-boot-starter-parent,則會自動發生。

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

2.8.2 自定義Web端點

對使用Jersey,Spring MVC或Spring WebFlux的@Endpoint,@WebEndpoint或@WebEndpointExtension操作通過HTTP自動公開。

  • Web端點請求謂詞?
    一個請求謂詞會自動為web暴露端點上的每個操作生成。

  • 路徑?
    謂詞的路徑由端點的ID和Web暴露端點的基本路徑決定。默認的基本路徑是/actuator。例如,具有IDsessions的端點將使用/ actuator / sessions作為謂詞中的路徑。?
    可以通過使用@Selector注釋操作方法的一個或多個參數來進一步定制路徑。這樣的參數作為路徑變量添加到路徑謂詞中。當調用端點操作時,該變量的值被傳遞給操作方法。

  • HTTP方法?
    謂詞的HTTP方法由操作類型決定,如下表所示:

    OperationHTTP method
    @ReadOperationGET
    @WriteOperationPOST
    @DeleteOperationDELETE
  • 消費

    • 對于使用請求體的@WriteOperation(POST),謂詞的consumes子句是application/vnd.spring-boot.actuator.v2+json, application/json。
    • 對于所有其他操作,消費條款是空的。
  • 生產?
    謂詞的生產條款可以通過@DeleteOperation,@ReadOperation和@WriteOperation注釋的produce屬性來確定。該屬性是可選的。如果未使用,則自動確定生產條款。

    • 如果操作方法返回void或Void,則produce子句為空。如果操作方法返回一個org.springframework.core.io.Resource,則生產條款是application/octet-stream。
    • 對于所有其他操作,生產條款是application/vnd.spring-boot.actuator.v2+json, application/json。
  • Web端點響應狀態?
    端點操作的默認響應狀態取決于操作類型(read,write或delete)以及操作返回的內容(如果有的話)。?
    • @ReadOperation返回一個值,響應狀態將為200(OK)。如果它沒有返回值,則響應狀態將為404(未找到)。
    • 如果@WriteOperation或@DeleteOperation返回一個值,則響應狀態將為200(OK)。如果它沒有返回值,則響應狀態將為204(無內容)。
    • 如果調用時缺少必需參數,或者使用無法轉換為所需類型的參數,則不會調用操作方法,響應狀態將為400(錯誤請求)。
  • Web端點范圍請求?
    HTTP范圍請求可用于請求部分HTTP資源。在使用Spring MVC或Spring Web Flux時,返回org.springframework.core.io.Resource的操作會自動支持范圍請求。使用Jersey時不支持范圍請求。

  • Web端點安全?
    對Web端點或基于Web的端點擴展的操作可以接收當前的java.security.Principal或org.springframework.boot.actuate.endpoint.SecurityContext作為方法參數。前者通常與@Nullable結合使用,為經過身份驗證的用戶和未經身份驗證的用戶提供不同的行為。后者通常用于使用isUserInRole(String)方法執行授權檢查。

2.8.3 Servlet端點

通過實現一個用@ServletEndpoint注解的類來實現Supplier<EndpointServlet>,Servlet可以作為端點公開。Servlet端點提供了與Servlet容器的更深層次的集成,但是具有可移植性。它們旨在用于將現有的Servlet作為端點公開。對于新的端點,只要有可能,應該首選@Endpoint和@WebEndpoint注釋。

2.8.4 控制器端點

@ControllerEndpoint和@RestControllerEndpoint可用于實現僅由Spring MVC或Spring WebFlux公開的端點。使用標準注釋Spring MVC和Spring WebFlux注釋(如@RequestMapping和@GetMapping)來映射方法,并將端點ID用作路徑的前綴。控制器端點提供了與Spring的Web框架的更深層次的集成,但代價是可移植性。只要有可能,應該首選@Endpoint和@WebEndpoint注釋。

2.9 健康信息

您可以使用健康信息來檢查正在運行的應用程序的狀態。當生產系統停機時,它經常被監控軟件用來提醒某人。health端點公開的信息取決于management.endpoint.health.show-details屬性,該屬性可以使用以下值之一進行配置:

NameDescription
never細節永遠不會顯示。
when-authorized詳細信息僅向授權用戶顯示。授權角色可以使用management.endpoint.health.roles進??行配置。
always詳細信息顯示給所有用戶。

默認值為never。?
當用戶處于一個或多個端點角色時,它被認為是被授權的。?
如果端點沒有配置角色(默認),則認為所有經過身份驗證的用戶均被授權。可以使用management.endpoint.health.roles屬性配置角色。

2.9.1 自動配置的HealthIndicators

在適當情況下,以下HealthIndicators可由Spring Boot自動配置:

NameDescription
CassandraHealthIndicator檢查Cassandra數據庫是否啟動
DiskSpaceHealthIndicator檢查磁盤空間是否不足。
DataSourceHealthIndicator檢查是否可以獲得與DataSource的連接。
ElasticsearchHealthIndicator檢查Elasticsearch集群是否啟動。
InfluxDbHealthIndicator檢查InfluxDB服務器是否啟動。
JmsHealthIndicator檢查JMS代理是否啟動。
MailHealthIndicator檢查郵件服務器是否啟動。
MongoHealthIndicator檢查Mongo數據庫是否啟動。
Neo4jHealthIndicator檢查Neo4j服務器是否啟動。
RabbitHealthIndicator檢查Rabbit服務器是否啟動。
RedisHealthIndicator檢查Redis服務器是否啟動。
SolrHealthIndicator檢查Solr服務器是否已啟動。

您可以通過設置management.health.defaults.enabled屬性來禁用它們。

2.9.2 編寫自定義HealthIndicators

要提供自定義健康信息,您可以注冊實現HealthIndicator接口的Spring bean。您需要提供health()方法的實現并返回Health響應。Health響應應包含一個狀態,并可以選擇包含要顯示的其他詳細信息。以下代碼顯示了一個示例HealthIndicator實現:

import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.stereotype.Component;@Component public class MyHealthIndicator implements HealthIndicator { @Override public Health health() { int errorCode = check(); // perform some specific health check if (errorCode != 0) { return Health.down().withDetail("Error Code", errorCode).build(); } return Health.up().build(); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

給定HealthIndicator的標識符是沒有HealthIndicator后綴的bean的名稱(如果存在)。在前面的示例中,健康信息在名為my的條目中可用。

例如,在上面的實例中,如果check()返回的結果是500,則health端點的信息為

{"status": "DOWN","details": { "my": { "status": "DOWN", "details": { "Error Code": 500 } } } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

注意:要先設置management.endpoint.health.show-details屬性使其可見.

除了Spring Boot的預定義狀態類型外,Health還可以返回代表新系統狀態的自定義狀態。在這種情況下,還需要提供HealthAggregator接口的自定義實現,或者必須使用management.health.status.order配置屬性來配置默認實現。

例如,假定您的一個HealthIndicator實例中正在使用代碼為FATAL的新狀態。要配置重要性順序,請將以下屬性添加到應用程序屬性中:

management.health.status.order=FATAL, DOWN, OUT_OF_SERVICE, UNKNOWN, UP
  • 1

響應中的HTTP狀態代碼反映整體健康狀況(例如,UP映射為200,而OUT_OF_SERVICE和DOWN映射為503)。如果您通過HTTP訪問健康端點,則可能還需要注冊自定義狀態映射。例如,以下屬性將FATAL映射為503(服務不可用):

management.health.status.http-mapping.FATAL=503
  • 1

如果你需要更多的控制,你可以定義你自己的HealthStatusHttpMapper?bean。

下表顯示了內置狀態的默認狀態映射:

StatusMapping
DOWN服務不可用 (503)
OUT_OF_SERVICE服務不可用 (503)
UP默認情況下沒有映射,所以http狀態是200
UNKNOWN默認情況下沒有映射,所以http狀態是200

2.9.3 反應性健康指標

對于反應式應用程序(例如使用Spring WebFlux的應用程序),ReactiveHealthIndicator提供了獲取應用程序運行狀況的非阻塞合同。與傳統的HealthIndicator類似,健康信息從ApplicationContext中定義的所有ReactiveHealthIndicatorbean中收集。在彈性調度器上包含并執行不檢查反應性API的常規HealthIndicator bean。

為了從反應式API提供定制的健康信息,您可以注冊實現ReactiveHealthIndicator接口的Spring bean。以下代碼顯示了一個示例ReactiveHealthIndicator實現:

@Component public class MyReactiveHealthIndicator implements ReactiveHealthIndicator { @Override public Mono<Health> health() { return doHealthCheck() //perform some specific health check that returns a Mono<Health> .onErrorResume(ex -> Mono.just(new Health.Builder().down(ex).build()))); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

要自動處理錯誤,請考慮從AbstractReactiveHealthIndicator進行擴展。

2.9.4 自動配置的ReactiveHealthIndicators

在適當的情況下,以下ReactiveHealthIndicators是由Spring Boot自動配置的:

NameDescription
MongoReactiveHealthIndicator檢查Mongo數據庫是否啟動。
RedisReactiveHealthIndicator檢查Redis服務器是否啟動。

必要時,反應性指標取代常規指標。而且,任何未顯式處理的HealthIndicator都是自動包裝的

2.10 應用信息

應用程序信息公開從ApplicationContext中定義的所有InfoContributor?beans收集的各種信息。 Spring Boot包含許多自動配置的InfoContributor?beans,您也可以編寫自己的。

2.10.1 自動配置的InfoContributors

適當情況下,以下InfoContributor beans由Spring Boot自動配置:

NameDescription
EnvironmentInfoContributor在infokey下顯示Environment中的任何key。
GitInfoContributor如果git.properties文件可用,則顯示git信息。
BuildInfoContributor如果META-INF/build-info.properties文件可用,則公開構建信息。

可以通過設置management.info.defaults.enabled屬性來禁用它們。

2.10.2 自定義應用信息

您可以通過設置info.*?Spring屬性來自定義info端點公開的數據。infokey下的所有Enviroment屬性都會自動公開。例如,您可以將以下設置添加到您的application.properties文件中:

info.app.encoding=UTF-8 info.app.java.source=1.8 info.app.java.target=1.8
  • 1
  • 2
  • 3

YAML文件對應設置為

info:app:encoding:UTF-8java.source:1.8 java.traget:1.8
  • 1
  • 2
  • 3
  • 4
  • 5

訪問info端口,結果為

{"app": "encoding:UTF-8 java.source:1.8 java.traget:1.8" }
  • 1
  • 2
  • 3

與其對這些值進行硬編碼,您還可以在構建時展開信息屬性。 假設你使用Maven,你可以重寫前面的例子,如下所示:

info.app.encoding=@project.build.sourceEncoding@ info.app.java.source=@java.version@ info.app.java.target=@java.version@
  • 1
  • 2
  • 3

2.10.3 Git提交信息

info端點的另一個有用特性是它能夠在構建項目時發布有關git源代碼庫狀態的信息。如果GitProperties?bean可用,則會顯示git.branch,git.commit.id和git.commit.time屬性。

如果git.properties文件在類路徑的根目錄中可用,則會自動配置GitProperties bean。有關更多詳細信息,請參閱“生成git信息”。

如果要顯示完整的git信息(即git.properties的完整內容),請使用management.info.git.mode屬性,如下所示:

management.info.git.mode=full
  • 1

2.10.4 構建信息

如果BuildProperties?bean可用,info端點還可以發布關于您的構建的信息。如果META-INF/build-info.properties文件在類路徑中可用,則會發生這種情況。

Maven和Gradle插件都可以生成該文件。有關更多詳細信息,請參閱“生成構建信息”。

2.10.5 編寫自定義InfoContributors

為了提供定制的應用程序信息,您可以注冊實現InfoContributor接口的Spring bean。 以下示例為單個值提供了一個example條目:

import java.util.Collections;import org.springframework.boot.actuate.info.Info; import org.springframework.boot.actuate.info.InfoContributor; import org.springframework.stereotype.Component;@Component public class ExampleInfoContributor implements InfoContributor { @Override public void contribute(Info.Builder builder) { builder.withDetail("example", Collections.singletonMap("key", "value")); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

如果您訪問info端點,則應該看到包含以下附加條目的響應:

{"example": {"key" : "value" } }
  • 1
  • 2
  • 3
  • 4
  • 5

3. 通過HTTP進行監控和管理

如果您正在開發Web應用程序,Spring Boot Actuator會自動配置所有已啟用的端點以通過HTTP進行公開。默認約定是使用以/actuator作為前綴的端點的ID作為URL路徑。例如,health被暴露為/actuator/health。

Actuator本身支持Spring MVC,Spring WebFlux和Jersey。

3.1 自定義管理端點路徑

有時候,自定義管理端點的前綴非常有用。例如,您的應用程序可能已經將/actuator用于其他目的。您可以使用management.endpoints.web.base-path屬性更改管理端點的前綴,如以下示例中所示:

management.endpoints.web.base-path=/manage
  • 1

前面的application.properties示例將端點從/actuator/{id}更改為/manage/{id}(例如/manage/info)。

除非管理端口已配置為使用不同的HTTP端口公開端點,否則management.endpoints.web.base-path與server.servlet.context-path相關。如果配置了management.server.port,則management.endpoints.web.base-path將與management.server.servlet.context-path相關。

3.2 自定義管理服務器端口

通過使用默認的HTTP端口公開管理端點是基于云的部署的明智選擇。但是,如果您的應用程序在您自己的數據中心內運行,則可能希望使用不同的HTTP端口來公開端點。您可以設置management.server.port屬性來更改HTTP端口,如以下示例所示:

management.server.port=8081
  • 1

3.3 配置管理專用SSL

配置為使用自定義端口時,管理服務器也可以使用各種management.server.ssl.*屬性配置自己的SSL。例如,通過這樣做,管理服務器可通過HTTP使用,而主應用程序使用HTTPS,如以下屬性設置所示:

server.port=8443 server.ssl.enabled=true server.ssl.key-store=classpath:store.jks server.ssl.key-password=secret management.server.port=8080 management.server.ssl.enabled=false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

或者,主服務器和管理服務器都可以使用SSL,但使用不同的密鑰存儲區,如下所示:

server.port=8443 server.ssl.enabled=true server.ssl.key-store=classpath:main.jks server.ssl.key-password=secret management.server.port=8080 management.server.ssl.enabled=true management.server.ssl.key-store=classpath:management.jks management.server.ssl.key-password=secret
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3.4 自定義管理服務器地址

您可以通過設置management.server.address屬性來自定義管理端點可用的地址。如果您只想在內部網絡或面向操作系統的網絡上收聽,或只收聽本地主機的連接,那么這樣做會很有用。

只有當端口與主服務器端口不同時,您才可以監聽其他地址。

以下示例application.properties不允許遠程管理連接:

management.server.port=8081 management.server.address=127.0.0.1
  • 1
  • 2

3.5 禁用HTTP端點

如果您不想通過HTTP公開端點,則可以將管理端口設置為-1,如以下示例所示:

management.server.port=-1

轉載于:https://www.cnblogs.com/davidwang456/articles/10273289.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Spring Boot 2.0官方文档之 Actuator的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。