Telegraf - inputs.procstat pgrep 插件问题
Telegraf - inputs.procstat pgrep plugin issue
Telegraf v1.0.1
启用 [[inputs.procstat]][后,我再也看不到 telegraf[._](树)指标了=39=] 插件.
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 =
方法,如果使用 exe =
方法,则 pgrep <executable>
。
完整的 /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"
好的。似乎这是一个 OPEN 错误。
带有 [[inputs.procstat]] 插件条目的 Telegraf 如果在一个文件中只有 一个 插件则不会呕吐.
如果您指定多个条目,即使那些 exe = <executables_processes>
是 运行,Telegraf 将开始吐出这些错误(PS:它不会停止 Telegraf 服务的工作).
为了修复错误,我是这样做的:
[[inputs.procstat]]
exe = "telegraf|.*"
prefix = "pgrep_serviceprocess"
现在,由于 pgrep 用于 Telegraf 的 [[inputs.procstat]] 插件,它将在 OS 级别执行此操作: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.x.x" 指标不可用。那是由于一个单独的文件吗?我不确定。但是,我可以看到 procstat.x.x
度量树,但 telegraf.x.x
度量树现在不可见。
或更好,
也可以用:
[[inputs.procstat]]
pattern = "."
prefix = "pgrep_serviceprocess"
上面的代码可以做到:pgrep -f "."
其中模式是 .
(在机器上捕捉所有 processs/cmd/service 运行)。
OR(但以下不是可扩展的解决方案,因为您必须知道针对哪个用户。在某些情况下,Jenkins 可能 运行 使用 jenkins
以外的用户)。
[[inputs.procstat]]
user = "jenkins"
prefix = "pgrep_serviceprocess"
上面的代码可以做到:pgrep -u "jenkins"
用户所在的位置 jenkins
(在机器上每 processs/cmd/service 运行 捕获所有内容)。
要检查jenkins
是否为运行或enhanceio是否为运行,您也可以使用[[inputs.exec]]
插件。我只是使用了:[[inputs.filestat]]
插件,当我为这两个工具查找 pid 文件时它起作用了。 https://github.com/influxdata/telegraf/tree/master/plugins/inputs/filestat
Telegraf v1.0.1
启用 [[inputs.procstat]][后,我再也看不到 telegraf[._](树)指标了=39=] 插件.
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 =
方法,如果使用 exe =
方法,则 pgrep <executable>
。
完整的 /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"
好的。似乎这是一个 OPEN 错误。
带有 [[inputs.procstat]] 插件条目的 Telegraf 如果在一个文件中只有 一个 插件则不会呕吐.
如果您指定多个条目,即使那些 exe = <executables_processes>
是 运行,Telegraf 将开始吐出这些错误(PS:它不会停止 Telegraf 服务的工作).
为了修复错误,我是这样做的:
[[inputs.procstat]]
exe = "telegraf|.*"
prefix = "pgrep_serviceprocess"
现在,由于 pgrep 用于 Telegraf 的 [[inputs.procstat]] 插件,它将在 OS 级别执行此操作: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.x.x" 指标不可用。那是由于一个单独的文件吗?我不确定。但是,我可以看到 procstat.x.x
度量树,但 telegraf.x.x
度量树现在不可见。
或更好,
也可以用:
[[inputs.procstat]]
pattern = "."
prefix = "pgrep_serviceprocess"
上面的代码可以做到:pgrep -f "."
其中模式是 .
(在机器上捕捉所有 processs/cmd/service 运行)。
OR(但以下不是可扩展的解决方案,因为您必须知道针对哪个用户。在某些情况下,Jenkins 可能 运行 使用 jenkins
以外的用户)。
[[inputs.procstat]]
user = "jenkins"
prefix = "pgrep_serviceprocess"
上面的代码可以做到:pgrep -u "jenkins"
用户所在的位置 jenkins
(在机器上每 processs/cmd/service 运行 捕获所有内容)。
要检查jenkins
是否为运行或enhanceio是否为运行,您也可以使用[[inputs.exec]]
插件。我只是使用了:[[inputs.filestat]]
插件,当我为这两个工具查找 pid 文件时它起作用了。 https://github.com/influxdata/telegraf/tree/master/plugins/inputs/filestat