Описание работы коллекторов
Коллекторы используются для сбора или генерации информации. Например, коллектор SNMP собирает информацию по протоколу SNMP, а коллектор event-generator генерирует событие на основании данных, полученных от других коллекторов. Счетчики, к котором подключены коллекторы, могут зависеть друг от друга и передавать собранные данные для обработки между собой. Например, счетчик с коллектором zabbix-active получает данные об объеме свободной памяти, а зависимый от него счетчик с коллектором event-generator генерирует событие в том случае, если свободной памяти осталось слишком мало. Коллекторы являются подключаемыми модулями ALEPIZ. Можно разработать новый коллектор, который будет собирать или генерировать данные. Информация о том, как создать новый коллектор можно найти в справке к действию Collector editor.
Коллекторы могут быть следующих типов:
- Активные коллекторы (active collectors) - Работают постоянно и на основании встроенного алгоритма получают информацию от внешних источников или генерируют новую информацию. Например, zabbix-active получает данные от установленных на серверах Zabbix агентов, timer генерирует события через определенный интервал времени, scheduler - генерирует событие в определенное время, discovery в цикле опрашивает хосты в сети и при получении ответа от хоста генерирует JSON объект с информацией о нем. Для обработки данных, полученных от этих коллекторов, используется выделенный сервер. В некоторых случаях несколько активных коллекторов могут быть объединены внутри одного сервера.
- Пассивные коллекторы (passive collectors) - в случае, если они зависят от активных коллекторов, запускаются только когда срабатывает активный коллектор и выполняется условие для работы пассивного коллектора. Если счетчик с пассивным коллектором ни от кого не зависит, он будет запущен для выполнения один раз при старте системы. Коллектор может собирать информацию с внешних источников или генерировать новую информацию. Пример таких коллекторов: zabbix - сбор данных с Zabbix агентов в пассивном режиме, SNMP - сбор данных по протоколу SNMP, task-runner - запуск задач с действиями. Такие коллекторы подключаются к программному коду потоков, обрабатывающих данные, которые получены от активных коллекторов.
- Выделенные коллекторы (separate collectors) - это симбиоз активных и пассивных коллекторов. Эти коллекторы не имеют алгоритма для самостоятельного сбора данных, поэтому должны зависеть от активных коллекторов. Но для них будет выделен отдельный сервер, как для активных коллекторов и их программный код будет выполняться в выделенном процессе, что позволит создавать глобальные структуры или кэш с данными. Например, это event-generator - генерация событий, запись их в базу данных и отображение их в Dashboard, mssql - коллектор для выполнения запросов к MSSQL, в силу ограничений подключаемых модулей не может быть запущен в отдельном потоке, поэтому необходимо запускать его в отдельном процессе.
Взаимодействие между коллекторами
Счетчики, использующие коллекторы, зависят друг от друга и должны передавать между собой полученные данные.
- Активные коллекторы обычно ни от кого не зависят, поэтому просто получают данные от внешних источников или генерируют их самостоятельно для того, чтобы записать их в базу данных или передать их для обработке другим коллекторам.
- Пассивные коллекторы подключены к программному коду потоков, обрабатывающих данные, которые получены от активных коллекторов. Данные передаются внутри одного процесса и расходы по передаче данных - минимальны.
- Выделенные коллекторы запущены в отдельном процессе. Все потоки всех коллекторов подключатся к процессам с выделенным коллектором и передают ему данные по сети. Расходы по передаче данных в случае использования выделенных коллекторов - максимальны.
Встраивание коллекторов
Код коллектора может быть встроен в исполняемый код сервера или запущен в отдельном потоке для минимизации расходов на его выполнение и предотвращения блокировки основного кода сервера. Для того, чтобы запустить программный код коллектора в отдельном потоке необходимо в файле конфигурации коллектора config.json прописать "runCollectorAsThread": "on". По умолчанию, если эта настройка не прописана, программный код коллектор будет встроен в сервер. Встраивать коллектор в сервер имеет смысл, если коллектор использует модули, которые не позволяют его запускать в отдельном потоке или программный код коллектора на столько простой, что накладные расходы при передаче данных между потоками будут выше, чем выполнение встроенного кода.
Настройки коллекторов
Настройки каждого коллектора находятся в каталоге коллектора в файле config.json и описаны в действии Collector editor. Дополнительные настройки находятся в каталоге коллектора, обычно в файле settings.json и описаны в помощи к коллектору. Так как коллекторы тесно связаны с сервером по обработки информации, для удобства конфигурации настройки коллекторов вынесены в файл server.json и описаны в "Настройки сервера server.json". Файл collectors.json имеет всего одну настройку:
- dir - Каталог в котором располагаются коллекторы, обычно collectors