37.再談Spring Boot Actuator


spring Boot包含許多其他功能,可幫助您在應用程序投入生產時監控和管理它們。 您可以選擇使用HTTP端點,JMX甚至遠程shell(SSH或Telnet)來管理和監視應用程序。 審計,運行狀況和指標收集可以自動應用於您的應用程序.Actuator HTTP端點僅適用於基於Spring MVC的應用程序。 特別是,除非你啟用Spring MVC,否則它不適用於Jersey。

spring-boot-actuator提供了所有投入生產時監控和管理的功能
Maven項目中增加actuator

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

 

actuator允許通過端點訪問與程序進行交互。 Spring Boot包含許多內置端點,您也可以添加自己的端點。 例如,健康端點提供基本的應用程序健康信息。公開端點的方式取決於您選擇的技術類型。 大多數應用程序選擇HTTP監視,其中端點的ID映射到URL.

 

 SpringMvc還提供了以下額外的端點

根據端點的暴露方式,敏感屬性可用作安全提示。 例如,敏感端點在通過HTTP訪問時需要用戶名/密碼(如果未啟用Web安全性,則只需禁用)

通過HTTP監控和管理

如果您正在開發Spring MVC應用程序,Spring Boot Actuator將自動配置所有已啟用的端點以通過HTTP公開。 默認約定是使用端點的id作為URL路徑。 例如,健康端點暴露的URL  為/health。

訪問敏感端點

默認情況下,所有敏感HTTP端點都受到保護,以便只有具有ACTUATOR角色的用戶才能訪問它們。 使用標准HttpServletRequest.isUserInRole方法強制執行安全性.

如果想配置其他角色取代ACTUATOR,使用management.security.roles進行屬性設置。

如果要在防火牆后面部署應用程序,您可能希望無需身份驗證即可訪問所有Actuator端點。 您可以通過更改management.security.enabled屬性來執行此操作:

management.security.enabled=false

 

如果您要公開部署應用程序,則可能需要添加“Spring Security”來處理用戶身份驗證。 添加“Spring Security”時,默認情況下,“基本”身份驗證將與用戶名用戶和生成的密碼一起使用(在應用程序啟動時打印在控制台上)。您可以使用Spring屬性更改用戶名和密碼,以及更改訪問端點所需的安全角色。

如以下配置:

#ACTUATOR權限配置
#默認是沒有權限控制的,
#以下配置權限認證,只有當用戶名是admin且密碼為123456,且擁有SUPERADMIN角色是才能訪問sentitive #default列為true的端點 
#對於密碼,生產上可以配置密文
management.security.enabled=true
security.user.name=admin
security.user.password=123456 
management.security.roles=SUPERADMIN

如果您的應用程序具有自定義安全配置,並且您希望無需身份驗證即可訪問所有Actuator端點,則需要在安全配置中明確配置該端點。 除此之外,您還需要將management.security.enabled屬性更改為false。

自定義管理端點路徑

有時,將所有管理端點分組到單個路徑中非常有用。 例如,您的應用程序可能已將/ info用於其他目的。 您可以使用management.contextpath屬性為管理端點設置前綴:

management.context-path=/manage

 

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

您還可以更改端點的“id”(endpoints.{name} .id),然后更改MVC端點的默認資源路徑。 合法端點ID僅由字母數字字符組成(因為它們可以在許多地方公開,包括禁止使用特殊字符的JMX對象名稱)。 可以通過配置單獨更改MVC路徑endpoints.{name} .path,並且沒有對這些值進行驗證(因此您可以使用URL路徑中合法的任何內容)。 例如,要將/ health端點的位置更改為/ ping / me,您可以設置endpoints.health.path = / ping / me。

自定義管理服務器端口

使用默認HTTP端口公開管理端點是基於雲部署的明智選擇。 但是,如果您的應用程序在您自己的數據中心內運行,您可能更喜歡使用不同的HTTP端口公開端點。

management.port屬性可用於更改HTTP端口。

management.port=8081

 

禁用HTTP端點

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

management.port=-1

 

 微信公眾號

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM