首頁 > Java > java教程 > 使用 Actuator、Prometheus 和 Grafana 建立現代應用程式的可觀測性和監控

使用 Actuator、Prometheus 和 Grafana 建立現代應用程式的可觀測性和監控

Linda Hamilton
發布: 2025-01-05 06:15:42
原創
684 人瀏覽過

在當今分散式系統和微服務的世界中,確保我們的應用程式可觀察和可監控與建構核心功能同樣重要。我們已經設定了關鍵功能,例如NGINX負載平衡器速率限制器斷路器,下一步是專注於可觀察性和監控

在這篇文章中,我們將逐步介紹如何將Spring Boot ActuatorPrometheusGrafana 添加到我們的應用程式中,以建立強大的可觀察性堆。這將幫助我們可視化應用程式的運行狀況、追蹤效能指標並快速有效地解決問題。


什麼是可觀察性?

可觀察性是指根據系統產生的資料來了解系統內部狀態的能力。可觀察性的三大支柱是:

  1. 指標:可量化的資料點(例如請求率、記憶體使用率、CPU 使用率)。
  2. 日誌:事件記錄(例如錯誤、警告或業務事件)。
  3. 痕跡:在請求流經多個服務時追蹤請求。

透過專注於指標和日誌,我們可以建立強大的儀表板和警報,確保您的應用程式保持高效能和可靠性。


為什麼可觀測性對我們的應用程式很重要

我們目前的應用程式架構已經擁有必要的元件:

  • NGINX 負載平衡器:跨伺服器分配流量。
  • 速率限制器:透過限制請求數量來防止過載。
  • 斷路器:透過停止對失敗服務的呼叫來確保復原能力。

然而,雖然這些工具提高了效能和可靠性,但它們並沒有告訴我們為什麼某些東西可能會失敗或我們的系統在負載下的表現如何。 ActuatorPrometheusGrafana 等可觀察性工具將:

  • 追蹤即時指標應用程式運作狀況和效能。
  • 幫助可視化趨勢和潛在瓶頸。
  • 當指標超過關鍵閾值時觸發警報。

可觀察性堆疊

將這些依賴項新增至您的 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:

  • 執行器/
  • 執行器/健康,
  • 執行器/指標,
  • 執行器/斷路器,
  • 執行器/普羅米修斯

將 prometheus 與 docker 一起使用

在我們的 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/看到一個儀表板,例如:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

普羅米修斯的儀表板

但是,這並不酷。我們想要查看一些圖表,為此我們使用 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:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

在 Grafana 上配置 Prometheus

點擊按鈕“儲存並測試”,如果一切正常,您可以開始選擇儀表板。

儀表板

前往 Grafana Dashboards 並選擇適合您的儀表板。

為此,我選擇 Spring Boot Resilience4j Circuit Breaker (3.x)

如果一切正常,您將看到以下內容:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

斷路器圖

隨意瀏覽其他儀表板。


最後的話

透過將ActuatorPrometheusGrafana 整合到我們的應用程式中,我們在建立高度可觀察的系統方面邁出了重要一步。透過適當的指標、日誌記錄和監控,您將能夠:

  • 全面了解您的應用程式和基礎架構。
  • 主動偵測並解決問題。
  • 最佳化效能和可靠性。

有了這些工具,我們不僅可以有效地監控我們的系統,還可以為未來自信地擴展奠定基礎。


?參考

  • Grafana 文件
  • 普羅米修斯文件

?專案庫

  • Github 上的專案儲存庫

?跟我說話

  • 領英
  • Github
  • 投資組合

以上是使用 Actuator、Prometheus 和 Grafana 建立現代應用程式的可觀測性和監控的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板