天津智能網(wǎng)站建設(shè)費(fèi)用/公司網(wǎng)址
5月應(yīng)用服務(wù)出現(xiàn)問(wèn)題,當(dāng)別的小伙伴問(wèn)我,有沒(méi)有Tomcat等應(yīng)用狀態(tài)的監(jiān)控的時(shí)候,我有點(diǎn)兒尷尬。所以趕緊抽空部署一下。
在配置之前,就當(dāng)已經(jīng)會(huì)安裝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
其實(shí)配置的時(shí)候,可以很簡(jiǎn)單的寫(xiě)成下面的格式如下
#vim /usr/local/prometheus/jmx-exporter.yaml
---
rules:- pattern: '.*'
不過(guò),個(gè)人覺(jué)得上面這種配置,可以快速的上手,正式使用的時(shí)候,不推薦這樣,因?yàn)檫@樣會(huì)導(dǎo)致prometheus收集的指標(biāo)太多了,對(duì)于存儲(chǔ)和網(wǎng)絡(luò)都會(huì)有些許的影響,特別是手機(jī)的主機(jī)特別多的時(shí)候。比較推薦官方給的配置,如下:
#官方推薦配置實(shí)例:https://github.com/prometheus/jmx_exporter/blob/master/example_configs/tomcat.yml
#將文件下載下來(lái)放到下面文件中/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_totallabels:port: "$2"protocol: "$1"help: Tomcat global $3type: 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_totallabels:module: "$1"servlet: "$2"help: Tomcat servlet $3 totaltype: COUNTER
- pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount):'name: tomcat_threadpool_$3labels:port: "$2"protocol: "$1"help: Tomcat threadpool $3type: 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_totallabels:context: "$2"host: "$1"help: Tomcat session $3 totaltype: COUNTER
?
?
三,配置tomcat
?在配置Tomcat的時(shí)候,網(wǎng)上很多人給的都是下面這個(gè)配置:
修改文件: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"
這個(gè)配置在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這個(gè),在Tomcat7 和8 中都是好用的。如果是java -jar的java包的話,啟動(dòng)命令如下:
java -javaagent:/usr/local/prometheus/jmx_prometheus_javaagent-0.13.0.jar=20000:/usr/local/prometheus/jmx-exporter.yaml -jar yourJar.jar
啟動(dòng)java應(yīng)用,然后使用ps -ef |grep java 命令來(lái)檢查啟動(dòng)的java應(yīng)用中是否有 -javaagent。如果有就表示正常,如果沒(méi)有,請(qǐng)自行排查問(wèn)題所在,比如路徑不對(duì)等。
?
?
四、prometheus的配置
? 我的prometheus使用的是file_sd文件自動(dòng)發(fā)現(xiàn)。所以配置如下
- job_name: "jvm_monitor"file_sd_configs:- refresh_interval: 30sfiles:- ./conf/jvm_monitor/*.json
- job_name: 'JVM/druid'metrics_path: /metricshonor_labels: truefile_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: 中運(yùn)系統(tǒng)project: 大運(yùn)系統(tǒng)service: zto-sitefintask-exportteam: 研發(fā)一部env: 生產(chǎn)developer: 聶青maintainer: 陳\綱targets:- 192.168.17.15:8024- labels:app: 中運(yùn)系統(tǒng)project: 大運(yùn)系統(tǒng)service: zto-fintask-exportteam: 研發(fā)一部env: 生產(chǎn)developer: 聶綠水青maintainer: 陳振綱targets:- 192.168.72.19:8023
?當(dāng)然了,也可以使用一臺(tái)一臺(tái)的寫(xiě)到prometheus配置文件里,如下:
// prometheus.yml 配置文件內(nèi)容- job_name: 'jvm_monitor'static_configs:- targets: ['192.168.1.200:20000']labels:appname: 'tomcat_xxx'
? 當(dāng)這些都配置的時(shí)候,重新加載prometheus的配置文件,使配置生效。
?
五、配置grafana
grafana的dashboards編號(hào)是8563,添加到grafana中即可。之后,就完成了tomcat的監(jiān)控,如下圖,稍微做了一點(diǎn)兒調(diào)整。
?