在當今分散式系統和微服務的世界中,確保我們的應用程式可觀察和可監控與建構核心功能同樣重要。我們已經設定了關鍵功能,例如NGINX負載平衡器、速率限制器和斷路器,下一步是專注於可觀察性和監控。
在這篇文章中,我們將逐步介紹如何將Spring Boot Actuator、Prometheus 和Grafana 添加到我們的應用程式中,以建立強大的可觀察性堆。這將幫助我們可視化應用程式的運行狀況、追蹤效能指標並快速有效地解決問題。
可觀察性是指根據系統產生的資料來了解系統內部狀態的能力。可觀察性的三大支柱是:
透過專注於指標和日誌,我們可以建立強大的儀表板和警報,確保您的應用程式保持高效能和可靠性。
我們目前的應用程式架構已經擁有必要的元件:
然而,雖然這些工具提高了效能和可靠性,但它們並沒有告訴我們為什麼某些東西可能會失敗或我們的系統在負載下的表現如何。 Actuator、Prometheus 和 Grafana 等可觀察性工具將:
將這些依賴項新增至您的 pom.xml 檔案:
<dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-micrometer</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.14.1</version> </dependency>
更新 application.properties 的設定
resilience4j.circuitbreaker.metrics.enabled=true management.health.circuitbreakers.enabled=true management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus management.endpoint.health.show-details=always management.endpoint.health.access=unrestricted management.endpoint.prometheus.access=unrestricted management.prometheus.metrics.export.enabled=true
management.endpoints.web.exposure.include=健康、指標、斷路器、普羅米修斯
此行從執行器公開 URI,因此我們可以使用以下 URI:
在我們的 docker-compose.yaml 檔案中,我們為 prometheus 建立一個服務:
<dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-micrometer</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.14.1</version> </dependency>
在專案的根目錄下建立一個名為 prometheus 的資料夾,並在其中建立一個名為 prometheus.yaml 的檔案
resilience4j.circuitbreaker.metrics.enabled=true management.health.circuitbreakers.enabled=true management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus management.endpoint.health.show-details=always management.endpoint.health.access=unrestricted management.endpoint.prometheus.access=unrestricted management.prometheus.metrics.export.enabled=true
現在,當我們跑步時:
prometheus: image: prom/prometheus:latest ports: - "9090:9090" networks: - app_network volumes: - ./prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml - prometheus_data:/prometheus
prometheus 容器將啟動,並使用來自 URI 執行器的指標/來自我們的 spring-boot-servers 的指標。
我們可以在http://localhost:9090/看到一個儀表板,例如:
但是,這並不酷。我們想要查看一些圖表,為此我們使用 Grafana。
使用其他服務更新您的 docker compose 檔案:
global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'spring-boot-app' metrics_path: '/actuator/prometheus' static_configs: - targets: - 'spring-server-1:8080' - 'spring-server-2:8080' labels: environment: development application: spring-boot
現在您可以透過http://localhost:3000存取grafana儀表板
首先他們會詢問您的憑證,只需輸入 admin 作為使用者名稱和密碼。
在左側選單中,前往連接>;新增連接並蒐索 Prometheus
像這樣設定連線 URL:
點擊按鈕“儲存並測試”,如果一切正常,您可以開始選擇儀表板。
前往 Grafana Dashboards 並選擇適合您的儀表板。
為此,我選擇 Spring Boot Resilience4j Circuit Breaker (3.x)
如果一切正常,您將看到以下內容:
隨意瀏覽其他儀表板。
透過將Actuator、Prometheus 和Grafana 整合到我們的應用程式中,我們在建立高度可觀察的系統方面邁出了重要一步。透過適當的指標、日誌記錄和監控,您將能夠:
有了這些工具,我們不僅可以有效地監控我們的系統,還可以為未來自信地擴展奠定基礎。
以上是使用 Actuator、Prometheus 和 Grafana 建立現代應用程式的可觀測性和監控的詳細內容。更多資訊請關注PHP中文網其他相關文章!