欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot整合Prometheus如何實現(xiàn)資源監(jiān)控

 更新時間:2024年12月12日 10:55:34   作者:潘多編程  
本文介紹了如何使用Prometheus監(jiān)控SpringBoot應(yīng)用,Prometheus是一個開源的監(jiān)控和告警工具,SpringBootActuator提供了監(jiān)控和管理SpringBoot應(yīng)用的工具,通過添加依賴、配置Actuator和Prometheus,可以實現(xiàn)對SpringBoot應(yīng)用的實時監(jiān)控

引言

在微服務(wù)架構(gòu)流行的今天,服務(wù)的監(jiān)控和管理變得尤為重要。Prometheus 作為一個開源的監(jiān)控和告警工具,以其強大的數(shù)據(jù)采集、存儲和查詢能力,受到了眾多開發(fā)者的青睞。

Spring Boot 作為 Java 領(lǐng)域快速構(gòu)建微服務(wù)的框架,與 Prometheus 的結(jié)合可以實現(xiàn)對 Spring Boot 應(yīng)用的實時監(jiān)控。本文將介紹如何使用 Prometheus 監(jiān)控 Spring Boot 應(yīng)用。

Prometheus 簡介

Prometheus 是一個開源的系統(tǒng)監(jiān)控和警報工具包,它通過采集和存儲指標(biāo)(metrics),提供了強大的數(shù)據(jù)查詢語言,可以幫助我們分析和理解應(yīng)用程序的行為。

Prometheus 的核心組件是 Prometheus Server,它負(fù)責(zé)采集監(jiān)控指標(biāo)并提供查詢接口。

Spring Boot Actuator

Spring Boot Actuator 是 Spring Boot 提供的一系列用于監(jiān)控和管理 Spring Boot 應(yīng)用的工具。

它提供了許多端點(endpoints),例如 /health、/info、/metrics 等,這些端點可以公開應(yīng)用的內(nèi)部信息,如健康狀態(tài)、配置信息和度量指標(biāo)。

集成 Prometheus 和 Spring Boot

要將 Prometheus 與 Spring Boot 應(yīng)用集成,

我們需要執(zhí)行以下步驟:

添加依賴

首先,將 Spring Boot Actuator 和 Micrometer Prometheus Registry 添加到項目的依賴中。

Actuator 提供了一系列內(nèi)置端點,用于顯示運行應(yīng)用的性能信息,如健康狀況、指標(biāo)等。

Micrometer Prometheus registry 會將這些指標(biāo)格式化為 Prometheus 可讀格式。

  • xml
<dependencies>
    <!-- Spring Boot Actuator -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <version>2.7.15</version>
    </dependency>
    <!-- Micrometer Prometheus Registry -->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
        <version>1.9.14</version>
    </dependency>
</dependencies>

配置 Actuator

在 application.yml 或 application.properties 文件中配置 Actuator 以暴露 Prometheus 端點。

例如,在 application.yml 中:

  • yaml
management:
  endpoints:
    web:
      exposure:
        include: '*'
    metrics:
      export:
        prometheus:
          enabled: true
  endpoints:
    web:
      base-path: "/status" # 將/actuator/xxx修改為/status/xxx,防止被猜到
      server:
        request:
          metric-name: "application:request" # 自定義接口指標(biāo)名
      client:
        request:
          metric-name: "application:client_request" # 自定義http客戶端指標(biāo)名
  server:
    port: 10111 # 指定端口,默認(rèn)跟server.port一樣,可以防止被猜到

配置 Prometheus

下載并運行 Prometheus Server,然后從 Prometheus 官網(wǎng)或 GitHub 倉庫獲取適用于您操作系統(tǒng)的版本。

啟動 Prometheus Server 后,需要修改其配置文件 prometheus.yml,以便添加 Spring Boot 應(yīng)用作為監(jiān)控目標(biāo)。

  • yaml
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: 'prometheusapp'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['localhost:8080']

監(jiān)控落地

基于 Prometheus + Grafana 的監(jiān)控落地,包括安裝 Prometheus + Grafana、導(dǎo)入依賴、配置 Prometheus 拉取數(shù)據(jù)以及配置 Grafana 監(jiān)控面板。

通過上述步驟,我們可以成功地將 Prometheus 與 Spring Boot 應(yīng)用集成,實現(xiàn)對應(yīng)用的實時監(jiān)控。

監(jiān)控結(jié)果與可觀察的指標(biāo)

在Spring Boot應(yīng)用中整合Prometheus后,我們可以監(jiān)控到一系列關(guān)鍵的性能指標(biāo),這些指標(biāo)對于理解應(yīng)用的行為和健康狀況至關(guān)重要。

