-
Notifications
You must be signed in to change notification settings - Fork 271
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
procstat监控JVM无法屏蔽掉pid标签,会导致数据图不连续 #1108
Comments
也有个疑问,为啥存在pid会造成数据图不连续,难不成没有指定label格式,将所有线都展示出来了? |
jstat -gc $PID , 可以考虑下,如果有多个java进程,是否需要区分pid ? |
procstat 各个指标都是两种计算:
而jvm没遵循这个规则,只返回了按进程拆分,可以考虑调整。 到目前为止没有人爆出此问题,我这里也有大范围使用procstat,也没有遇到需要将某个服务多个jvm进程的数值加起来看的需求。个人经验上,这功能,做了也不该有人用到才对。 顺带一提,你这两个诉求有冲突性。 |
我没有单独设置label(偷懒),categraf 抓到的 metric: 就靠里面的 search_string=baili.jar 做区分。 我是新手,在学习,我理解, 如果 tag 有变更(重启java导致pid发生变化)就是新的一条指标,所以dashboard就不连续了,曲线凌乱。 ~ 捂脸 ~ |
可能我没表达好:
|
我理解,jstat抓的数据,是按照 search_string=“xxx.jar” 区分进程,就不用pid了。 |
对于 gather_total 理解不对,这个就是按条件筛选出一批进程,将指标汇总,基本是求和。uptime是最大值,jvm没有支持。 categraf属于exporter,它是负责抽取数据的,可以说不需要遵循任何部门的习惯。 终端用户的使用习惯,要用dashboard适配。 其实你遇到的不连续问题,大概率是看板配置的时候,如何确定某批数据属于一条line,做歪了。 [[instances]]
search_cmdline_regexp = "loader.jar"
gather_total = false
gather_per_pid = true
gather_more_metrics = [
"threads",
"fd",
"io",
"uptime",
"cpu",
"mem",
"limit",
"jvm"
]
labels_from_cmdline_reggroup = "--appname=(?P<appName>\\w*).*--serverId=(?P<serverId>\\d*)" 然后看板配置参数:
看板表达式,拿eden区堆使用率举例: Legend: |
而且,稍微多一些的话,这种总览,是一点用没有的。 后边必然是针对功能做通用看板,针对业务拼出基础指标看板 |
好的 ,谢谢大佬, 学习你们的正规玩法,我这个玩法比较小学生了。 |
pid 变化确实是不稳定标签,我想问的是,如果包含xxx.jar 对应是多个进程的场景,这种场景去掉pid 后,会有数值覆盖的情况 |
比如,search string用了 kafka, 那这个台机器上的kafka和 连kafka的client都可能被搜到。 |
让大佬费心了,我就说说我的想法: 这样的Kafka用户特例,或者其他用户的奇葩特例场景, 都需要: 用户可以通过不同的启动参数cmdline,或者部署方式( 避免 Client 和Server在同一台机器~) 来解决。 就像楼上 zzmark 大佬说的, categraf 已经提供了 jstat -gc 来抓取,是科学的/符合 工具平台的做法。 我是Prometheus的初学者,我理解: 单单就 jstat 抓 GC信息来说,计算很简单,就是计算一个百分比。 所以:重启进程pid变化, 导致:趋势图线条新增了一批、旧的逐渐成为历史脏数据,展板趋势图很不友好。 我的结论是: 结论: kongfei 大佬,你看我的理解对不对 :) |
完全去掉对于实现最简单。但是对于配置出来多个pid,不同进程的数据搞到一起更不科学。 所以现在就是如果你的进程数大于1 ,就附加pid,只有一个进程,就不附加pid了。 新版本已经发布,用v0.3.85 跑一下https://github.com/flashcatcloud/categraf/releases/tag/v0.3.85 |
v0.3.85的jstat是否附加pid,完全依赖你配置的 search string了。 |
谢谢大佬,我这就试试 :) |
Relevant config.toml
Logs from categraf
System info
v0.3.82-d0633717eafc21d8e303f7435454eec7ea6aae9f
Docker
No response
Steps to reproduce
procstat_jvm_GCT agent_hostname=bjf-baili-web00.bjf.wande.com pid=24823 search_string=baili.jar 1.447
Expected behavior
Actual behavior
/usr/local/categraf/categraf --test --inputs procstat | grep baili.jar
Additional info
附上截图
No response
The text was updated successfully, but these errors were encountered: