Spring Boot Admin自定義監控

Spring Boot Admin 是一款開源的監控平台,可以監控多個 Spring Boot 應用。除了系統提供的基本監控外,Spring Boot Admin 還提供了自定義監控的功能,可以幫助我們更好地把控我們的應用程序在各種情況下的性能表現。

一、自定義監控指標

Spring Boot Admin 自定義監控指標,可按照業務需求為應用添加自定義指標。添加自定義監控一般分為兩步:

第一步,在被監控的應用程序中,引入對應的依賴包,例如添加以下 Maven 依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.3.1</version>
</dependency>

第二步,在 Spring Boot Admin 控制台中添加對應的監控指標。默認情況下,Spring Boot Admin 可以監控應用程序的一些基礎指標,如內存使用情況、線程數、請求響應等信息。如果需要監控更多指標,可以在 Spring Boot Admin 的「Details」標籤下,通過添加擴展來實現。

以監控資料庫連接為例,我們可以通過添加自定義的 HealthIndicator 擴展來實現。具體步驟如下:

1.在需要被監控的應用程序中,添加以下 Maven 依賴:

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

2.為 HealthIndicator 創建一個類,實現 HealthIndicator 介面的 health() 方法:

package com.example.demo.health;

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;

import java.sql.Connection;
import java.sql.DriverManager;

@Component
public class DatabaseHealthIndicator implements HealthIndicator {

    @Override
    public Health health() {
        try {
            Connection connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/demo", "root", "123456");
            connection.close();
            return Health.up().build();
        } catch (Exception e) {
            return Health.down().withException(e).build();
        }
    }
}

3.在應用程序的配置文件中,添加以下配置:

management.endpoint.health.show-details=always

這個配置允許訪問 擴展信息 標籤頁面來查看我們自定義的監控項。

4.在 Spring Boot Admin 控制台的「Details」標籤下,添加新的擴展。點擊「Add extension」按鈕,在「Extension Name」欄位中輸入任意名稱,在「Type」欄位中選擇「Health」項,點擊「Add」按鈕,保存擴展。

二、自定義監控警報

Spring Boot Admin 還支持為監控指標設置警報,當指標超過特定閾值時,自動發送警報信息。

為了實現自定義警報,我們需要在 Spring Boot Admin 控制台中預先設置警報規則:

1.在「Alerts」標籤下,點擊「Add Alert」按鈕,創建新的警報規則。

2.在警報規則設置頁面中,可以設置警報的名稱、觸發警報的條件、警報的持續時間等。在觸發警報的條件中,可以選擇已有的監控指標,也可以添加自定義的監控指標。

3.當監控指標超過設定的閾值時,Spring Boot Admin 將會發送郵件通知管理員。可以在郵件模板中自定義郵件的內容和格式。

4.可以在「Alerts」標籤下查看所有警報規則的狀態和歷史記錄。

三、自定義監控視圖

除了默認的監控視圖之外,Spring Boot Admin 還支持自定義監控視圖。我們可以通過添加自定義模板和自定義頁面實現。

1.為應用程序添加自定義監控模板。在應用程序的配置文件中,添加以下配置:

spring.boot.admin.ui.extension-resource-locations=file:/path/to/custom/templates/

其中,/path/to/custom/templates/ 是自定義模板所在的目錄。在這個目錄下,可以添加自定義的 Thymeleaf 模板,覆蓋默認的模板。

2.為 Spring Boot Admin 添加自定義監控頁面。這需要我們重寫 Spring Boot Admin 的視圖。具體步驟如下:

Step 1. 先創建一個自定義頁面,比如 admin-custom-page.html:

<html>
    <head>
        <title>Custom view - {{application.name}}</title>
    </head>
    <body>
        <p>Hello, <b>{{application.name}}</b>!</p>
        <p>This is a custom view.</p>
        <p>You can add your own content here. <i>Happy monitoring!</i></p>
    </body>
</html>

