在本部落格中,您將瞭解如何使用 Ostara 監控 Spring Boot 應用程式。Ostara 是一個桌面應用程式,用於監視和管理您的應用程式。
通常使用Spring Actuator、Prometheus 和 Grafana 來監控您的應用程式,在這篇文章中,您將瞭解使用 Spring Actuator 與Ostara結合的替代方法。Ostara 的設定要容易一些,因此它看起來是一個有效的替代方案。
先決條件是:
- Spring Boot 3基礎知識;
- 基本的Linux知識;
- 使用Java 17。
建立被測應用程式
首先,您需要建立一個可以監控的應用程式:加入Spring Web 和 Spring Boot Actuator兩個元件:
- Spring Web 將用於建立兩個虛擬 Rest 端點
- Spring Boot Actuator 將用於啟用監控端點。
在 pom 檔案中新增 git-commit-id-plugin 以生成構建資訊。此外,在 Spring-boot-maven-plugin 的執行中新增 build-info 目標,以便在構建過程中自動生成資訊。
<build> |
在 application.properties 中為執行器端點啟用完整的 git 資訊。
management.info.git.mode=full
新增一個帶有兩個虛擬端點的 Rest 控制器:
@RestController |
構建執行
$ mvn clean verify
$ java -jar target/myostaraplanet-0.0.1-SNAPSHOT.jar
驗證端點:
$ curl http://localhost:8080/endPoint1
Metrics for endPoint1
$ curl http://localhost:8080/endPoint2
Metrics for endPoint2
驗證 actuato端點:
$ curl http:<font>//localhost:8080/actuator | python3 -mjson.tool<i> |
新增安全性
基本的安全措施已經到位。不過,還不是很安全。讓我們為執行器端點新增授權。請注意,本段中的設定不適合生產使用。
在 pom 中新增 Spring Security 依賴關係。
<dependency> |
在 application.properties 檔案中新增憑證和角色。同樣,請勿將其用於生產目的。
spring.security.user.name=admin
spring.security.user.password=admin123
spring.security.user.roles=ADMIN
新增一個 WebSecurity 類,為執行器端點新增安全層。
@Configuration |
構建並啟動應用程式。驗證是否可以使用指定的憑據訪問執行器端點。
$ curl http:<font>//localhost:8080/actuator -u "admin:admin123" | python3 -mjson.tool<i> |
安裝 Ostara
訪問 Ostara 網站Ostara website,點選 "下載 Ostara "按鈕。選擇你使用的平臺(我使用的是 Linux 64 位),然後下載 Ostara-0.12.0.AppImage 檔案。雙擊該檔案,Ostara 就啟動了。就這樣!
監控應用程式
預設情況下,只啟用有限的一組執行器端點。Ostara 將透過這有限的一組端點執行,但因此可見的資訊較少。要檢視 Ostara 的全部功能,必須啟用所有執行器端點。再次提醒,在生產過程中要注意資訊的公開程度。
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
在繼續使用 Ostara 之前,建議禁用傳送使用統計資訊和錯誤資訊的功能。
導航至 "設定"(右上角),選擇 "隱私",然後禁用跟蹤選項。
在左側選單中選擇 "建立例項",然後填寫以下欄位:
- Actuator URL: http://localhost:8080/actuator
- Alias: MyFirstInstance
- Application Name: MyFirstApp
- Disable SSL Verification: Yes (for this demo, no SSL connection is used)
- Authentication Type: Basic
- Username and Password: the admin credentials
單擊 " Test Connection"按鈕。這會返回一個未經授權的錯誤,這似乎是 Ostara 的一個錯誤,因為憑證資訊是正確的。
忽略錯誤,點選儲存按鈕。
Ostara 可以連線到應用程式,儀表板會顯示一些基本狀態資訊。
Info
資訊頁面顯示您在 git-commit-id-plugin 幫助下獲得的資訊。
App Properties
應用程式屬性頁面顯示應用程式屬性。不過,從下面的截圖中可以看到,所有值都被遮蔽了。這是 Spring Boot 3 的預設行為。
這種行為可以在 Spring Boot 應用程式的 application.properties 中更改。您可以選擇 "always "(不推薦)、"when-authorized "或 "never"。
management.endpoint.configprops.show-values=when-authorized
management.endpoint.env.show-values=when-authorized
重新構建並啟動應用程式。數值可見。
Metrics
透過 "Metrics"頁面,您可以啟用預定義或自定義度量的通知。
開啟 http.server.requests 指標,然後單擊 Add Metric Notification.。
填寫以下內容,以便在 EndPoint1 被呼叫超過 10 次時建立通知,然後單擊儲存按鈕:
- Name: EndPoint 1 invoked > 10 times
- Type: Simple
- Tags: /endPoint1
- Operation: Greater Than
- Value: 10
Loggers
記錄儀頁面會顯示可用的記錄儀,您可以更改所需的記錄級別。當您需要分析錯誤時,這是一項非常有趣的功能。
單擊 com.mydeveloperplanet.myostaraplanet.MetricsController 的 DEBUG 按鈕。系統將顯示禁止此操作的訊息。
解決辦法是禁用執行器端點的 csrf 保護。
在 WebSecurity 類中新增以下一行。
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { |
或者
在 EndPoint1 程式碼中新增一些日誌語句,以驗證結果。
@RequestMapping(<font>"/endPoint1") |
構建並重新啟動應用程式。
再次為 MetricsController 啟用 DEBUG 日誌並呼叫 EndPoint1。日誌中將顯示 DEBUG 語句。
結論
Ostara 是監控 Spring Boot 應用程式的不錯選擇。安裝時只需下載一個檔案並啟動即可。Ostara 能為你提供清晰的視覺化檢視,並在出現問題時發出通知。它還能在例項上啟動執行緒剖析並下載堆轉儲。與 Grafana 相比,Grafana 的圖表比 Ostara 更花哨。不過,Ostara 不僅是一款視覺化工具,還能與應用程式進行互動,並在出現問題時接收通知。