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

通過prometheus監(jiān)控springboot程序運(yùn)行狀態(tài)的操作流程

 更新時間:2025年02月09日 08:34:22   作者:景天科技苑  
jmx_exporter用于從Java應(yīng)用程序中提取JMX指標(biāo),適用于SpringBoot應(yīng)用,通過下載jar包和配置文件,可以抓取JVM基礎(chǔ)指標(biāo),要獲取應(yīng)用級別指標(biāo),需要集成Prometheus客戶端庫并自定義指標(biāo),本文給大家介紹了如何通過prometheus監(jiān)控springboot程序運(yùn)行狀態(tài)

jmx_exporter 主要用于從 Java 應(yīng)用程序中提取 JMX 指標(biāo),通常包括 JVM級別的信息,如內(nèi)存使用情況、線程狀態(tài)、垃圾回收次數(shù)等。

對于傳統(tǒng)的SpringBoot應(yīng)用,由于它默認(rèn)沒有內(nèi)置 Prometheus 監(jiān)控的指標(biāo),因此使用 jmx_exporter來抓取基礎(chǔ)的JVM相關(guān)指標(biāo)。

如果想要獲取更細(xì)粒度的應(yīng)用級別的業(yè)務(wù)指標(biāo),例如 HTTP 請求數(shù)、處理時間或業(yè)務(wù)操作的計(jì)數(shù),則需要在應(yīng)用中集成 Prometheus 客戶端庫,并自定義相應(yīng)的指標(biāo)。

1、下載jmx-exporter

1. 訪問github下載

下載地址:https://github.com/prometheus/jmx_exporter

在這里插入圖片描述

在release里面下載jar包即可,如下是最新版本

在這里插入圖片描述

我們使用0.20.0版本

在這里插入圖片描述

創(chuàng)建個目錄

mkdir /etc/jmx_exporter

將下載好的jar包上傳上來

在這里插入圖片描述

2. 準(zhǔn)備config.yml配置文件

規(guī)則文件可以定義要暴露哪些指標(biāo)給prometheus

[root@jingtian03 jmx_exporter ]#vim config.yaml
rules:
  - pattern: ".*"

在這里插入圖片描述

2、運(yùn)行SpringBoot應(yīng)用

1. 安裝java基礎(chǔ)環(huán)境

注意,下載的java版本和maven版本要對應(yīng),并且spring boot程序的版本也要對應(yīng)

yum install java-17-openjdk maven-openjdk17 -y

替換下maven的配置文件,連到阿里云,編譯項(xiàng)目會快一些

git clone https://github.com/littlefun91/mavendata.git
cd mavendata/
cp settings.xml /etc/maven/

在這里插入圖片描述

在這里插入圖片描述

2. 下載java應(yīng)用然后進(jìn)行編譯

如果自己有,也可以用自己的java應(yīng)用測試

git clone https://github.com/littlefun91/springbootdemo.git

解壓,打包

tar xf springboot-devops-myapp-java11-jar.tar.gz
cd springboot-devops-demo-jar-java17/
mvn package

在這里插入圖片描述

編譯成功標(biāo)志

在這里插入圖片描述

編譯好之后會生成一個target目錄

里面有生成的jar包文件

在這里插入圖片描述

3. 運(yùn)行java應(yīng)用,并加載jmx監(jiān)控,監(jiān)聽12345端口

<path_to_jmx_exporter.jar>=<exporter_port>:<path_to_config.yaml>

因此,工作中,我們?nèi)绻枰O(jiān)控java程序,則在java運(yùn)行時加上jmx監(jiān)控端口即可暴露出metrics

nohup java \
 -javaagent:/etc/jmx_exporter/jmx_prometheus_javaagent-0.20.0.jar=12345:/etc/jmx_exporter/config.yaml \
 -jar -Xms50m -Xmx50m target/jingtian-jar-1.0.0.jar \
 --server.port=8081 &>/var/log/springboot.log &

4. 檢查對應(yīng)的端口是否正常

在這里插入圖片描述

查看metrics

在這里插入圖片描述

3、配置prometheus

1)修改prometheus配置

vim /etc/prometheus/prometheus.yml
  - job_name: "jmx_exporter"
    static_configs:
      - targets: ["jingtian03:12345"]

2)重新加載Prometheus配置文件

curl -X POST http://localhost:9090/-/reload

3)檢查Prometheus的Status->Targets頁面,驗(yàn)證 jmx_exporter 是否已經(jīng)成功納入監(jiān)控中

