中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Admin 怎么在Spring Boot中使用

發布時間:2020-12-07 16:28:14 來源:億速云 閱讀:249 作者:Leah 欄目:編程語言

本篇文章為大家展示了Admin 怎么在Spring Boot中使用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一、前言

Spring Boot Admin 用于監控基于 Spring Boot 的應用。官方文檔在這里(v1.3.4):《Spring Boot Admin Reference Guide》

實踐的過程中,感覺這個 User Guide 結構上還是說的不太明白。所以我就大概寫一遍我的實踐過程與理解。

閱讀此文前提條件是:

  • 使用過 Maven。
  • 你跑過基于 Spring Boot 的 hello world 程序。
  • 第三節需要你會點 Spring Cloud 的 Eureka Server 配置。

二、在 Spring Boot 項目中配置

這種配置中,Spring Boot Admin 作為 Server,其他 Spring Boot 應用作為 Client,Client 把自身的信息“注冊”到 Server,我們就能在 Server 上看到“注冊”的 Spring Boot 應用的狀態信息了。

2.1、Server 端

新建一個項目

2.1.1、添加依賴

pom.xml

<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>spring-boot-admin-server</artifactId>
  <version>1.3.4</version>
</dependency>
<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>spring-boot-admin-server-ui</artifactId>
  <version>1.3.4</version>
</dependency>

2.1.2、開啟監控

添加 @EnableAdminServer 注解開啟監控

@Configuration
@EnableAutoConfiguration
@EnableAdminServer
public class SpringBootAdminApplication {
  public static void main(String[] args) {
    SpringApplication.run(SpringBootAdminApplication.class, args);
  }
}

這里未指定 Server 運行的端口,默認是 8080,如果要指定,則需要在 application.properties 文件中設置:
application.properties

server.port=8080

2.2、Client 端

2.2.1、添加依賴

pom.xml

<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>spring-boot-admin-starter-client</artifactId>
  <version>1.3.4</version>
</dependency>

這里的 spring-boot-admin-starter-client 會自動依賴 jolokia-core,jolokia是用于 JMX-bean 管理的。

2.2.2、觸發自動配置、指明 Server 注冊地址

application.properties

spring.boot.admin.url=http://localhost:8080

上面 3.1.2 中 Server 端我們使用默認的 8080 端口,所以這里聲明 Server 的地址為:http://localhost:8080

2.3、開始管理

至此,啟動 Server 端和 Client 端,在瀏覽器輸入 Server 的地址:http://localhost:8080 就能看到“注冊”進來的 Spring Boot 應用信息了。

2.4、顯示應用版本

為了在 Spring Boot Admin 的應用管理列表顯示被管理應用的版本號,你需要設置 info.version,例如使用 maven filtering:
application.properties

info.version=@project.version@

這里設置顯示的版本號為 Maven pom.xml 中的構建版本號。

2.5、JMX-bean管理

JMX-bean 管理需要使用第三方的 jolokia ,因為 spring-boot-admin-starter-client 會自動依賴 jolokia-core,所以這里不需要顯示依賴了,第三節的基于 Eureka 注冊發現的配置中,就需要顯示地依賴:

pom.xml

<dependency>
  <groupId>org.jolokia</groupId>
  <artifactId>jolokia-core</artifactId>
</dependency>

2.6、Loglevel 管理

當前日志級別管理僅限 Logback,通過 JMX 實現,所以需要依賴 jolokia 。同時,還需要配置 Logback 的 JMXConfigurator:
logback.xml

<configuration>
  <include resource="org/springframework/boot/logging/logback/base.xml"/>
  <jmxConfigurator/>
</configuration>

這個 logback.xml 放在與 application.properties 同級的目錄就可以了,如果不配置 Logback,那么 Spring Boot Admin 就無法管理應用的日志級別。

2.7、Server 端監控自己

以上的配置,基本就可以很好工作了。

但是有一個問題,我們沒有監控作為 Server 端的 Spring Boot Admin 自身。如果要監控到 Server 自己,把 Server 端也當作是 Client 一樣來配置就可以實現了:把 2.2.1、2.2.2、2.4、2.6 的步驟在 Server 端也配置一遍。

三、在 Spring Cloud 項目的 Eureka 中配置

這里示例的 Spring Cloud 項目是使用 Eureka 來做注冊/發現的,官方 Github 示例里有基于 Consul 和 Zookeper 的配置。

配置好之后,Spring Boot Admin 就可以管理所有注冊到 Eureka Server 的應用了,包括 Spring Boot Admin 自己(因為自己也會注冊到 Eureka Server)。

3.1、一個簡單的 Eureka Server

關于 Eureka Server 這里不做詳細介紹,只列一下配置經過:

pom.xml

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

Eureka Server 啟動類

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

  public static void main(String[] args) {
    SpringApplication.run(EurekaServerApplication.class, args);
  }
}

application.properties

spring.application.name=eureka-server
server.port=8761

在 application.properties 同級目錄下新建 bootstrap.properties 文件: bootstrap.properties

eureka.instance.hostname=localhost
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

