Telegraf v1.0.1 ( git:master 26acdc9231efde105510fe5df3da7519bc4f42f7 )
Telegraf服务成功运行sudo service telegraf status
显示telegraf is running [OK]
。
我使用基于Wavefront的SaaS监控解决方案来显示Telegraf数据或设置各种其他内容(警报,仪表板)..它可以工作。
概述: 当您安装Telegraf时,它会在 /etc/telegraf/telegraf.conf 中创建其主配置文件,用户可以将其他配置放在 /etc/telegraf/telegraf.d 下/*.conf(files)。
我有 /etc/telegraf/telegraf.d/extra-inputs-plugins.conf ,在这个文件中,我有以下内容(如你所见,它使用{ {3}})以及以下配置:
## Telegraf filestat plugin
[[inputs.filestat]]
files = ["/var/run/*/*.pid","/var/run/*.pid"]
在某些数据库服务器上,我安装了EnhanceIO
(有关详细信息,请查看此处:filestat inputs plugin
安装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/**/**
)但它只是没有&#39 ; t捕获/ proc / enhanceio树下的任何文件。
为什么当我尝试上述模式时,filestat插件的SUPER GLOB模式根本不起作用?
如何让filestat插件捕获/ proc树下的所有文件?
PS :我知道如果我想在该目录下捕获/proc/enhanceio/data_cache/*
文件(仅在该级别),则config
将有效。
答案 0 :(得分:1)
根据Cameron Sparr对此的评论和测试,她无法通过以下示例重现上述情况,但我在帖子中提到的示例也是有效的,因为没有捕获超级水滴模式。
根据她的评论,似乎是:/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