Telegraf-inputs.procstat pgrep插件问题
Telegraf v1.0.1 启用[[inputs.procstat]]插件后,我再也看不到telegraf[.\u](树)度量了 Telegraf已成功安装。进程正在运行。我基本上使用输入插件和输出插件的正常设置 这就是我得到的:Telegraf-inputs.procstat pgrep插件问题,grep,telegraf,telegraf-inputs-plugin,telegraf-plugins,procstat,Grep,Telegraf,Telegraf Inputs Plugin,Telegraf Plugins,Procstat,Telegraf v1.0.1 启用[[inputs.procstat]]插件后,我再也看不到telegraf[.\u](树)度量了 Telegraf已成功安装。进程正在运行。我基本上使用输入插件和输出插件的正常设置 这就是我得到的: ubuntu@jenkins:/tmp/giga_aks_testing/ansible$ grep -C 2 jenkins /etc/telegraf/telegraf.d/telegraf-custom-host-services-processes.con
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]]如果使用pattern=
方法,并且如果使用exe=
方法,则插件将pgrep
用于其逻辑
完整的/etc/telegraf/telegraf.d/telegraf custom host services processs.conf文件是:
[[inputs.procstat]]
exe = "jenkins"
prefix = "pgrep_serviceprocess"
[[inputs.procstat]]
exe = "telegraf"
prefix = "pgrep_serviceprocess"
[[inputs.procstat]]
exe = "sshd"
prefix = "pgrep_serviceprocess"
嗯。似乎这是一个开放的错误 如果一个文件中只有一个插件,则带有[[inputs.procstat]]插件条目的Telegraf不会呕吐 如果指定多个条目,即使这些
exe=
正在运行,Telegraf也会开始吐出这些错误(PS:它不会停止Telegraf服务的工作)
为了修复错误,我做了以下工作:
[[inputs.procstat]]
exe = "telegraf|.*"
prefix = "pgrep_serviceprocess"
[[inputs.procstat]]
pattern = "."
prefix = "pgrep_serviceprocess"
现在,由于pgrep用于Telegraf的[[inputs.procstat]]插件,它将在操作系统级别执行此操作:pgrep“Telegraf |..*”
现在,您也可以只给出exe=“.”“
(最简单)或类似的exe=“.*”
,但实际上,要找出谁真正在系统上运行的所有进程上执行grep并不容易
注意:*
(将找到机器上运行的每个进程),因此请使用它,直到我们得到适当的修复为止
相关源代码Github文件:
相关问题:
我仍然找不到,为什么在启用[[inputs.procstat]]
input后“telegraf.x.x”指标不可用。那是因为一个单独的文件吗?我不确定。但是,我可以看到procstat.x.x
度量树,但是telegraf.x.x
度量树现在不可见
或者更好
也可以使用:
[[inputs.procstat]]
exe = "telegraf|.*"
prefix = "pgrep_serviceprocess"
[[inputs.procstat]]
pattern = "."
prefix = "pgrep_serviceprocess"
上面的代码将执行:pgrep-f”。
其中模式是
(捕获机器上运行的所有进程/cmd/服务)
或者(但以下不是可扩展的解决方案,因为您必须知道针对哪个用户。在某些框中,Jenkins可能使用的用户不是Jenkins
)
上面的操作将执行:pgrep-u“jenkins”
其中用户是jenkins
(捕捉机器上运行的所有进程/cmd/服务)
要检查jenkins
是否正在运行,或者enhanceio是否正在运行,您也可以使用[[inputs.exec]]
插件。我只是简单地使用了:[[inputs.filestat]]
插件,当我查找这两个工具的pid文件时,它就工作了