监控平台实践(四)使用jmxtrans 监控Java应用

监控平台实践(四)使用jmxtrans 监控Java应用

前情提要:

点我

01 写个简单的java应用

在监控之前,我们需要准备一个简单的java web应用
这里用springboot实现:

  • ip:10.154.0.24
  • 端口:8081
  • http请求:get
  • 路径:/hello
  • 返回内容:hello world

生成jar包:testing.jar,上传至linux

02 启动参数

通过jmx的方式获取java进程信息,需要在参数中添加(参数按环境填写):

java -jar \
-Dcom.sun.management.jmxremote.port=8999 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.rmi.server.hostname=10.154.0.24 \
testing.jar

跑起来就先告一段落啦,接下来数据采集:jmxtrans

03 jmxtrans安装

官方链接:

下载链接:jmxtrans.rpm 安装说明:installation

下载安装:

上传并安装:
yum localinstall -y jmxtrans-271.rpm

04 配置文件

Ⅰ 参数

"port": "8999",
"host": "10.154.0.24",
这两个参数对应java启动参数中的ipport

Ⅱ 数据库

这里使用influxdb数据库,所以这里outputWriters中的相关配置与influxdb有关

"outputWriters": [{
    "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
	"url" : "http://10.154.0.24:8086/",
	"username" : "root",
	"password" : "root",
	"database" : "test",
	"tags" : {"application" : "Memory"}
   }],
   "obj": "java.lang:name=CMS Old Gen,type=MemoryPool",
   "resultAlias": "cmsoldgen",
   "attr": ["Usage"]

创建文件

目录:cd /var/lib/jmxtrans
创建配置文件:test.json

{
    
    
 "servers": [{
    
    
  "port": "8999",
  "host": "10.154.0.24",
  "queries": [{
    
    
   "outputWriters": [{
    
    
    "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
	"url" : "http://10.154.0.24:8086/",
	"username" : "root",
	"password" : "root",
	"database" : "test",
	"tags" : {
    
    "application" : "Memory"}
   }],
   "obj": "java.lang:type=Memory",
   "resultAlias": "heap",
   "attr": ["HeapMemoryUsage", "NonHeapMemoryUsage"]
  }, {
    
    
   "outputWriters": [{
    
    
    "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
	"url" : "http://10.154.0.24:8086/",
	"username" : "root",
	"password" : "root",
	"database" : "test",
	"tags" : {
    
    "application" : "MemoryPool"}
   }],
   "obj": "java.lang:name=CMS Old Gen,type=MemoryPool",
   "resultAlias": "cmsoldgen",
   "attr": ["Usage"]
  }, {
    
    
   "outputWriters": [{
    
    
    "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
	"url" : "http://10.154.0.24:8086/",
	"username" : "root",
	"password" : "root",
	"database" : "test",
	"tags" : {
    
    "application" : "GarbageCollector"}
   }],
   "obj": "java.lang:type=GarbageCollector,name=*",
   "resultAlias": "gc",
   "attr": ["CollectionCount", "CollectionTime"]
  }],
  "numQueryThreads": 2
 }]
}

05 启动

启动命令:systemctl start jmxtrans
日志位置:/var/log/jmxtrans/jmxtrans.log
如有报错,可以日志中查看,一般来说是json配置的问题。
查看数据库:
influx
use test(这里不清楚是否需要手动创建databasetest
show measurements

  • gc
  • Memory

06 番外2 - 使用 jconcole监控进程数据

jsoncolejdk自带的jmx信息抓取程序
jmxtrans也是用这种方式来抓取数据的,展示页面如下(windows):
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37726096/article/details/114357216