首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Telegraf - inputs.procstat procstat插件- README.md doc - exe,pid_file,命令行模式用户名

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

Stack Overflow用户
提问于 2017-01-10 18:48:54
回答 1查看 4.3K关注 0票数 0

使用: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包含:

代码语言:javascript
复制
[[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”访问,那么它将抛出并出错“拒绝权限”。

代码语言:javascript
复制
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方法获得jenkinsnexus等的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的值。我错过什么了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 07:13:34

在/etc/telegraf/telgraf.d/omeFile.conf中添加以下配置,并使用Ansible's file modulemodule.html修复权限问题

代码语言:javascript
复制
## 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.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41576171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档