将jmx指标写入influxdb

11 篇文章 2 订阅
7 篇文章 1 订阅

前面了介绍了如何将服务器指标、性能压测指标写入influxdb。本小节写如何将java应用相关指标抓出来写入influxdb,没什么新鲜的还是采用拿来主义借助jmx

配置jmx

https://blog.csdn.net/yue530tomtom/article/details/80805412 这里有
https://blog.csdn.net/yue530tomtom/article/details/80355724 包括obj、attr获取

启动相关java应用

JMXtrans

下载

http://central.maven.org/maven2/org/jmxtrans/jmxtrans/

配置

创建配置文件json或者yaml,以json为例
更多更详细的配置可以参考jmxtrans wiki

{
  "servers" : [ { 
    "port" : "8999",
    "host" : "10.255.254.31",
    "queries" : [ { 
    "obj" : "java.lang:type=Memory",
    "attr" : [ "HeapMemoryUsage" ],
    "resultAlias":"RenameHeapMemoryUsage",
    "outputWriters" : [ { 
        "@class" : "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
        "url" : "http://10.255.254.25:8086/",
        "username" : "lingyue",
        "password" : "123456",
        "database" : "testJmx"
      } ] 
    },  
    {   
    "obj" : "java.lang:type=Memory",
    "attr" : [ "NonHeapMemoryUsage" ],
    "resultAlias":"RenameNonHeapMemoryUsage",
    "outputWriters" : [ { 
        "@class" : "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
        "url" : "http://10.255.254.25:8086/",
        "username" : "lingyue",
        "password" : "123456",
        "database" : "testJmx"
      } ] 
    } ] 
  } ] 
}

查看jmxtrans帮助

D:\下载>java -jar jmxtrans-270-all.jar --help
Usage: <main class> [options]
  Options:
    -a, --additional-jars

      Default: []
    --config
      global jmxtrans configuration file
    -c, --continue-on-error
      If it is false, then JmxTrans will stop when one of the JSON
      configuration file is invalid. Otherwise, it will just print an error
      and continue processing.
      Default: false
    -h, --help

    -j, --json-directory

    -f, --json-file

    -q, --quartz-properties-file
      The Quartz server properties.
    --query-processor-executor-pool-size
      Number of threads used to process queries.
      Default: 10
    --query-processor-executor-work-queue-capacity
      Size of the query work queue
      Default: 100000
    --result-processor-executor-pool-size
      Number of threads used to process results
      Default: 10
    --result-processor-executor-work-queue-capacity
      Size of the result work queue
      Default: 100000
    -e, --run-endlessly
      If this is set, then this class will execute the main() loop and then
      wait 60 seconds until running again.
      Default: false
    -s, --run-period-in-seconds
      The seconds between server job runs.
      Default: 60
    --use-separate-executors
      If this set every server node will be handed by separate executor.
      Default: false
D:\下载>

运行jmxtrans

D:\下载>java -jar jmxtrans-270-all.jar -f "D:\csdn\jmxtrans.json"
2018-09-18 15:32:14 [main] INFO  org.quartz.impl.StdSchedulerFactory - Using default implementation for ThreadExecutor
2018-09-18 15:32:14 [main] INFO  o.quartz.core.SchedulerSignalerImpl - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2018-09-18 15:32:14 [main] INFO  org.quartz.core.QuartzScheduler - Quartz Scheduler v.1.8.6 created.
2018-09-18 15:32:14 [main] INFO  org.quartz.simpl.RAMJobStore - RAMJobStore initialized.
2018-09-18 15:32:14 [main] INFO  org.quartz.core.QuartzScheduler - Scheduler meta-data: Quartz Scheduler (v1.8.6) 'ServerScheduler' with instanceId 'A06P-A918547D1537255934537'
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.

