EnhanceIO Telegraf `filestat` 插件 - Super GLOB 模式不起作用 - 使 telegraf 递归查找所有文件

EnhanceIO Telegraf `filestat` plugin - Super GLOB pattern not working - Make telegraf recursively look for all files

Telegraf v1.0.1 (git: master 26acdc9231efde105510fe5df3da7519bc4f42f7)

Telegraf 服务 运行ning 成功 sudo service telegraf status 显示 telegraf is running [OK]

我正在使用 Wavefront 基于 SaaS 的监控解决方案来显示 Telegraf 数据或设置各种其他内容(警报、仪表板)。它有效。

概览: 当您安装 Telegraf 时,它会在 /etc/telegraf/telegraf.conf 处创建其主要配置文件,用户可以将其他配置放在 /etc/telegraf/telegraf.d[ 下=76=]/*.conf(文件).

我有 /etc/telegraf/telegraf.d/extra-inputs-plugins.conf 并且在这个文件中,我有以下内容(如您所见,它使用 filestat inputs plugin) 并且以下配置有效:

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

在一些数据库服务器上,我安装了 EnhanceIO(更多信息请看这里:https://github.com/stec-inc/EnhanceIO

安装 EnhanceIO 后,您将获得如下文件夹结构:

ubuntu@MyTestCluster-1a-db2-i-0cf6u98b136b211ba:~$ find /proc/enhanceio
/proc/enhanceio
/proc/enhanceio/data_cache
/proc/enhanceio/data_cache/config
/proc/enhanceio/data_cache/io_hist
/proc/enhanceio/data_cache/errors
/proc/enhanceio/data_cache/stats
/proc/enhanceio/version

要为 /proc/enhanceio/data_cache/config 文件将 Telegraf 的 filestat 插件配置为 catch/look,我可以在我的配置中添加那个或 /proc/enhanceio/data_cache/*(但是做这样,解决方案将无法扩展,即如果我希望 telegraf 选择 /proc 文件夹下的所有文件怎么办。

插件文档/评论部分说:

  ## These accept standard unix glob matching rules, but with the addition of
  ## ** as a "super asterisk".

所以,我尝试了以下配置来查找每个文件(递归):

[[inputs.filestat]]
  files = ["/var/run/*/*.pid","/var/run/*.pid","/proc/*"]

上面的结果我运行时输出如下:$ telegraf --config-directory=/etc/telegraf -test|grep filestat|grep -v '/var/run/'|grep enhance(其实/proc/enhanceio是一个文件夹)

> filestat,host=MyTestCluster-1a-db2-i-0cf6u98b136b211ba,file=/proc/enhanceio exists=1i,size_bytes=0i 1485548956000000000

然后,我尝试使用 ** 方法,但我得到了 NOTHING?

[[inputs.filestat]]
  files = ["/var/run/*/*.pid","/var/run/*.pid","/proc/**"]

$ telegraf --config-directory=/etc/telegraf -test|grep filestat|grep -v '/var/run/'|grep enhance
2017/01/27 20:31:38 I! Using config file: /etc/telegraf/telegraf.conf
$

我尝试了几乎所有 glob 模式(例如:/proc/enhanceio/*/*/proc/enhanceio/*/**/proc/enhanceio/**/*/proc/enhanceio/**/**)但是它只是没有捕获 /proc/enhanceio 树下的任何文件。

为什么当我尝试上述模式时,filestat 插件的 SUPER GLOB 模式根本不起作用?

如何让 filestat 插件捕获 /proc 树下的所有文件?

PS:我知道如果我想在该目录下捕获 config 文件(就在那个级别),我知道给 /proc/enhanceio/data_cache/* 会起作用).

根据 Cameron Sparr 对此的评论和测试,她无法使用以下示例重现上述情况,但我在 post 中提到的示例在未捕捉到超级 glob 模式方面也是有效的.

根据她的评论,好像是:/proc is a very special "filesystem" that is actually a "file" mapping to particular kernel parameters and metrics. Glob and path matching may not work in this area as you might expect.

% ls -R /tmp/test
/tmp/test:
enhance/  foo.log

/tmp/test/enhance:
bar.log  nested/

/tmp/test/enhance/nested:
foo.file
then with this config:

[[inputs.filestat]]
  files = ["/tmp/test/**.log", "/tmp/test/**.file"]
  ## If true, read the entire file and calculate an md5 checksum.
  md5 = false
I was able to find all files

% telegraf --config ~/gd/ws/telegraf.conf --input-filter filestat --output-filter discard --test
* Plugin: inputs.filestat, Collection 1
> filestat,file=/tmp/test/enhance/bar.log,host=tyrion size_bytes=4i,exists=1i 1485988684000000000
> filestat,file=/tmp/test/foo.log,host=tyrion size_bytes=0i,exists=1i 1485988684000000000
> filestat,file=/tmp/test/enhance/nested/foo.file,host=tyrion exists=1i,size_bytes=0i 1485988684000000000