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