2018-09-18 16:08:43 [main] INFO  org.quartz.impl.StdSchedulerFactory - Quartz scheduler 'ServerScheduler' initialized from an externally opened InputStream.
2018-09-18 16:08:43 [main] INFO  org.quartz.impl.StdSchedulerFactory - Quartz scheduler version: 1.8.6
2018-09-18 16:08:43 [main] INFO  org.quartz.core.QuartzScheduler - JobFactory set to: com.googlecode.jmxtrans.guice.GuiceJobFactory@bae7dc0
2018-09-18 16:08:43 [main] INFO  c.googlecode.jmxtrans.JmxTransformer - Starting Jmxtrans on : D:\csdn\jmxtrans.json
2018-09-18 16:08:43 [main] INFO  org.quartz.core.QuartzScheduler - Scheduler ServerScheduler_$_A06P-A918547D1537258123115 started.
2018-09-18 16:08:43 [main] DEBUG c.g.j.m.output.InfluxDbWriterFactory - Result Tags to write set to: [ResultAttribute(name=typeName), ResultAttribute(name=objDomain), ResultAttribute(name=className), ResultAttribute(name=attributeName)]
2018-09-18 16:08:43 [main] DEBUG c.g.j.m.output.InfluxDbWriterFactory - Connecting to url: http://10.255.254.25:8086/ as: username: lingyue
2018-09-18 16:08:43 [main] DEBUG c.g.j.m.output.InfluxDbWriterFactory - Result Tags to write set to: [ResultAttribute(name=typeName), ResultAttribute(name=objDomain), ResultAttribute(name=className), ResultAttribute(name=attributeName)]
2018-09-18 16:08:43 [main] DEBUG c.g.j.m.output.InfluxDbWriterFactory - Connecting to url: http://10.255.254.25:8086/ as: username: lingyue
2018-09-18 16:08:43 [main] DEBUG c.g.jmxtrans.ConfigurationParser - Loaded file: D:\csdn\jmxtrans.json
2018-09-18 16:08:43 [main] DEBUG c.googlecode.jmxtrans.JmxTransformer - Scheduled job: 10.255.254.31:8999-691317545800932-9828169924 for server: Server(pid=null, host=10.255.254.31, port=8999, url=service:jmx:rmi:///jndi/rmi://10.255.254.31:8999/jmxrmi, cronExpression=null, numQueryThreads=0)
2018-09-18 16:08:47 [ServerScheduler_Worker-1] DEBUG c.googlecode.jmxtrans.jobs.ServerJob - +++++ Started server job: Server(pid=null, host=10.255.254.31, port=8999, url=service:jmx:rmi:///jndi/rmi://10.255.254.31:8999/jmxrmi, cronExpression=null, numQueryThreads=0)
2018-09-18 16:08:47 [ServerScheduler_Worker-1] DEBUG c.googlecode.jmxtrans.jobs.ServerJob - +++++ Finished server job: Server(pid=null, host=10.255.254.31, port=8999, url=service:jmx:rmi:///jndi/rmi://10.255.254.31:8999/jmxrmi, cronExpression=null, numQueryThreads=0)
2018-09-18 16:08:47 [jmxtrans-query-0] DEBUG com.googlecode.jmxtrans.model.Query - Executing queryName [java.lang:type=Memory] from query [Query(objectName=java.lang:type=Memory, keys=[], attr=[HeapMemoryUsage], typeNames=[], resultAlias=RenameHeapMemoryUsage, useObjDomainAsKey=false, allowDottedKeys=false, useAllTypeNames=false, outputWriterInstances=[com.googlecode.jmxtrans.model.output.support.ResultTransformerOutputWriter@1a4b6fd8])]
2018-09-18 16:08:47 [jmxtrans-query-1] DEBUG com.googlecode.jmxtrans.model.Query - Executing queryName [java.lang:type=Memory] from query [Query(objectName=java.lang:type=Memory, keys=[], attr=[NonHeapMemoryUsage], typeNames=[], resultAlias=RenameNonHeapMemoryUsage, useObjDomainAsKey=false, allowDottedKeys=false, useAllTypeNames=false, outputWriterInstances=[com.googlecode.jmxtrans.model.output.support.ResultTransformerOutputWriter@7c1398e9])]
2018-09-18 16:08:48 [jmxtrans-result-1] DEBUG c.g.j.model.output.InfluxDbWriter - Query result: Result(attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[committed], value=701497344, epoch=1537258127953, keyAlias=RenameHeapMemoryUsage)
2018-09-18 16:08:48 [jmxtrans-result-0] DEBUG c.g.j.model.output.InfluxDbWriter - Query result: Result(attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[committed], value=80150528, epoch=1537258127953, keyAlias=RenameNonHeapMemoryUsage)
2018-09-18 16:08:48 [jmxtrans-result-1] DEBUG c.g.j.model.output.InfluxDbWriter - Point: Point [name=RenameHeapMemoryUsage, time=1537258127953, tags={attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory}, precision=MILLISECONDS, fields={HeapMemoryUsage_committed=701497344, _jmx_port=8999}]
2018-09-18 16:08:48 [jmxtrans-result-0] DEBUG c.g.j.model.output.InfluxDbWriter - Point: Point [name=RenameNonHeapMemoryUsage, time=1537258127953, tags={attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory}, precision=MILLISECONDS, fields={NonHeapMemoryUsage_committed=80150528, _jmx_port=8999}]
2018-09-18 16:08:48 [jmxtrans-result-1] DEBUG c.g.j.model.output.InfluxDbWriter - Query result: Result(attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[init], value=526385152, epoch=1537258127953, keyAlias=RenameHeapMemoryUsage)
2018-09-18 16:08:48 [jmxtrans-result-0] DEBUG c.g.j.model.output.InfluxDbWriter - Query result: Result(attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[init], value=2555904, epoch=1537258127953, keyAlias=RenameNonHeapMemoryUsage)
2018-09-18 16:08:48 [jmxtrans-result-1] DEBUG c.g.j.model.output.InfluxDbWriter - Point: Point [name=RenameHeapMemoryUsage, time=1537258127953, tags={attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory}, precision=MILLISECONDS, fields={HeapMemoryUsage_init=526385152, _jmx_port=8999}]
2018-09-18 16:08:48 [jmxtrans-result-0] DEBUG c.g.j.model.output.InfluxDbWriter - Point: Point [name=RenameNonHeapMemoryUsage, time=1537258127953, tags={attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory}, precision=MILLISECONDS, fields={NonHeapMemoryUsage_init=2555904, _jmx_port=8999}]
2018-09-18 16:08:48 [jmxtrans-result-1] DEBUG c.g.j.model.output.InfluxDbWriter - Query result: Result(attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[max], value=7478968320, epoch=1537258127953, keyAlias=RenameHeapMemoryUsage)
2018-09-18 16:08:48 [jmxtrans-result-0] DEBUG c.g.j.model.output.InfluxDbWriter - Query result: Result(attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[max], value=-1, epoch=1537258127953, keyAlias=RenameNonHeapMemoryUsage)
2018-09-18 16:08:48 [jmxtrans-result-1] DEBUG c.g.j.model.output.InfluxDbWriter - Point: Point [name=RenameHeapMemoryUsage, time=1537258127953, tags={attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory}, precision=MILLISECONDS, fields={HeapMemoryUsage_max=7478968320, _jmx_port=8999}]
2018-09-18 16:08:48 [jmxtrans-result-0] DEBUG c.g.j.model.output.InfluxDbWriter - Point: Point [name=RenameNonHeapMemoryUsage, time=1537258127953, tags={attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory}, precision=MILLISECONDS, fields={NonHeapMemoryUsage_max=-1, _jmx_port=8999}]
2018-09-18 16:08:48 [jmxtrans-result-1] DEBUG c.g.j.model.output.InfluxDbWriter - Query result: Result(attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[used], value=401319400, epoch=1537258127953, keyAlias=RenameHeapMemoryUsage)
2018-09-18 16:08:48 [jmxtrans-result-0] DEBUG c.g.j.model.output.InfluxDbWriter - Query result: Result(attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[used], value=76808512, epoch=1537258127953, keyAlias=RenameNonHeapMemoryUsage)
2018-09-18 16:08:48 [jmxtrans-result-1] DEBUG c.g.j.model.output.InfluxDbWriter - Point: Point [name=RenameHeapMemoryUsage, time=1537258127953, tags={attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory}, precision=MILLISECONDS, fields={HeapMemoryUsage_used=401319400, _jmx_port=8999}]
2018-09-18 16:08:48 [jmxtrans-result-0] DEBUG c.g.j.model.output.InfluxDbWriter - Point: Point [name=RenameNonHeapMemoryUsage, time=1537258127953, tags={attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory}, precision=MILLISECONDS, fields={NonHeapMemoryUsage_used=76808512, _jmx_port=8999}]

……

默认60s收集一次~

查看influxdb数据库

> show databases
name: databases
name
----
_internal
graphite
> show databases
name: databases
name
----
_internal
graphite
testJmx
> use testJmx
Using database testJmx
> show measurements
name: measurements
name
----
RenameHeapMemoryUsage
RenameNonHeapMemoryUsage
> select * from RenameHeapMemoryUsage
name: RenameHeapMemoryUsage
time                HeapMemoryUsage_committed HeapMemoryUsage_init HeapMemoryUsage_max HeapMemoryUsage_used _jmx_port attributeName   className                 hostname      objDomain typeName
----                ------------------------- -------------------- ------------------- -------------------- --------- -------------   ---------                 --------      --------- --------
1537258127953000000 701497344                 526385152            7478968320          401319400            8999      HeapMemoryUsage sun.management.MemoryImpl 10.255.254.31 java.lang type=Memory
> 

附录

当然不止这一种方法,还可以用collectd的插件GenericJMX或者collectd-fast-jmx在此简单介绍
collectd有丰富的插件可以使用,且collectd插件的安装比较简单,下载jar包,在配置文件中添加相关配置就可以了。

vim collectd.conf

添加相应的配置部分 GenericJMX 参考collectd-fast-jmx 参考

~又完成一部分

性能测试平台粗略框架
influxdb基础—介绍和配置
jmeter将统计结果写入influxdb
telegraf将数据写入influxdb
将jmx指标写入influxdb
jenkins创建一个jmeter任务
grafana读取influxdb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值