JVM监控-JMX探针的安装和使用

jvm监控的搭建和使用

​ Java Management Extensions(JMX)是一种Java标准,用于管理和监控Java应用程序,特别是分布式系统。它提供了一种标准化的方式来管理应用程序的各种方面,包括性能监控、配置更改、事件通知等。目前JMX最常用的就是用来做JAVA程序的监控,市面上常见的Java 监控框架基本都是基于JMX来实现的。

准备文件1 2:文件1可以自行下载(在文章上面);文件2复制以下内容自行创建文件即可;

  1. 探针文件:jmx_prometheus_javaagent-0.17.2.jar
  2. 配置文件: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"
相关推荐
用户094248568035 小时前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu5 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
2601_9620715710 小时前
类变量和全局变量的隔离性有什么区别?
java·开发语言·jvm
估值探索者12 小时前
【Python量化系统工程实战 #01】数据存储选型 CSVSQLiteMySQL 对比与 SQLite 实战建库
开发语言·jvm·python·sqlite·api接口·数据api接口·股票数据api接口
打工仔折腾 AI1 天前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
用户094248568031 天前
第22章:JIT编译分层——Interpreter、C1、C2与热点探测
java·jvm
乌暮1 天前
JVM 原理与实践:从运行时数据区到线上故障排查
java·开发语言·jvm·后端·学习·面试
长河2 天前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
可乐ea2 天前
GitHub Security Lab 开源 Fuzzing Taskflow:让 LLM 智能体自己跑完 C/C++ 模糊测试
jvm·c++·github·模糊测试·mcp·代码agent·智能体自动化
一条破秋裤2 天前
Linux 线程同步:读写锁
java·linux·jvm