使用Prometheus監(jiān)控Tomcat等java應用的狀態(tài)
5月應用服務出現(xiàn)問題,當別的小伙伴問我,有沒有Tomcat等應用狀態(tài)的監(jiān)控的時候,我有點兒尷尬。所以趕緊抽空部署一下。
在配置之前,就當已經(jīng)會安裝jdk和tomcat了。
一、下載jmx_exporter
#linux下 cd /usr/local/prometheus wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar
二、配置jmx_exporter
其實配置的時候,可以很簡單的寫成下面的格式如下
#vim /usr/local/prometheus/jmx-exporter.yaml --- rules: - pattern: '.*'
不過,個人覺得上面這種配置,可以快速的上手,正式使用的時候,不推薦這樣,因為這樣會導致prometheus收集的指標太多了,對于存儲和網(wǎng)絡都會有些許的影響,特別是手機的主機特別多的時候。
比較推薦官方給的配置,如下:
#官方推薦配置實例:https://github.com/prometheus/jmx_exporter/blob/master/example_configs/tomcat.yml #將文件下載下來放到下面文件中/usr/local/prometheus/jmx-exporter.yaml #cat /usr/local/prometheus/jmx-exporter.yaml --- lowercaseOutputLabelNames: true lowercaseOutputName: true rules: - pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+):' name: tomcat_$3_total labels: port: "$2" protocol: "$1" help: Tomcat global $3 type: COUNTER - pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount):' name: tomcat_servlet_$3_total labels: module: "$1" servlet: "$2" help: Tomcat servlet $3 total type: COUNTER - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount):' name: tomcat_threadpool_$3 labels: port: "$2" protocol: "$1" help: Tomcat threadpool $3 type: GAUGE - pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions):' name: tomcat_session_$3_total labels: context: "$2" host: "$1" help: Tomcat session $3 total type: COUNTER
三、配置tomcat
在配置Tomcat的時候,網(wǎng)上很多人給的都是下面這個配置:
修改文件:tomcat/bin/catalina.sh 或者win下修改tomcat/bin/catalina.bat
JAVA_OPTS=" -javaagent:/usr/local/prometheus/jmx_prometheus_javaagent-0.13.0.jar=20000:/usr/local/prometheus/jmx-exporter.yaml"
這個配置在tomcat8中挺好用的,centos6.9版本的tomcat7 和tomcat8 也都挺好用的。
但是centos6.5的tomcat7中,不好用。需要使用下面的配置
]# vim tomcat/bin/catalina.sh CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/prometheus/jmx_prometheus_javaagent-0.13.0.jar=20000:/usr/local/prometheus/jmx-exporter.yaml";exportCATALINA_OPTS # for win tomcat/bin/catalina.bat
恩,catalina_opts這個,在Tomcat7 和8 中都是好用的。
如果是java -jar的java包的話,啟動命令如下:
java -javaagent:/usr/local/prometheus/jmx_prometheus_javaagent-0.13.0.jar=20000:/usr/local/prometheus/jmx-exporter.yaml -jar yourJar.jar
啟動java應用,然后使用ps -ef |grep java 命令來檢查啟動的java應用中是否有 -javaagent。
如果有就表示正常,如果沒有,請自行排查問題所在,比如路徑不對等。
四、prometheus的配置
我的prometheus使用的是file_sd文件自動發(fā)現(xiàn)。
所以配置如下
- job_name: "jvm_monitor" file_sd_configs: - refresh_interval: 30s files: - ./conf/jvm_monitor/*.json
- job_name: 'JVM/druid' metrics_path: /metrics honor_labels: true file_sd_configs: - files: - targets/jvm/druid.yaml [apps@HZPM004149096 jvm]$ pwd /data/docker/prometheus/conf/targets/jvm [apps@HZPM004149096 jvm]$ cat druid.yaml - labels: app: 中運系統(tǒng) project: 大運系統(tǒng) service: zto-sitefintask-export team: 研發(fā)一部 env: 生產(chǎn) developer: 聶青 maintainer: 陳\綱 targets: - 192.168.17.15:8024 - labels: app: 中運系統(tǒng) project: 大運系統(tǒng) service: zto-fintask-export team: 研發(fā)一部 env: 生產(chǎn) developer: 聶綠水青 maintainer: 陳振綱 targets: - 192.168.72.19:8023
當然了,也可以使用一臺一臺的寫到prometheus配置文件里,如下:
// prometheus.yml 配置文件內(nèi)容 - job_name: 'jvm_monitor' static_configs: - targets: ['192.168.1.200:20000'] labels: appname: 'tomcat_xxx'
當這些都配置的時候,重新加載prometheus的配置文件,使配置生效。
五、配置grafana
grafana的dashboards編號是8563,添加到grafana中即可。之后,就完成了tomcat的監(jiān)控,如下圖,稍微做了一點兒調(diào)整。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用java實現(xiàn)各種數(shù)據(jù)統(tǒng)計圖(柱形圖,餅圖,折線圖)
用Jfree實現(xiàn)條形柱狀圖表,java代碼實現(xiàn)??山?jīng)常用于報表的制作,代碼自動生成后可以自由查看??梢宰杂膳渲脠D表的各個屬性,用來達到自己的要求和目的。本文給大家介紹使用java實現(xiàn)各種數(shù)據(jù)統(tǒng)計圖(柱形圖,餅圖,折線圖),需要的朋友可以參考下2015-10-10Spring Boot教程之利用ActiveMQ實現(xiàn)延遲消息
這篇文章主要給大家介紹了關于Spring Boot教程之利用ActiveMQ實現(xiàn)延遲消息的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring Boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-11-11Java開發(fā)環(huán)境配置JDK超詳細整理(適合新手入門)
這篇文章主要給大家介紹了關于Java開發(fā)環(huán)境配置JDK超詳細整理的相關資料,非常適合新手入門,JDK是Java語言的軟件開發(fā)工具包,主要用于移動設備、嵌入式設備上的java應用程序,需要的朋友可以參考下2023-11-11SpringBoot中使用websocket出現(xiàn)404的解決方法
在Springboot中使用websocket時,本地開發(fā)環(huán)境可以正常運行,但部署到服務器環(huán)境出現(xiàn)404問題,所以本文小編講給大家詳細介紹一下SpringBoot中使用websocket出現(xiàn)404的解決方法,需要的朋友可以參考下2023-09-09Mybatis order by 動態(tài)傳參出現(xiàn)的問題及解決方法
今天,我正在愉快地CRUD,突然發(fā)現(xiàn)出現(xiàn)一個Bug,我們來看看是怎么回事吧!接下來通過本文給大家介紹Mybatis order by 動態(tài)傳參出現(xiàn)的一個小bug,需要的朋友可以參考下2021-07-07