Telegraf - inputs.procstat procstat 插件 - README.md doc - exe,pid_file,命令行模式用户名

Telegraf - inputs.procstat procstat Plugin - README.md doc - exe, pid_file, command line pattern username

使用:Telegraf v1.0.1

Telegraf procstat 插件的文档: https://github.com/influxdata/telegraf/tree/master/plugins/inputs/procstat

我的自定义配置文件:
/etc/telegraf/telegraf.d/my_custom_process_service-telegraf.conf 包含:

[[inputs.procstat]]
  exe = "."
  prefix = "service_process"

[[inputs.procstat]]
  pid_file = "/var/run/jenkins/jenkins.pid"
  prefix = "service_process"

根据语法,以上配置工作正常。这将为我提供指标名称开头的指标:procstat.service.process.xx.xx(取决于您是否将 _ 转换为 . 字符) - 或者只是 procstat.service_process.x.x 指标。

使用 exe = "." 捕获机器上 运行ning 的任何进程(它将执行 pgrep "." 操作并)找到机器上的所有进程 运行ning通过给出 process_name=<processes> 值; -OR 使用 pid_file = /var/run/jenkins/jenkins.pid(注意:前提是您对 运行ning telegraf 服务的用户具有读取权限)对于 运行 在 Java/other 包装器后面的进程;如果你给 pid_file = /var/run/jenkins/jenkins.pid 并且 Jenkins 在用户 jenkins 下 运行ning 并且 /var/run/jenkins 文件夹至少没有“r-x" access + read "r" 访问 pid 文件本身,然后它会抛出关于 "permission denied".

的错误
2017-01-10T18:13:30Z E! Error: procstat getting process, exe: [] pidfile: [/var/run/jenkins/jenkins.pid] pattern: [] user: [] Failed to read pidfile '/var/run/jenkins/jenkins.pid'. Error: 'open /var/run/jenkins/jenkins.pid: permission denied' 

问题:

Telegraf 是否可以在 SUDO 模式下 运行(如果可能)?也就是说,如果我没有 r-x/r 访问权限来读取进程的 PID 文件并假设有很多这样的进程(运行 宁在 Java/some 包装器之后,所以 exe=xxxx 不会t 在这种情况下工作),然后我必须使用 pid_file = ... 方法,然后我如何让 Telegraf 使用此 pid_file 方法来获得 process_name 作为 jenkinsnexus

PS:在每个主机上执行 chmod -R 775_or_755 /var/run 可能不可行。

如果我在 /var/ran/jenkins 文件夹中授予 755 权限并在 jenkins.pid 文件中授予 644 权限,权限错误将消失。在此之后,我尝试使用 metric: procstat.service.process.cpu.usage against process jenkins (即 process_name="jenkins"),但它没有找到 jenkins 作为它的价值。我错过了什么吗?

在 /etc/telegraf/telegraf.d/someFile.conf 中添加了以下配置并修复了使用 Ansible's file module 的权限问题:http://docs.ansible.com/ansible/file_module.html

## Telegraf filestat plugin
[[inputs.filestat]]
  files = ["/var/run/*/*.pid","/var/run/*.pid"]

## To catch all processs. Better than pattern = "."
[[inputs.procstat]]
  exe = "."
  prefix = "pgrep_serviceprocess"

##For catching processes by a user.
## Telegraf will use: pgrep -u <user>
[[inputs.procstat]]
  user = "vagrant"
  prefix = "pgrep_serviceprocess"

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

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

## Add more users or template it out in Ansible.