在這里插入圖片描述

4、JVM常用指標(biāo)與示例 1)JVM內(nèi)存使用相關(guān)指標(biāo)(Tomcat也有這些指標(biāo))

初始堆內(nèi)存和最大堆內(nèi)存都是啟動java程序的時候設(shè)置的

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

注意:最新版的jmx中的指標(biāo)對應(yīng)的是
jvm_memory_init_bytes{area=“heap”}
jvm_memory_used_bytes{area=“heap”}
jvm_memory_max_bytes{area=“heap”}

area=“heap” 為堆內(nèi)存
area=“nonheap” 為非堆內(nèi)存
我們主要看堆內(nèi)存

在這里插入圖片描述

在這里插入圖片描述

案例1:JVM堆內(nèi)存使用率。計(jì)算公式:已用堆內(nèi)存 / 總的堆內(nèi)存 * 100

jvm_memory_used_bytes{<!--{C}%3C!%2D%2D%20%2D%2D%3E-->area="heap"} / jvm_memory_max_bytes{<!--{C}%3C!%2D%2D%20%2D%2D%3E-->area="heap"} *100

在這里插入圖片描述

案例2:計(jì)算JVM,新生代和老年代,每次GC所需時間,因?yàn)檫@兩個指標(biāo)是不斷累積的,因此計(jì)算公式:rate(JVMGC花費(fèi)總時間[1m]) / rate(JVMGC總次數(shù)[1m])
java采用分代回收,分為年輕代、老年代、永久代。年輕代又分為E區(qū)、S1區(qū)、S2區(qū)。
到j(luò)dk1.8,永久代被元空間取代了。
年輕代都使用復(fù)制算法,老年代的收集算法看具體用什么收集器。默認(rèn)是PS收集器,采用標(biāo)記-整理算法。

# 如果jvm_gc_collection_seconds_count是100次,而jvm_gc_collection_seconds_sum是50秒,那么平均每次GC耗時是0.5秒。
sum (rate(jvm_gc_collection_seconds_sum[5m]) / rate(jvm_gc_collection_seconds_count[5m])) by (gc, instance, job)

在這里插入圖片描述

案例3:計(jì)算JVM最近5分鐘,最小的死鎖線的程數(shù),是否高于10

min_over_time(jvm_threads_deadlocked[5m])

在這里插入圖片描述

5)JVM堆內(nèi)存分配相關(guān)指標(biāo)(可以查看新生代、老年代分別使用了多少內(nèi)存,粒度更細(xì)一些)

在這里插入圖片描述

最新版的jmx對應(yīng)的指標(biāo)是:
jvm_memory_pool_used_bytes
jvm_memory_pool_max_bytes

在這里插入圖片描述

5、jmx告警規(guī)則文件

1)編寫JVM告警規(guī)則文件

cat /etc/prometheus/rules/jvm_rules.yml
groups:
- name: "JVM告警規(guī)則"
  rules:
  - alert: JVM堆內(nèi)存使用率過高
    expr: jvm_memory_bytes_used{area="heap",} / jvm_memory_bytes_max{area="heap",} * 100 > 80
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "JVM 堆內(nèi)存使用率過高, 實(shí)例:{{ $labels.instance }}, job:{{ $labels.job }} "
      description: "JVM堆內(nèi)存使用率超過80%, 當(dāng)前值 {{ $value }}%"
  - alert: JVMGC時間過長
    expr: sum (rate(jvm_gc_collection_seconds_sum[5m]) / rate(jvm_gc_collection_seconds_count[5m])) by (gc, instance, job) > 1
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "JVM GC時間過長, 實(shí)例:{{ $labels.instance }}, job:{{ $labels.job }} "
      description: "JVM {{ $labels.gc }} 的回收時間超過1s,當(dāng)前值 {{ $value}}s"
  - alert: JVM死鎖線程過多
    expr: min_over_time(jvm_threads_deadlocked[5m]) > 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "JVM檢測到死鎖線程"
      description: "在過去5分鐘內(nèi)JVM檢測到存在死鎖線程, 當(dāng)前值 {{ $value }}。"

2)驗(yàn)證規(guī)則文件

在這里插入圖片描述

3)導(dǎo)入JMX圖形

導(dǎo)入一個JVM的Grafana模板。Dashboard ID為 14845

在這里插入圖片描述