Step 2. 在應用程序的配置文件中,添加以下配置:

spring.boot.admin.ui.index-templates.admin-custom-page=/admin-custom-page.html

這個配置允許我們在 Spring Boot Admin 的主頁面中添加一個指向我們自定義頁面的鏈接。

Step 3. 重新啟動 Spring Boot Admin,訪問 http://localhost:8080/#/applications 可以看到我們自定義的頁面鏈接已經添加到了主頁上。

需要注意的是,我們可以通過自定義頁面來展示自定義監控指標的結果,以及設置自定義的警報規則。自定義監控頁面中可以直接嵌入 JavaScript 代碼,用於實現更加複雜的前端交互效果。

四、自定義監控數據源

在 Spring Boot Admin 中,默認的監控數據源是內存。在實際生產環境中,我們可能需要使用資料庫等數據存儲方式來保存和管理監控數據。

Spring Boot Admin 內置了許多數據存儲方式,可以通過配置來切換使用不同的數據源。例如,我們可以使用 JDBC 資料庫來存儲監控數據:

Step 1. 添加 Spring Boot Admin JDBC 依賴:

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server-db</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>

Step 2. 在應用程序的配置文件中,添加以下配置:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring_boot_admin
spring.datasource.username=root
spring.datasource.password=123456
spring.boot.admin.export.db.jdbc.enabled=true
spring.boot.admin.export.db.jdbc.sql-schema=classpath:/schema.sql
spring.boot.admin.export.db.jdbc.sql-init=classpath:/data.sql

其中,spring.boot.admin.export.db.jdbc.enabled=true 表示啟用 JDBC 資料庫作為監控數據源;spring.boot.admin.export.db.jdbc.sql-schema 和 spring.boot.admin.export.db.jdbc.sql-init 分別表示初始化監控數據表結構和插入一些測試數據。

Step 3. 在應用程序的 schema.sql 中添加以下代碼:

CREATE TABLE IF NOT EXISTS `SPRING_BOOT_ADMIN_EVENT`  (
  `ID`          INTEGER(11)       NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `EVENT`       VARCHAR(255)      NOT NULL,
  `TIMESTAMP`   BIGINT(20)        NOT NULL,
  `APPLICATION` VARCHAR(255)      NOT NULL,
  `INSTANCE`    VARCHAR(255)      NOT NULL,
  `VERSION`     VARCHAR(255)      NOT NULL,
  `HOST`        VARCHAR(255),
  `ORIGIN`      VARCHAR(255),
  `DATA`        TEXT
);

Step 4. 在應用程序的 data.sql 中添加以下代碼:

INSERT INTO SPRING_BOOT_ADMIN_EVENT(EVENT, TIMESTAMP, APPLICATION, INSTANCE, VERSION, HOST, ORIGIN, DATA)
VALUES('test-event', UNIX_TIMESTAMP() * 1000, 'sample-app', 'localhost:8080', '1.0', 'localhost', 'http://localhost:8080', '{"Name": "TestEvent"}');

重啟 Spring Boot Admin,我們就可以使用 JDBC 資料庫作為監控數據源,從而更好地管理監控數據。

五、自定義監控策略

Spring Boot Admin 還支持自定義監控策略,可以根據實際需要更靈活地控制監控行為。例如,可以設置在指定時間段內不監控某個應用程序。

我們可以在應用程序的配置文件中,使用 Spring Boot Admin 的配置項來設置監控策略。具體的配置項和使用方式,請參考 Spring Boot Admin 官方文檔。

六、結語

本文介紹了 Spring Boot Admin 自定義監控的基本概念和操作流程,包括自定義監控指標、警報、視圖、數據源和策略。通過對 Spring Boot Admin 的深入理解和靈活應用,可以更好地實現監控、管理和優化 Spring Boot 應用程序的性能表現。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/254280.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-14 17:41
下一篇 2024-12-14 17:41

相關推薦

發表回復

登錄後才能評論