1

电报 v1.0.1

启用[[inputs.procstat]]插件后,我无法再看到telegraf[._](树)指标。

Telegraf 安装成功。进程正在运行。我几乎使用输入插件和输出插件的正常设置。

这就是我得到的:

ubuntu@jenkins:/tmp/giga_aks_testing/ansible$ grep -C 2 jenkins /etc/telegraf/telegraf.d/telegraf-custom-host-services-processes.conf; echo ; ps -eAf|grep jenkins; echo; pgrep -f jenkins; echo; cat -n /var/log/telegraf/telegraf.log; echo date; echo; ps -eAf|grep telegraf; echo ; sudo service telegraf status

[[inputs.procstat]]
  exe = "jenkins"
  prefix = "pgrep_serviceprocess"


root      2875  3685  0  2016 pts/3    00:00:00 sudo su jenkins
root      2876  2875  0  2016 pts/3    00:00:00 su jenkins
jenkins   2877  2876  0  2016 pts/3    00:00:00 bash
jenkins  11645     1  0  2016 ?        00:00:01 /usr/bin/daemon --name=jenkins --inherit --env=JENKINS_HOME=/var/lib/jenkins --output=/var/log/jenkins/jenkins.log --pidfile=/var/run/jenkins/jenkins.pid -- /usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
jenkins  11647 11645  0  2016 ?        05:33:22 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
ubuntu   21973 26885  0 06:57 pts/0    00:00:00 grep --color=auto jenkins

2875
2876
11645
11647

     1  2017-01-07T06:54:00Z E! Error: procstat getting process, exe: [jenkins] pidfile: [] pattern: [] user: [] Failed to execute /usr/bin/pgrep. Error: 'exit status 1' 
     2  2017-01-07T06:55:00Z E! Error: procstat getting process, exe: [jenkins] pidfile: [] pattern: [] user: [] Failed to execute /usr/bin/pgrep. Error: 'exit status 1' 
     3  2017-01-07T06:56:00Z E! Error: procstat getting process, exe: [jenkins] pidfile: [] pattern: [] user: [] Failed to execute /usr/bin/pgrep. Error: 'exit status 1' 
     4  2017-01-07T06:57:00Z E! Error: procstat getting process, exe: [jenkins] pidfile: [] pattern: [] user: [] Failed to execute /usr/bin/pgrep. Error: 'exit status 1' 
date

telegraf 19336     1  0 05:45 pts/0    00:00:04 /usr/bin/telegraf -pidfile /var/run/telegraf/telegraf.pid -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraftelegraf.d
ubuntu   21977 26885  0 06:57 pts/0    00:00:00 grep --color=auto telegraf

telegraf Process is running [ OK ]
ubuntu@jenkins:/tmp/giga_aks_testing/ansible$ 

为什么,当jenkins进程正在运行并pgrep -f jenkins返回有效结果时,日志文件显示错误。

PS: [[inputs.procstat]]插件pgrep -f <exe_value_pattern>用于它的逻辑,如果pattern =使用方法,pgrep <executable>如果exe =使用方法。

完整的/etc/telegraf/telegraf.d/telegraf-custom-host-services-processes.conf文件是:

[[inputs.procstat]]
  exe = "jenkins"
  prefix = "pgrep_serviceprocess"

[[inputs.procstat]]
  exe = "telegraf"
  prefix = "pgrep_serviceprocess"

[[inputs.procstat]]
  exe = "sshd"
  prefix = "pgrep_serviceprocess"
4

1 回答 1

2

好的。似乎这是一个开放的错误。

如果一个文件中只有一个插件,则带有[[inputs.procstat]]插件条目的 Telegraf 不会出错。

如果您指定多个条目,即使它们exe = <executables_processes>正在运行,Telegraf 也会开始吐出这些错误(PS:它不会停止 Telegraf 服务的工作)。

为了修复错误,这就是我所做的:

[[inputs.procstat]]
  exe = "telegraf|.*"
  prefix = "pgrep_serviceprocess"

现在,由于 pgrep 用于 Telegraf 的[[inputs.procstat]]插件,它将在操作系统级别执行此操作:pgrep "telegraf|.*".

现在,您也可以只给出exe = "."(最简单的)或喜欢exe = ".*",但实际上这些并不容易找出谁实际上正在尝试对系统上运行的所有进程执行 grep。

注意:( .*会发现机器上运行的每一个进程),所以在我们得到适当的修复之前使用它。

相关源码Github文件:https ://github.com/influxdata/telegraf/blob/master/plugins/inputs/procstat/procstat.go

相关问题:https ://github.com/influxdata/telegraf/issues/586

我仍然找不到,为什么启用[[inputs.procstat]]输入后“telegraf.xx”指标不可用。是因为单独的文件吗?我不确定。但是,我可以看到procstat.x.x度量树,但telegraf.x.x度量树现在不可见。

或更好,

也可以使用:

[[inputs.procstat]]
  pattern = "."
  prefix = "pgrep_serviceprocess"

以上将做:pgrep -f "."模式在哪里.(捕获所有东西,也就是机器上运行的每个进程/cmd/服务)。

或(但以下不是可扩展的解决方案,因为您必须知道哪个用户。在某些框中,Jenkins 可能正在使用除 之外的用户运行jenkins)。

[[inputs.procstat]]
  user = "jenkins"
  prefix = "pgrep_serviceprocess"

以上将做:pgrep -u "jenkins"用户在哪里jenkins(捕获所有内容,也就是机器上运行的每个进程/cmd/服务)。

要检查是否jenkins正在运行或enhancedio是否正在运行,您也可以使用[[inputs.exec]]插件。我只是使用了:[[inputs.filestat]]插件,当我为这两个工具查找 pid 文件时它就起作用了。https://github.com/influxdata/telegraf/tree/master/plugins/inputs/filestat

于 2017-01-07T08:36:47.903 回答