jvm监控的搭建和使用
Java Management Extensions(JMX)是一种Java标准,用于管理和监控Java应用程序,特别是分布式系统。它提供了一种标准化的方式来管理应用程序的各种方面,包括性能监控、配置更改、事件通知等。目前JMX最常用的就是用来做JAVA程序的监控,市面上常见的Java 监控框架基本都是基于JMX来实现的。
准备文件1 2:文件1可以自行下载(在文章上面);文件2复制以下内容自行创建文件即可;
- 探针文件:
jmx_prometheus_javaagent-0.17.2.jar
- 配置文件:
jmx_exporter_config.yaml
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
- 安装探针监控应用的JVM参数
(1)将上述两个文件放在任意目录下,修改tomcat目录/bin/catalina.sh,找到JAVA_OPTS添加
sh
# -javaagent:[jmx探针jar包路径]=[暴露的端口]:[yaml配置文件路径]
JAVA_OPTS="$JAVA_OPTS -javaagent:/opt/apache-tomcat-8.5.35/bin/jmx_prometheus_javaagent-0.17.2.jar=30013:/opt/apache-tomcat-8.5.35/bin/jmx_exporter_config.yaml"
这里的文件路径一定要和存放的路径一致;暴露的端口任意指定。
如果使用的为内嵌tomcat,启动时使用启动脚本来启动war包,而不是启动tomcat,则可以将 -javaagent:[jmx探针jar包路径]=[暴露的端口]:[yaml配置文件路径]
加到启动命令中去
(2)重启Tomcat,至此服务器端配置完成
(3)在浏览器中使用 IP:30013 进行访问:
(4)将 ip + 端口 配置到Prometheus
properties
- job_name: "bmjs_gk"
static_configs:
- targets:
- "xxx.xxx.xxx.xxx:30013"