以下是一些主要的監(jiān)控結(jié)果和可觀察的指標(biāo):

系統(tǒng)和JVM指標(biāo)

  • CPU使用率:監(jiān)控系統(tǒng)CPU的使用情況,可以通過PromQL查詢rate(process_cpu_seconds_total[5m])來獲取。
  • 內(nèi)存使用情況:包括堆內(nèi)存和非堆內(nèi)存的使用情況,可以通過jvm_memory_used_bytes等指標(biāo)來監(jiān)控。
  • 垃圾回收(GC):監(jiān)控JVM的垃圾回收情況,包括GC次數(shù)和耗時,可以通過jvm_gc_collection_seconds_sum等指標(biāo)來監(jiān)控。

應(yīng)用性能指標(biāo)

  • 請求處理時間:監(jiān)控接口的響應(yīng)時間,可以通過http_server_requests_seconds等指標(biāo)來獲取。
  • 請求量:監(jiān)控接口的請求次數(shù),可以通過http_server_requests_total等指標(biāo)來監(jiān)控。
  • 錯誤率:監(jiān)控接口的錯誤請求次數(shù),可以通過http_server_requests_seconds_count等指標(biāo)來監(jiān)控。

業(yè)務(wù)指標(biāo)

  • 訂單總額:模擬訂單系統(tǒng)的實時訂單總額,可以通過自定義指標(biāo)order_amount_sum來監(jiān)控。
  • 下單失敗率:監(jiān)控10分鐘內(nèi)的下單失敗率,可以通過自定義指標(biāo)來實現(xiàn)監(jiān)控。
  • 請求失敗數(shù):監(jiān)控請求失敗的次數(shù),可以通過自定義指標(biāo)來實現(xiàn)監(jiān)控。

容器和部署指標(biāo)

  • 容器啟動時間:監(jiān)控容器的啟動時間,可以通過自定義腳本和Prometheus的pushgateway來實現(xiàn)。
  • 容器運行時指標(biāo):監(jiān)控容器的運行時指標(biāo),如資源使用情況等。

自定義指標(biāo)

  • 接口調(diào)用次數(shù)和耗時:通過自定義指標(biāo)來監(jiān)控特定接口的調(diào)用次數(shù)和耗時,可以通過method_rt等指標(biāo)來監(jiān)控。
  • 訂單請求次數(shù):通過自定義指標(biāo)metrics_request_count來監(jiān)控訂單請求的次數(shù)。

通過這些指標(biāo),我們可以對Spring Boot應(yīng)用的性能和健康狀況有一個全面的了解。

這些數(shù)據(jù)不僅可以幫助我們及時發(fā)現(xiàn)和解決問題,還可以用于性能優(yōu)化和故障排查。

通過Grafana等可視化工具,我們可以將這些指標(biāo)以圖表的形式展示出來,使得監(jiān)控結(jié)果更加直觀和易于理解。

如何通過Prometheus監(jiān)控分布式系統(tǒng)的指標(biāo)?

要通過Prometheus監(jiān)控分布式系統(tǒng)的指標(biāo),可以遵循以下步驟和最佳實踐:

選擇合適的監(jiān)控指標(biāo)

根據(jù)Google的分布式監(jiān)控經(jīng)驗,推薦的四個黃金指標(biāo)包括[1]:

  • 延遲:服務(wù)請求的時間,反映用戶體驗和系統(tǒng)核心性能。
  • 通訊量:監(jiān)控當(dāng)前系統(tǒng)的流量,用于衡量服務(wù)的容量需求。
  • 錯誤:監(jiān)控當(dāng)前系統(tǒng)所有發(fā)生的錯誤請求,衡量當(dāng)前系統(tǒng)錯誤發(fā)生的速率。
  • 飽和度:衡量當(dāng)前服務(wù)的飽和度,主要強調(diào)最能影響服務(wù)狀態(tài)的受限制的資源,如內(nèi)存狀態(tài)。

使用Exporter收集數(shù)據(jù)

Prometheus通過Exporter來收集分布式系統(tǒng)中的數(shù)據(jù)。常見的Exporter包括[11]:

  • NodeExporter:收集主機的CPU、內(nèi)存、磁盤等信息。
  • 其他Exporter:根據(jù)需要監(jiān)控的具體服務(wù)或組件,可能需要使用特定的Exporter。

配置Prometheus

配置Prometheus的prometheus.yml文件,定義如何拉取不同Exporter的數(shù)據(jù)[11]:

  • yaml
scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:8080']

這將配置Prometheus從NodeExporter的:8080端口拉取數(shù)據(jù)。

多集群監(jiān)控方案

