Skip to main content

🌤️ 監控與管理

瓶頸

在微服務架構中,我們將原本龐大的單體系統拆分成多個提供不同服務的應用,雖然各個應用的內部邏輯因分解而得以簡化,但由於部署應用的數量成倍增長,系統的維護複雜度大大提升

運維人員面臨著應用數量的不斷增多,系統集群中出現故障的頻率也變得越來越高,雖然高可用機制的保護下,個別故障不會影響系統對外服務,但這些頻繁出現的故障需要被及時發現和處理才能長期保證系統處於健康可用狀態

為了能高效運維成倍增長的應用,傳統的運維方式明顯不合適,我們需要建立一套自動化的監控運維機制,其運行基礎是持續收集各個微服務應用的各項指標,然後根據這些基礎指標制定監控和預警規則,甚至實現一些自動化的運維操作

解決方案

選用 Spring Boot 與 Spring Cloud 提供的功能

我們在構建微服務時,選擇使用 Spring Boot 作為微服務框架

除了它強大的快速開發功能之外,還有一個特別的依賴模組 — spring-boot-starter-actuator,該模組能夠自動為 Spring Boot 應用提供一系列用於監控的端點,

同時在實現各個微服務組件時,Spring Cloud 對該模組進行了擴展,為原生端點增加了更多的指標和度量信息,例如: 在整合 Eureka 時,會為 /health 端點增加相關信息。對於不同的組件,還提供了更多有用的端點,比如 API 網關組件 Zuul 提供了 /routes 端點來返回路由信息

spring-boot-starter-actuator 的優勢

對於中小團隊來說,spring-boot-starter-actuator 模組的實現能夠顯著減少監控系統在采集應用指標時的開發工作量,

儘管它功能強大,並非萬能的,有時候我們可能需要對其進行一些簡單的擴展,以滿足系統個性化的監控需求