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

前情提要:

点我

00 写个简单的java应用

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

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

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

01 启动参数

通过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

02 jmxtrans安装

官方链接:

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

下载安装:

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

03 配置文件

Ⅰ 参数

"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
 }]
}

04 启动

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

  • gc
  • Memory

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

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

06 番外2 - kafka配置方法

修改文件kafka/bin/kafka-run-class.sh
修改配置,如下


# JMX port to use
if [  $JMX_PORT ] && [ -z "ISKAFKASERVER" ]; then
  KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT "
fi

# Memory options
if [ -z "$KAFKA_HEAP_OPTS" ]; then
  KAFKA_HEAP_OPTS="-Xmx256M"
  JMX_PORT="8999"
fi

启动kafka:
bin/kafka-server-start.sh config/server.properties
即可在jconsole上连接

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值