使用:电报 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 = "."
(它将执行pgrep "."
操作并)通过给出process_name=<processes>
值来查找机器上运行的所有进程;- 或使用,pid_file = /var/run/jenkins/jenkins.pid
(注意:如果您对正在运行服务的用户具有读取权限telegraf
)在 Java/其他包装器后面运行的进程;如果您提供pid_file = /var/run/jenkins/jenkins.pid
并且 Jenkins 在用户下运行jenkins
并且/var/run/jenkins文件夹对 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/某些 Wrapper 之后运行,因此exe=xxxx
在这种情况下不起作用),那么我必须使用pid_file = ...
方法,那么如何我让 Telegraf 使用这种pid_file
方法来获取process_name
asjenkins
或nexus
etc。
PS:chmod -R 775_or_755 /var/run
在每台主机上都做可能不可行。
如果我确实在 /var/ran/jenkins 文件夹中授予 755 权限并将 644 授予 jenkins.pid 文件,则权限错误将消失。在此之后,我尝试使用 metric:procstat.service.process.cpu.usage
针对进程jenkins
(即process_name="jenkins"
),但它没有找到jenkins
它的价值。我错过了什么吗?