最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

引言

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

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

Prometheus 簡(jiǎn)介

Prometheus 是一個(gè)開源的系統(tǒng)監(jiān)控和警報(bào)工具包,它通過采集和存儲(chǔ)指標(biāo)(metrics),提供了強(qiáng)大的數(shù)據(jù)查詢語(yǔ)言,可以幫助我們分析和理解應(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)用的工具。

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

集成 Prometheus 和 Spring Boot

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

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

添加依賴

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

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

Micrometer Prometheus registry 會(huì)將這些指標(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 端點(diǎn)。

例如,在 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

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

啟動(dò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)用集成,實(shí)現(xiàn)對(duì)應(yīng)用的實(shí)時(shí)監(jiān)控。

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

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

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

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

  • CPU使用率:監(jiān)控系統(tǒng)CPU的使用情況,可以通過PromQL查詢r(jià)ate(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ù)和耗時(shí),可以通過jvm_gc_collection_seconds_sum等指標(biāo)來監(jiān)控。

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

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

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

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

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

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

自定義指標(biāo)

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

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

這些數(shù)據(jù)不僅可以幫助我們及時(shí)發(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),可以遵循以下步驟和最佳實(shí)踐:

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

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

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

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

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

  • NodeExporter:收集主機(jī)的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)控方案

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

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

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

可視化與告警

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • Java中的@PreAuthorize注解使用詳解

    Java中的@PreAuthorize注解使用詳解

    這篇文章主要介紹了Java中的@PreAuthorize注解使用詳解,@PreAuthorize注解會(huì)在方法執(zhí)行前進(jìn)行權(quán)限驗(yàn)證,支持Spring EL表達(dá)式,它是基于方法注解的權(quán)限解決方案,需要的朋友可以參考下
    2023-10-10
  • 淺析Java中的set集合類型及其接口的用法

    淺析Java中的set集合類型及其接口的用法

    Java本身對(duì)set集合提供了一個(gè)接口,一般的實(shí)現(xiàn)類是HastSet和 TreeSet,這里我們先來簡(jiǎn)要淺析Java中的set集合類型及其接口的用法:
    2016-05-05
  • Mybatis中如何設(shè)置sqlSession自動(dòng)提交

    Mybatis中如何設(shè)置sqlSession自動(dòng)提交

    在MyBatis中,默認(rèn)情況下,獲取的SqlSession對(duì)象不會(huì)自動(dòng)提交事務(wù),這意味著在進(jìn)行更新、刪除或插入等操作后,需要顯式調(diào)用commit方法來提交事務(wù),但是,可以在獲取SqlSession時(shí)通過將openSession方法的參數(shù)設(shè)置為true
    2024-09-09
  • springboot接收json數(shù)據(jù)時(shí),接收到空值問題

    springboot接收json數(shù)據(jù)時(shí),接收到空值問題

    這篇文章主要介紹了springboot接收json數(shù)據(jù)時(shí),接收到空值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 關(guān)于SpringSecurity認(rèn)證邏輯源碼分析

    關(guān)于SpringSecurity認(rèn)證邏輯源碼分析

    這篇文章主要介紹了關(guān)于SpringSecurity認(rèn)證邏輯源碼分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 解決Mybatis報(bào)錯(cuò):org.apache.ibatis.reflection.ReflectionException: There is no getter for property named問題

    解決Mybatis報(bào)錯(cuò):org.apache.ibatis.reflection.ReflectionException

    文章主要討論了在使用MyBatis進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)遇到的幾個(gè)常見問題及其解決方法,首先,文章指出如果DTO類中沒有定義getter和setter方法,會(huì)導(dǎo)致反射異常,解決方法是使用Lombok的@Data注解自動(dòng)生成這些方法
    2025-01-01
  • java生成sm2/hutool生成公鑰私鑰代碼示例

    java生成sm2/hutool生成公鑰私鑰代碼示例

    這篇文章主要給大家介紹了關(guān)于java生成sm2/hutool生成公鑰私鑰的相關(guān)資料,Java是一種廣泛使用的編程語(yǔ)言,可以用來生成公鑰和私鑰文件,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • 聊聊Lombok中的@Builder注解使用教程

    聊聊Lombok中的@Builder注解使用教程

    @Builder注解的作用主要是用來生成對(duì)象,并且可以為對(duì)象鏈?zhǔn)劫x值。接下來通過本文給大家介紹Lombok中的@Builder注解使用教程,感興趣的朋友一起看看吧
    2021-11-11
  • Springboot?集成spring?cache緩存的解決方案

    Springboot?集成spring?cache緩存的解決方案

    這篇文章主要介紹了Springboot?集成spring?cache緩存,使用緩存最關(guān)鍵的一點(diǎn)就是保證緩存與數(shù)據(jù)庫(kù)的數(shù)據(jù)一致性,本文給大家介紹最常用的緩存操作模式,對(duì)Springboot?集成spring?cache緩存操作流程感興趣的朋友一起看看吧
    2022-06-06
  • 詳解Java MyBatis 插入數(shù)據(jù)庫(kù)返回主鍵

    詳解Java MyBatis 插入數(shù)據(jù)庫(kù)返回主鍵

    這篇文章主要介紹了詳解Java MyBatis 插入數(shù)據(jù)庫(kù)返回主鍵,有興趣的可以了解一下。
    2017-01-01

最新評(píng)論

微博| 体育| 泸定县| 丹巴县| 桓台县| 绩溪县| 遵化市| 顺平县| 长阳| 贡觉县| 车致| 广宗县| 象山县| 达州市| 英超| 阿巴嘎旗| 红桥区| 株洲市| 彭州市| 鄄城县| 吉安县| 芮城县| 南充市| 虹口区| 枣强县| 霍林郭勒市| 平远县| 台安县| 涞源县| 剑川县| 丹棱县| 安国市| 重庆市| 同江市| 克东县| 朝阳区| 舞阳县| 武胜县| 绵阳市| 吉林市| 榆社县|