Плагин 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
Другие вопросы по тегам