此文件作用與 application.properties 幾乎樣,只是但是作用在 application context 啟動時期。原話是:like application.properties but for the bootstrap phase of an application context 。

以上配置表明,我們的 Eureka Server 運行在 8761 端口。服務注冊地址是:http://localhost:8761/eureka/

3.2、Server 端

官方示例:spring-boot-admin-sample-eureka

3.2.1、添加 spring-cloud-starter-eureka 依賴

pom.xml

<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>spring-boot-admin-server</artifactId>
  <version>1.3.4</version>
</dependency>
<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>spring-boot-admin-server-ui</artifactId>
  <version>1.3.4</version>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

3.2.2、添加 @EnableDiscoveryClient 開啟發現

@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableAdminServer
public class SpringBootAdminApplication {
  public static void main(String[] args) {
    SpringApplication.run(SpringBootAdminApplication.class, args);
  }
}

3.2.3、指明去哪注冊

application.properties

eureka.instance.client.serviceUrl.defaultZone: http://localhost:8761/eureka/

也就是我們在 3.1 中配置的 Eureka Server 服務地址。

這個配置我測試時并不成功,改為 eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/ 才可以,不知為何。

3.2.4、官方未說明的

3.2.1 ~ 3.2.3 的配置,會把 Server 注冊到 Eureka Server,也就是說 Spring Boot Admin 也可以管理自身,但現在的 Server 配置還不全面(比如自身還缺的配置有:版本信息、 JMX 管理和 Loglevel 管理)。加上以下配置: application.properties

info.version=@project.version@

pom.xml

<dependency>
  <groupId>org.jolokia</groupId>
  <artifactId>jolokia-core</artifactId>
</dependency>

logback.xml

<configuration>
  <include resource="org/springframework/boot/logging/logback/base.xml"/>
  <jmxConfigurator/>
</configuration>

3.3、Client 端

Client 端的配置主要是把自己注冊到 Eureka Server 中就可以被 Spring Boot Admin 管理了,免去了手工配置 Spring Boot Admin 服務地址的操作(即 2.2.2 節操作)。

3.3.1、依賴

pom.xml

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

注意要添加 spring-boot-starter-actuator 依賴,因為獲取應用信息是通過 actuator 中的相關 endpoints 獲取的。

之所以 Server 端不需要添加此依賴,是因為 spring-boot-admin-server 依賴于 spring-boot-admin-starter-client ,而 spring-boot-admin-starter-client 依賴于 spring-boot-starter-actuator 。

3.3.2、啟動類

@SpringBootApplication
@EnableEurekaClient
public class ClientEurekaSampleApplication {
  public static void main(String[] args) {
    SpringApplication.run(ClientEurekaSampleApplication.class, args);
  }
}

添加 @EnableDiscoveryClient 或 @EnableEurekaClient 注解到啟動類上,將自己注冊到 Erueka Server。

3.3.3、指明去哪注冊

bootstrap.properties

eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/

3.3.4、其他項配置

application.properties

info.version=@project.version@

logback.xml

<configuration>
  <include resource="org/springframework/boot/logging/logback/base.xml"/>
  <jmxConfigurator/>
</configuration>

pom.xml

<dependency>
  <groupId>org.jolokia</groupId>
  <artifactId>jolokia-core</artifactId>
</dependency>

四、通知

官方提供好幾種通知方式,這里貼一下郵件通知的配置,其他 Pagerduty、Hipchat 、Slack 和 Reminder 的通知配置請參見官方文檔。

使用 spring-boot-starter-mail 依賴配置 JavaMailSender

pom.xml

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

application.properties

spring.mail.host=smtp.example.com
spring.boot.admin.notify.mail.to=admin@example.com

表格:郵件配置選項

Property nameDescriptionDefault value中文說明
spring.boot.admin.notify.mail.enabledEnable mail notificationstrue默認啟用
spring.boot.admin.notify.mail.ignore-changesComma-delimited list of status changes to be ignored. Format: “:”. Wildcards allowed.“UNKNOWN:UP”需要忽略的狀態改變通知,逗號分隔
spring.boot.admin.notify.mail.toComma-delimited list of mail recipients“root@localhost”接收通知的郵箱地址,逗號分隔
spring.boot.admin.notify.mail.ccComma-delimited list of carbon-copy recipients抄送
spring.boot.admin.notify.mail.fromMail sender發送人
spring.boot.admin.notify.mail.subjectMail subject. SpEL-expressions are supported“#{application.name} (#{application.id}) is #{to.status}”主題
spring.boot.admin.notify.mail.textMail body. SpEL-expressions are supported“#{application.name} (#{application.id})\nstatus changed from #{from.status} to #{to.status}\n\n#{application.healthUrl}”內容

五、附:Spring Boot Admin Server 配置說明

表格:Spring Boot Admin Server 配置選項