在分布式云場景下,可以采用TMP+TDCC方案,通過在中心賬號下創(chuàng)建TMP監(jiān)控實例,并在該賬號下開啟TDCC HUB集群,將其他賬號下的集群統(tǒng)一注冊到TDCC HUB集群中,實現(xiàn)一套監(jiān)控系統(tǒng)采集所有集群的指標(biāo)[9]。

聚合查詢與指標(biāo)數(shù)據(jù)量

對于多集群數(shù)據(jù)存放在一起的情況,可以進(jìn)行預(yù)聚合以減少查詢時Prometheus的壓力和反饋耗時[9]。同時,需要注意監(jiān)控數(shù)據(jù)的總量,建議所有集群總的數(shù)據(jù)量不超過450w。

可視化與告警

使用Grafana與Prometheus結(jié)合,實現(xiàn)數(shù)據(jù)的可視化展示[12]。同時,可以設(shè)置告警規(guī)則,當(dāng)特定指標(biāo)超過閾值時觸發(fā)告警。

監(jiān)控指標(biāo)的類型

Prometheus主要有四種類型的監(jiān)控指標(biāo)[10]:

  1. Counter:只增不減的計數(shù)器,如HTTP訪問量。
  2. Gauge:反映系統(tǒng)的當(dāng)前狀態(tài),可增可減,如CPU使用率。
  3. Histogram:用于統(tǒng)計和分析樣本的分布情況。
  4. Summary:與Histogram類似,但提供了分位數(shù)統(tǒng)計。

通過上述步驟和實踐,可以有效地通過Prometheus監(jiān)控分布式系統(tǒng)的指標(biāo),確保系統(tǒng)的穩(wěn)定性和性能。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解JAVA生成將圖片存入數(shù)據(jù)庫的sql語句實現(xiàn)方法

    詳解JAVA生成將圖片存入數(shù)據(jù)庫的sql語句實現(xiàn)方法

    這篇文章主要介紹了詳解JAVA生成將圖片存入數(shù)據(jù)庫的sql語句實現(xiàn)方法的相關(guān)資料,這里就是實現(xiàn)java生成圖片并存入數(shù)據(jù)庫的實例,需要的朋友可以參考下
    2017-08-08
  • synchronized背后的monitor鎖實現(xiàn)詳解

    synchronized背后的monitor鎖實現(xiàn)詳解

    這篇文章主要為大家介紹了synchronized背后的monitor鎖實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Java生成MD5加密字符串代碼實例

    Java生成MD5加密字符串代碼實例

    這篇文章主要介紹了Java生成MD5加密字符串代碼實例,本文對MD5的作用作了一些介紹,然后給出了Java下生成MD5加密字符串的代碼示例,需要的朋友可以參考下
    2015-06-06
  • MP(MyBatis-Plus)實現(xiàn)樂觀鎖更新功能的示例代碼

    MP(MyBatis-Plus)實現(xiàn)樂觀鎖更新功能的示例代碼

    這篇文章主要介紹了MP(MyBatis-Plus)實現(xiàn)樂觀鎖更新功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • JAVA中的字符串常量池使用操作代碼

    JAVA中的字符串常量池使用操作代碼

    Java中的字符串常量池是Java堆中的一塊特殊存儲區(qū)域,用于存儲字符串。它的實現(xiàn)是為了提高字符串操作的性能并節(jié)省內(nèi)存,這篇文章主要介紹了JAVA中的字符串常量池,需要的朋友可以參考下
    2022-12-12
  • java http token請求代碼實例

    java http token請求代碼實例

    這篇文章主要介紹了java http token請求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Netty源碼解析NioEventLoop創(chuàng)建的構(gòu)造方法

    Netty源碼解析NioEventLoop創(chuàng)建的構(gòu)造方法

    這篇文章主要介紹了Netty源碼解析NioEventLoopGroup之NioEventLoop創(chuàng)建的構(gòu)造方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Spring bean生命周期配置過程解析

    Spring bean生命周期配置過程解析

    這篇文章主要介紹了Spring bean生命周期配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Java?Spring?boot實現(xiàn)生成二維碼

    Java?Spring?boot實現(xiàn)生成二維碼

    大家好,本篇文章主要講的是Java?Spring?boot實現(xiàn)生成二維碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • JAVA中判空方法isEmpty()用法舉例詳解

    JAVA中判空方法isEmpty()用法舉例詳解

    這篇文章主要給大家介紹了關(guān)于JAVA中判空方法isEmpty()用法的相關(guān)資料,isEmpty()是Java中常用的方法之一,用于判斷集合、字符串、數(shù)組等是否為空,文中通過代碼將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06

最新評論