Prometheus監控Jvm

監控JVM

使用prometheus+grafana監控springboot項目jvm狀況

環境準備:javascript

  • JDK 8+java

  • Grafanagit

  • Prometheusgithub

一、配置pom

Actuator:web

  • Spring Boot Actuator能夠幫助你監控和管理Spring Boot應用,好比健康檢查、審計、統計和HTTP追蹤等。全部的這些特性能夠經過JMX或者HTTP endpoints來得到。spring

Micrometer:docker

  • Micrometer提供了與供應商無關的接口,包括 timers(計時器)gauges(量規)counters(計數器)distribution summaries(分佈式摘要)long task timers(長任務定時器)。它具備維度數據模型,當與維度監視系統結合使用時,能夠高效地訪問特定的命名度量,並可以跨維度深刻研究。shell


       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-actuator</artifactId>
       </dependency>

       <dependency>
           <groupId>io.micrometer</groupId>
           <artifactId>micrometer-registry-prometheus</artifactId>
           <version>2.17.1</version>
       </dependency>

       <dependency>
           <groupId>io.github.mweirauch</groupId>
           <artifactId>micrometer-jvm-extras</artifactId>
           <version>0.1.2</version>
       </dependency>


如圖:tomcat


二、配置yml


#prometheus配置
management.metrics.export.prometheus.enabled=true
management.metrics.export.prometheus.step=1ms
management.metrics.export.prometheus.descriptions=true

management.endpoint.prometheus.enabled=true
management.endpoints.web.exposure.include=health,info,env,prometheus,metrics,httptrace,threaddump,heapdump,springmetrics

上傳jar到服務器運行springboot

三、添加job

修改prometheus.yml,添加job添加下面代碼,其中xxx替換爲項目啓動路徑。

而後再啓動prometheus,訪問http://118.190.217.164:9090/,查看targets啓動是否正常以下圖

 - job_name: 'actuator-demo'
   # metrics_path defaults to '/metrics'
   # scheme defaults to 'http'.
  metrics_path: '/xxx/xxx/prometheus'
  static_configs:
  - targets: ['118.190.217.164:9999']

例如:


- job_name: 'actuator-demo'
  metrics_path: '/root/minedata'
  static_configs:
  - targets: ['118.190.217.164:9999']

四、 啓動服務

小編對java不是很熟悉,這裏僅僅只是展現 如何監控,具體邏輯沒有寫。示意效果。

(授人以魚不如授人以漁)

五、 拓展

咱們其實可使用,JMX exporter,提供JMX中和JVM相關的metrics。

地址:

https://github.com/prometheus/jmx_exporter


如下實踐 參考原文:

https://chanjarster.github.io/post/prom-grafana-jvm/

具體步驟以下

  1. 利用JMX exporter,在Java進程內啓動一個小型的Http server

  2. 配置Prometheus抓取那個Http server提供的metrics。

  3. 配置Grafana鏈接Prometheus,配置Dashboard。

實踐

一、建立目錄


mkdir java-jvm
cd java-jvm

二、拉取JMX_Exporter


git clone https://github.com/prometheus/jmx_exporter.git

三、新建文件 simple-config.yml

# 這個文件大體意思是 取metric類型 的 GAUGE(瞬時值)
---
lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem"]
rules:
- pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'
  name: os_$1
  type: GAUGE
  attrNameSnakeCase: true

四、啓動幾個線程

運行如下命令啓動3個Tomcat,記得把<path-to-java-jvm>替換成正確的路徑。


端口自定義,因爲服務器端口組每次須要設置,小編的在8000/10000 本身根據本身改便可。如下操做能夠在`本地docker環境`中運行

- P

  • 第一個 是 JMX exporter提供的metrics

    • 8001 | 8002 | 8003

  • 第二個是 Tomcat 端口


docker run -d \
 --name tomcat-1 \
 -v <path-to-java-jvm>: /root/java-jvm/jmx_exporter \
 -e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \
 -p 8001:8001 \
 -p 8081:8081 \
tomcat:8.5-alpine

docker run -d \
 --name tomcat-2 \
 -v <path-to-java-jvm>:/root/java-jvm/jmx_exporter \
 -e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \
 -p 8002:8002 \
 -p 8082:8082 \
tomcat:8.5-alpine

docker run -d \
 --name tomcat-3 \
 -v <path-to-java-jvm>:/root/java-jvm/jmx_exporter \
 -e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \
 -p 8003:8003 \
 -p 8083:8083 \
tomcat:8.5-alpine

五、配置Prometheus

在以前新建目錄java-jvm-demo,新建一個文件prom-jmx.yml,內容以下:

scrape_configs:
- job_name: 'java'
  scrape_interval: 30s
  static_configs:
  - targets:
    - '<host-ip>:8001'
    - '<host-ip>:8002'
    - '<host-ip>:8003'


六、docker啓動

docker run -d \
 --name=prometheus \
 -p 9090:9090 \
 -v <path-to-prom-jvm-demo>:/prometheus-config \
prom/prometheus --config.file=/prometheus-config/prom-jmx.yml


七、訪問9090看效果

八、配置Grafana

啓動

docker run -d --name=grafana -p 3000:3000 grafana/grafana

登陸

訪問http://localhost:3000,使用admin/admin登陸。

(能夠本地docker 實踐一下)

添加Prometheus數據源

這裏不懂得 能夠看我以前的文章。

  • Name:隨便取

  • Type:Prometheus

  • URL:http://:9090

  • 其他不要設置,點擊Save & Test,應該會返回成功結果

導入製做好的 Dashboard







在看和轉發

都是一種支持


本文分享自微信公衆號 - DataScience(DataScienceTeam)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索