Property nameDescriptionDefault value中文說明
spring.boot.admin.context-pathThe context-path prefixes the path where the Admin Server's statics assets and API should be served. Relative to the Dispatcher-Servlet.Admin Server 保留的靜態訪問和API的前綴(當你在業務應用中使用而不是單獨使用時就很有必要了)
spring.boot.admin.monitor.periodTime interval in ms to update the status of applications with expired status-informations.10.000更新應用信息的頻率,單位毫秒
spring.boot.admin.monitor.status-lifetimeLifetime of application statuses in ms. The applications /health-endpoint will not be queried until the lifetime has expired.10.000被監控的應用信息的過期時間,單位毫秒

5.1、Spring Cloud 對自動發現的支持

來自被發現的應用的狀態信息是經過 ServiceInstanceConverter 轉換過的,自動配置時,使用了 Spring Boot Admin 自帶的 Eureka 轉換實現。你也可以實現相關接口并并添加到上下文以替換默認的。

表格:注冊發現配置選項

Property nameDescriptionDefault value中文說明
spring.boot.admin.discovery.enabledEnables the DiscoveryClient-support for the admin server.true默認開啟
spring.boot.admin.discovery.converter.management-context-pathWill be appended to the service-url of the discovered service when the managment-url is converted by the DefaultServiceInstanceConverter.
spring.boot.admin.discovery.converter.health-endpointWill be appended to the management-url of the discovered service when the health-url is converted by the DefaultServiceInstanceConverter.“health”
spring.boot.admin.discovery.ignored-servicesThis services will be ignored when using discovery and not registered as application.

六、附:Spring Boot Admin Client 配置說明

Spring Boot Admin Client 注冊到 Spring Boot Admin Server,Client 定期地發送 Http Post 到 admin 提供自己的應用信息。如果需要管理 loglevels 或 JMX-beans ,則要在依賴中添加 Jolokia ,使得 JMX-beans 也可以通過 http 訪問。

表格:Spring Boot Admin Client配置選項

Property nameDescriptionDefault value中文說明
spring.boot.admin.client.enabledEnables the Spring Boot Admin Client.true默認開啟
spring.boot.admin.urlList of URLs of the Spring Boot Admin server to register at. This triggers the AutoConfiguration. Mandatory.admin server 的地址列表,此設置會觸發自動配置,必須
spring.boot.admin.api-pathHttp-path of registration endpoint at your admin server.“api/applications”注冊到 admin server 端點的 Http-path
spring.boot.admin.username spring.boot.admin.passwordUsername and password for http-basic authentication. If set the registration uses http-basic-authentication when registering at the admin server.注冊到 admin server 的賬號密碼
spring.boot.admin.periodInterval for repeating the registration (in ms).10.000重試注冊的間隔時間
spring.boot.admin.auto-registrationIf set to true the periodic task to register the application is automatically scheduled after the application is ready.true應用啟動后自動執行周期性的注冊任務
spring.boot.admin.auto-deregistrationSwitch to enable auto-deregistration at Spring Boot Admin server when context is closed.false當應用關閉時,自動取消注冊
spring.boot.admin.client.health-urlClient-health-url to register with. Can be overridden in case the reachable URL is different (e.g. Docker). Must be unique in registry.Guessed based on management-url and endpoints.health.id.
spring.boot.admin.client.management-urlClient-management-url to register with. Can be overridden in case the reachable url is different (e.g. Docker).Guessed based on service-url, server.servlet-path, management.port and management.context-path.
spring.boot.admin.client.service-urlClient-service-url to register with. Can be overridden in case the reachable url is different (e.g. Docker).Guessed based on hostname, server.port and server.context-path.
spring.boot.admin.client.nameName to register with.${spring.application.name} if set, “spring-boot-application” otherwise.注冊時的名字
spring.boot.admin.client.prefer-ipUse the ip-address rather then the hostname in the guessed urls. If server.address / management.address is set, it get used. Otherwise the IP address returned from InetAddress.getLocalHost() gets used.false

七、問答

這部分我也啰嗦一下翻譯出來。

我可以把 spring-boot-admin 添加到我的業務應用中嗎?

答:可以,但不應該這么做。你可以設置 spring.boot.admin.context-path 來改變 admin server 保留的 UI 和 REST-API 的訪問,取決于你的應用復雜性,你可能會陷入困境。另一方面,當你的應用掛掉后,你的監控也一起掛掉,那么要監控有什么用呢?

該怎么自定義 UI ?

答:修改 UI 你僅可以復制并修改 spring-boot-admin-ui,并添加你自己的模塊到 classpath 中。

上述內容就是Admin 怎么在Spring Boot中使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

城步| 湘潭县| 辽宁省| 嘉祥县| 白朗县| 丁青县| 大关县| 明光市| 景东| 襄樊市| 朝阳市| 彩票| 古蔺县| 大宁县| 南澳县| 沧州市| 绥滨县| 三明市| 武陟县| 从江县| 特克斯县| 溧阳市| 尉氏县| 怀化市| 屯昌县| 庆城县| 凤翔县| 屏东市| 白银市| 瑞丽市| 新兴县| 漳平市| 太仆寺旗| 大名县| 临夏县| 梁河县| 芜湖市| 宁武县| 保靖县| 正镶白旗| 桂平市|