Плагин EnhanceIO Telegraf `filestat` - шаблон Super GLOB не работает - заставить телеграф рекурсивно искать все файлы
Telegraf v1.0.1 (git: master 26acdc9231efde105510fe5df3da7519bc4f42f7)
Сервис Telegraf успешно работает sudo service telegraf status
шоу telegraf is running [OK]
,
Я использую решение мониторинга SaaS на основе Wavefront для показа данных Telegraf или для настройки различных других вещей (оповещения, информационные панели)... это работает.
Обзор: Когда вы устанавливаете Telegraf, он создает основной конфигурационный файл в /etc/telegraf/telegraf.conf, и пользователь может поместить другие конфигурации в /etc/telegraf/telegraf.d /*.conf (файлы).
У меня есть /etc/telegraf/telegraf.d/extra-inputs-plugins.conf, и в этом файле у меня есть следующее содержимое (как вы видите, он использует плагин входного файла filestat), и работает следующая конфигурация:
## 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
Чтобы настроить плагин filestat для Telegraf для поиска / поиска /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 / gainio - это папка).
> 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
$
Я попробовал, почти все паттерны глобуса (например: /proc/enhanceio/*/*
, /proc/enhanceio/*/**
, /proc/enhanceio/**/*
или же /proc/enhanceio/**/**
), но он просто не перехватывал никаких файлов в дереве / proc / gainio.
Почему шаблон SUPER GLOB плагина filestat вообще не работал, когда я попробовал вышеуказанные шаблоны?
Как сделать так, чтобы плагин filestat перехватывал все файлы в дереве / proc?
PS: я знаю, что дает /proc/enhanceio/data_cache/*
будет работать, если я хочу поймать config
файл в этом каталоге (только на этом уровне).
1 ответ
Согласно комментарию Кэмерон Спарр и проверке этого, она не смогла воспроизвести вышеописанную ситуацию с помощью следующего примера, но примеры, которые я упоминал в своем посте, были также полезны в том, что они не уловили паттерны super 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