0

Telegraf v1.0.1 ( git: master 26acdc9231efde105510fe5df3da7519bc4f42f7 )

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

我正在使用 Wavefront 的基于 SaaS 的监控解决方案来显示 Telegraf 数据或设置各种其他东西(警报、仪表板)......它可以工作。

概述:安装 Telegraf 时,它会在/etc/telegraf/telegraf.conf中创建其主配置文件,用户可以将其他配置放在/etc/telegraf/telegraf.d /*.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

要配置 Telegraf 的filestat插件以捕获/查找/proc/enhanceio/data_cache/config文件,我可以添加它或/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

然后,我尝试使用该**方法,但我什么也没得到

[[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/proc/enhanceio/data_cache/* :如果我想config在该目录下(仅在该级别)捕获文件,我知道给予将起作用。

4

1 回答 1

1

根据 Cameron Sparr 对此的评论和测试,她无法通过以下示例重现上述情况,但我在帖子中提到的示例在没有捕捉到超级 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
于 2017-02-06T17:35:12.317 回答