Categraf插件procstat-采集jvm

前言

categraf采集器如何监控java程序呢,之前这方面的文档比较少,我从官网找到了这篇JVM监控 打算按照这里说明实践一下进程级监控的方式。

procstat插件

这个procstat插件是怎么实现呢,‘如果配置了 jvm 这一项,会通过 jstat 采集一些 jvm 相关的指标,前提是机器上得有 jstat 命令可以用。’ 也就是用的jstat命令,这个是啥,还有其他命令吗,经我查找是有的,还挺多命令可选,详细如下表所示。

工具名称主要功能功能描述优点缺点
jps进程状态查询列出正在运行的Java进程及其主类简单易用仅能列出Java进程的基本信息
jstat虚拟机统计监视收集并显示虚拟机各种运行数据,如垃圾回收时间、堆使用率、类加载数量等数据实时性好,能够实时反映虚拟机的状态信息只能查看当前虚拟机数据,不能进行历史数据的查找
jstack线程快照生成Java应用程序线程的转储快照,帮助用户进行线程问题的排查可以查看具体线程的状态、堆栈信息等无法监控虚拟机以外的信息,如系统负载等
jmap内存映像生成Java堆转储快照,帮助用户进行内存问题的诊断可以对Java堆进行快速分析定位无法实时监控Java应用程序的状态信息
jcmd通用命令行工具操作正在运行的Java进程,包括获取JVM运行状态信息、执行GC、打印线程Dump等等多种操作功能比较丰富,支持多种操作需要以root或JVM所属用户的权限运行

我之前通常程序运行后可以通过ps -ef | grep java看到进程信息,不过catgraf用的是pgrep命令,所以可以用pgrep java看到相关信息,

pgrep java
9278

当得到这个输出我其实是有一个疑问的,这里怎么只有一个呢,感觉不对呀,我印象中idea用的是jvm,怎么没有呢,原来是它改名了,怎么可以看全呢?答案是上面表格里的jps命令就可以。

jps -l
80673
14673 jdk.jcmd/sun.tools.jps.Jps
9278 ./xxxx.jar

进程号80673,就是idea的进程,至于如何改进程名称这部分网上有很多分享,除了程序去改,还有用软链接方式来实现改名的方式,大家可以自行查找并实践。

剩下内容就很简单,按说明改配置文件

vi conf/input.procstat/procstat.toml
# # collect interval
 interval = 15

# [[instances]]
# # executable name (ie, pgrep <search_exec_substring>)
 search_exec_substring = "java"

# # pattern as argument for pgrep (ie, pgrep -f <search_cmdline_substring>)
# search_cmdline_substring = "n9e server"

# # windows service name
# search_win_service = ""

# # search process with specific user, option with exec_substring or cmdline_substring
# search_user = ""

# # append some labels for series
 labels = { region="JVM", product="n9e" }

# # interval = global.interval * interval_times
# interval_times = 1

# # mode to use when calculating CPU usage. can be one of 'solaris' or 'irix'
 mode = "irix"

# sum of threads/fd/io/cpu/mem, min of uptime/limit
gather_total = true

# will append pid as tag
gather_per_pid = false

#  gather jvm metrics only when jstat is ready
 gather_more_metrics = [
#     "threads",
#     "fd",
#     "io",
#     "uptime",
     "cpu",
     "mem",
#     "limit",
     "jvm"
 ]

上面是个错误的配置,希望你一下子能发现,不至于和我一样掉到自己挖的坑里:)
我自信满满的准备测试一把

./categraf --test --inputs procstat
 I! tracing disabled
 main.go:128: I! runner.binarydir: /Users/xxx/Tarball/categraf
 main.go:129: I! runner.hostname: bogon
 main.go:130: I! runner.fd_limits: (soft=61440, hard=unlimited)
 main.go:131: I! runner.vm_limits: (soft=unlimited, hard=unlimited)
 provider_manager.go:61: I! use input provider: [local]
 traces_agent.go:19: I! traces agent disabled!
 prometheus_agent.go:19: I! prometheus scraping disabled!
 ibex_agent.go:19: I! ibex agent disabled!
 agent.go:39: I! agent starting
 agent.go:47: I! [*agent.MetricsAgent] started
 agent.go:50: I! agent started

本来我刚想吐槽Categraf,是不是有啥问题,再细看配置,好嘛不怪Categraf没反应,忙活半天我配置改错了。

错误地方就是# [[instances]],另外instances代表一个实例,可以配置多个。
改好配置后就可以看到输出了。

11:49:53 procstat_lookup_count agent_hostname=bogon product=n9e region=JVM search_string=java 1
11:49:53 procstat_cpu_usage_total agent_hostname=bogon product=n9e region=JVM search_string=java 0
11:49:53 procstat_mem_usage_total agent_hostname=bogon product=n9e region=JVM search_string=java 0.16126633
11:49:53 procstat_jvm_S0U agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 0.0
11:49:53 procstat_jvm_EC agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 126976.0
11:49:53 procstat_jvm_OC agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 133120.0
11:49:53 procstat_jvm_MC agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 14976.0
11:49:53 procstat_jvm_OU agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 2016.0
11:49:53 procstat_jvm_MU agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 14763.8
11:49:53 procstat_jvm_FGCT agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 0.000
11:49:53 procstat_jvm_CGC agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 0
11:49:53 procstat_jvm_S1U agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 5308.2
11:49:53 procstat_jvm_CCSC agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 1984.0
11:49:53 procstat_jvm_CCSU agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 1915.7
11:49:53 procstat_jvm_FGC agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 0
11:49:53 procstat_jvm_GCT agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 0.020
11:49:53 procstat_jvm_CGCT agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 0.000
11:49:53 procstat_jvm_S0C agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 0.0
11:49:53 procstat_jvm_S1C agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 6144.0
11:49:53 procstat_jvm_EU agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 0.0
11:49:53 procstat_jvm_YGC agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 2
11:49:53 procstat_jvm_YGCT agent_hostname=bogon pid=9278 product=n9e region=JVM search_string=java 0.020

参考资料

JVM监控

JVM实战:JVM常用监控工具

procstat

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值