使用:Telegraf v1.0.1
Telegraf插件的文档: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(取决于您是否将_转换为具有.字符),-or只是procstat.service_process.x.x度量。
若要使用exe = "."捕获在机器上运行的任何进程(它将执行pgrep "."操作,并)通过提供process_name=<processes>值查找机器上运行的所有进程;对运行telegraf服务的用户使用-OR,pid_file = /var/run/jenkins/jenkins.pid (注意:如果您对运行telegraf服务的用户具有读取权限),则使用-OR/其他包装器运行的进程;如果您给出了pid_file = /var/run/jenkins/jenkins.pid,如果Jenkins在用户jenkins下运行,并且pid_file = /var/run/jenkins/jenkins.pid文件夹至少没有对pid文件的"r-x“访问+读取"r”访问,那么它将抛出并出错“拒绝权限”。
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/某个包装器之后,所以exe=xxxx在这种情况下不能工作),那么我必须使用pid_file = ...方法,那么我如何让Telegraf使用这个pid_file方法获得jenkins或nexus等的process_name。
PS:在每个主机上执行chmod -R 775_or_755 /var/run可能不可行。
如果我在/var/ran/jenkins文件夹授予755权限,将644权限授予jenkins.pid文件,则权限错误将消失。在此之后,我尝试使用度量:针对进程的procstat.service.process.cpu.usage (即process_name="jenkins"),但它没有找到jenkins的值。我错过什么了吗?
发布于 2017-02-22 07:13:34
在/etc/telegraf/telgraf.d/omeFile.conf中添加以下配置,并使用Ansible's file module: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.https://stackoverflow.com/questions/41576171
复制相似问题