# Spring Boot Admin

### 第一部分 Spring Boot Admin 簡介

SpringBoot應用可以通過Actuator來暴露應用運行過程中的各項指標，Spring Boot Admin通過這些指標來監控SpringBoot應用，然後通過圖形化界面呈現出來。Spring Boot Admin不僅可以監控單體應用，還可以和Spring Cloud的注冊中心相結合來監控微服務應用。

對於我們來說，我們可以通過 Spring Boot Admin 瀏覽所有被監控的 Spring Boot 項目，詳細的 Health 信息、內存信息、JVM 系統和環境屬性、垃圾回收信息等。

Spring Boot Admin 可以提供應用的以下監控信息等：

* 監控應用運行過程中的概覽資訊
* 度量標信息，比如JVM、Tomcat及進程資訊
* 查看環境變數，比如系統屬性、系統環境變量以及應用配置資訊
* 查看所有創建的Bean資訊
* 查看應用中的所有配置資訊
* 查看應用運行日志資訊
* 查看HTTP跟蹤資訊

Spring Boot Admin 由兩種角色組成：一種是 Server 端；一種是 Client 端，即要被監控的應用。

## 第二部分 簡單實作

### Admin Server

引入Library

```
implementation group: 'de.codecentric', name: 'spring-boot-admin-server', version: '2.3.1'
```

啟用 Admin Server

```java
@EnableAdminServer
@SpringBootApplication
public class MonitorAdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(MonitorAdminApplication.class, args);
    }
}
```

application.yml 設置

```yaml
spring:
  security:
    user:
      name: admin
      password: 1qaz2wsx
  application:
    name: monitorAdmin

server:
  port: 80
```

### Client Server

引入Library

```
implementation group: 'de.codecentric', name: 'spring-boot-admin-starter-client', version: '2.3.1'
```

啟動程式

```java
@SpringBootApplication
@EnableScheduling
@EnableTransactionManagement
public class ManualRechargeApplicationRestApi {

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

    // 新版Default沒提供Http Trace 資料需自行複寫.
    @Bean
    public HttpTraceRepository httpTraceRepository() {
        return new InMemoryHttpTraceRepository();
    }
}
```

application.yml 設置

```yaml
spring:
  application:
    name: manualRecharge
  boot:
    admin:
      client:
        username: admin
        password: 1qaz2wsx
        url: http://localhost:80 #配置admin-server地址
        instance:
          service-base-url: http://localhost:8080
server:
  port: 8080

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
    shutdown:
      enabled: true
  health:
    redis:
      enabled: false
```

## 實作結果

![](/files/Zc0Jd9bXcDMpkffdDlX5)

參考網站：

* <https://cloud.tencent.com/developer/article/1752851>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xu-min-chang.gitbook.io/caster-develop-note/java/spring-boot/spring-boot-admin.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