以上就是通過prometheus監(jiān)控springboot程序運(yùn)行狀態(tài)的操作流程的詳細(xì)內(nèi)容,更多關(guān)于prometheus監(jiān)控springboot運(yùn)行狀態(tài)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于TCP通信丟包原因總結(jié)(推薦)

    基于TCP通信丟包原因總結(jié)(推薦)

    下面小編就為大家?guī)硪黄赥CP通信丟包原因總結(jié)(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • java如何將控制臺輸出日志寫入到指定文件中

    java如何將控制臺輸出日志寫入到指定文件中

    這篇文章主要介紹了java如何將控制臺輸出日志寫入到指定文件中問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • springboot配置ldaps連接方式

    springboot配置ldaps連接方式

    這篇文章主要介紹了springboot配置ldaps連接方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 一文帶你了解微服務(wù)架構(gòu)中的"發(fā)件箱模式"

    一文帶你了解微服務(wù)架構(gòu)中的"發(fā)件箱模式"

    微服務(wù)架構(gòu)如今非常的流行,這個架構(gòu)下可能經(jīng)常會遇到“雙寫”的場景。本文就和大家分享一個“發(fā)件箱模式”,?感興趣的小伙伴可以了解一下
    2023-01-01
  • Springboot集成shiro之登錄攔截/權(quán)限控制方式

    Springboot集成shiro之登錄攔截/權(quán)限控制方式

    文章介紹了Shiro框架的的配置和使用,包括添加依賴、配置ShiroConfig、創(chuàng)建realm、配置安全管理器、配置過濾器和權(quán)限控制,還介紹了配置ehcache緩存、自定義加密和處理404重定向等問題,總結(jié)了Shiro框架中的常用配置和解決常見問題的方法
    2026-05-05
  • SpringBoot如何接收前端傳遞參數(shù)

    SpringBoot如何接收前端傳遞參數(shù)

    這篇文章主要介紹了SpringBoot如何接收前端傳遞參數(shù),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-08-08
  • 關(guān)于JDK15的新特性之TextBlocks文本塊的引入和使用

    關(guān)于JDK15的新特性之TextBlocks文本塊的引入和使用

    這篇文章主要介紹了關(guān)于JDK15的新特性之文本塊的引入和使用,如果具有一種語言學(xué)機(jī)制,可以比多行文字更直觀地表示字符串,而且可以跨越多行,而且不會出現(xiàn)轉(zhuǎn)義的視覺混亂,那么這將提高廣泛Java類程序的可讀性和可寫性,需要的朋友可以參考下
    2023-07-07
  • Java語言簡介(動力節(jié)點(diǎn)Java學(xué)院整理)

    Java語言簡介(動力節(jié)點(diǎn)Java學(xué)院整理)

    Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個特征,下面通過本文給大家分享java語言的簡介,感興趣的朋友一起看看吧
    2017-03-03
  • IntelliJ IDEA進(jìn)行中文漢化的詳細(xì)教程(附圖文講解)

    IntelliJ IDEA進(jìn)行中文漢化的詳細(xì)教程(附圖文講解)

    今天為大家?guī)淼氖?nbsp;IntelliJ IDEA 中文漢化教程以及中文插件包下載教程,經(jīng)常收到小伙伴在后臺給我留言,問 IDEA 怎么進(jìn)行中文漢化,因?yàn)楹芏嘈』锇槭莿側(cè)腴T Java,看到 IDEA 菜單全英文有些不太適應(yīng),需要的朋友可以參考下
    2024-12-12
  • 一個合格JAVA軟件工程師應(yīng)該具備什么

    一個合格JAVA軟件工程師應(yīng)該具備什么

    一個合格JAVA軟件工程師應(yīng)該具備哪些專業(yè)技能,面試技巧是什么?本文為大家分享了2016版最新Java軟件工程師就業(yè)思維圖,感興趣的小伙伴們可以參考一下
    2016-11-11

最新評論

凌海市| 衡阳市| 西丰县| 赤壁市| 福建省| 贵阳市| 通榆县| 营山县| 达日县| 河间市| 麦盖提县| 新化县| 新竹县| 讷河市| 修水县| 墨竹工卡县| 永安市| 汉沽区| 女性| 宁海县| 舞钢市| 北碚区| 阳春市| 翁源县| 西和县| 湟中县| 咸阳市| 建湖县| 永泰县| 琼结县| 林周县| 资阳市| 惠来县| 页游| 商水县| 全南县| 文水县| 都安| 紫云| 温州市| 昭平县|