Описание настроек Counter processor сервера server.json

Описание

Сервер или Counter processor используется для сбора и обработки информации, обычно получаемой в процессе мониторинга инфраструктуры. Подход многих систем мониторинга основан на том, что таймер, через определенные интервалы времени, генерирует события, от которых зависят сборщики данных. При генерации события таймером производится сбор данных. В ALEPIZ, в качестве генератора событий может выступать не только таймер. Это может быть любой активный сборщик данных - коллектор. Например, коллектор, работающий по протоколу Zabbix active, или SNMP trap - получающий события от устройств по SNMP, или Scheduler, создающий события по расписанию в определенное время.

У каждого активного коллектора всегда есть сервер, обрабатывающий полученные от него данные и запускающий пассивные коллекторы для дальнейшего сбора и обработки информации. Каждый сервер может иметь собственные настройки, которые зависят от профиля и объема получаемых от активного коллектора данных. Можно объединить в одном серверном процессе несколько активных коллекторов. Например, это может понадобится, если коллекторы не генерируют большое количество данных и не требуют много ресурсов для их обработки.

В некоторых случаях серверный процесс выделяется пассивному коллектору. Такой коллектор называется выделенным. Он получает события для сбора или генерации данных по TCP/IP от других серверных процессов с активными коллекторами. Выделение отдельного серверного процесса пассивному коллектору необходимо в случае, если пассивный коллектор не может быть запущен в многопоточном режиме или для работы коллектора требуется кэш данных, который должен храниться в оперативной памяти и не должен очищаться после окончания сбора данных пассивным коллектором. Например, таким коллектором является event-generator, необходимый для генерации новых событий мониторинга.

Обработка данных, полученных от активного или выделенного коллектора производится в отдельных потоках к которым подключены пассивные коллекторы. Пассивные коллекторы начинают собирать данные после генерации события активным коллектором. Например, счетчик с активным коллектором discovery получил данные о появившемся в сети новом сервере и запускает счетчик с пассивным коллектором zabbix. Он в свою очередь запрашивает информацию о сервисах, установленных на сервере, для дальнейшей настройки мониторинга сервисов. Параллельно запускается счетчик с пассивным коллектором task-runner для создания нового объекта - сервера в ALEPIZ и счетчик с пассивным коллектором constant для генерации свойств нового сервера. Данные могут передаваться между различными серверными процессами, обслуживающими активные коллекторы. Для этого используется протокол TCP/IP.

Для ускорения работы серверов и его потоков, данные о счетчиках и объектах ALEPIZ запрашиваются не из базы данных, а кэша с данными, который находится в оперативной памяти. При изменении конфигурации счетчиков, объектов или их свойств, серверы получают сигнал и обновляют необходимые данные из базы данных.

Настройки

  • disable (true|false) - с помощью этой настройки можно отключить сервер, например для распределения нагрузки между несколькими экземплярами ALEPIZ. По умолчанию false.
  • maxTimeToProcessCounter - (ms) максимальное время в течение которого может выполняться сбор данных каунтером. Если для каунтера установлено свойство runCollectorSeparately и значение этого свойства не является числом (максимальным временем выполнения сбора данных каунтером), то для принятии решения о прекращении ожидания сбора данных будет использоваться значение параметра maxTimeToProcessCounter. Если требуется собрать новые данные для каунтера, но предыдущий сбор данных еще не был завершен, при установленном свойстве runCollectorSeparately будет проверяться не было ли превышено время сбора данных. Если время сбора данных было превышено, запускается новый сбор данных. Если нет, то новый сбор данных не будет производится. По умолчанию 30000 (30 сек).
  • servers - список объектов, описывающий различные конфигурации серверов. Каждую конфигурацию сервера можно подключить к активному или выделенному коллектору для обработки данных, которые от него поступают.
    • <serverConfigurationName> - имя конфигурации сервера, например defaultServer или highLoadServer
      • updateEventsDumpFile - файл с информацией о текущем статусе событий для обновления зависимых счетчиков. Данные сохраняются в файл при остановке ALEPIZ и загружаются из файла при запуске для того, чтобы сохранить актуальную информацию о состоянии событий обновления счетчиков. Это необходимо для того, чтобы события, активные перед остановкой, не активировались повторно после старта ALEPIZ. К названию файла, перед расширением будет добавлено название коллектора, к которому подключен сервер. Файл находится в каталоге, установленном в файле common.json, параметр tempDir. Например, "updateEvents-defaultServer.json".
      • maxMemUsage - максимальный объем памяти в мегабайтах, который может использовать сервер. Проверка достижения максимального объема памяти осуществляется через интервал времени, установленный в параметре updateCacheInterval. При достижении этого объема производится попытка принудительной сборки мусора. Если в течение времени, установленном в memUsageMaxTime используемый объем памяти не уменьшился ниже maxMemUsage, сервер перезапускается.
      • memUsageMaxTime - Если в течение времени, установленном в этом параметре в миллисекундах используемый объем памяти не уменьшился ниже maxMemUsage, сервер перезапускается. По умолчанию 60000.
      • fullUpdateCacheInterval - интервал времени в миллисекундах, через который настройки всех счетчиков и всех объектов ALEPIZ будут получены заново каждым потоком сервера. Обычно кэш настроек обновляется при внесении изменений в настройки. Для этого интеллектуально определяется, какие счетчики и для каких объектов необходимо перезапустить для повторного сбора данных. Если определение зависимости для каких-то счетчиков невозможно и для них не происходит обновления данных после изменения параметров, можно установить значение этого параметра не в 0. Полное обновление кэша настроек всех счетчиков и объектов ALEPIZ - это затратная операция по вычислительным ресурсам. Использование ресурсов увеличивается в зависимости от количества потоков, используемых сервером. Поэтому если система стабильно работает без полного обновления кэша, лучше установить этот параметр в 0, то есть не выполнять обновление. Минимальное значение для этого параметра 600000 (10 минут) Если значение установлено меньше, система будет обновлять кэш не чаще чем раз в 600000 мс. 0 - никогда полностью не обновлять кэш для данного сервера.
      • updateCacheInterval - интервал времени в секундах для принудительного запуска процедуры обновления кэша. В зависимости от настроек кэш будет обновляться частично или полностью. Не смотря на эту настройку, запуск процедуры частичного обновления кэша выполняется сразу при внесении изменений в настройки ALEPIZ. Кроме обновления кэша выполняется вывод в лог файл текущего состояния сервера. По умолчанию 60.
      • minUpdateCacheInterval - минимальный интервал времени в миллисекундах между операциями обновления кэша. По умолчанию 60000.
      • childrenNumber - количество потоков для обработки данных, полученных от активного или выделенного коллектора, который обслуживается данным сервером. Каждый поток получает от коллектора данные, вычисляет переменные счетчика и запускает зависимые от него счетчики с пассивными коллекторами, либо передает информацию по сети другому выделенному коллектору для обработки. Например, активный коллектор timer при срабатывании установленного интервала времени может запустить сбор данных с различных объектов инфраструктуры пассивными коллекторами, например, SNMP или zabbix. Если 0 - то количество потоков будет равно количеству ядер процессоров сервера
      • returnedValuesProcessedLimit - если коллектор вернул массив данных, ALEPIZ запускает обработку результата по каждому элементу массива. Например, если процесс обнаружения вернул массив из списка сервисов, работающих на платформе, будет отдельно обработан каждый сервис. Для того, чтобы избежать повышенной загрузки ресурсов сервера, можно ограничить количество значений, которое будет обрабатываться одномоментно. Этот параметр также можно настроить для коллектора. Настройка параметра для коллектора имеет более высокий приоритет. По умолчанию 1000.
      • sleepTimeAfterValueProcessed - если коллектор вернул массив данных для дальнейшей обработки, можно установить паузу в миллисекундах между обработкой порций данных, установленных в параметре returnedValuesProcessedLimit. Этот параметр также можно настроить для коллектора. Настройка параметра для коллектора имеет более высокий приоритет. Это необходимо для уменьшения нагрузки на сервер. По умолчанию 0 - не ждать.
      • dontConnectToRemoteHistoryInstances - не подключаться и не получать исторические данные для вычисления переменных с других экземпляров ALEPIZ. По умолчанию false. Обычно все исторические данные, необходимые для расчета переменных, хранятся в локальной базе. Поэтому нет необходимости получения данных из других экземпляров ALEPIZ. Отключение получения данных с других экземпляров, уменьшит нагрузку и увеличит скорость работы сервера.
  • collectors - список объектов описывающих активные и выделенные коллекторы и их группировку внутри одного процесса с сервером.
    • defaultSettings - настройки по умолчанию для коллекторов. Если какая-то настройка не установлена в параметрах коллектора, либо секция для описания коллектора вообще отсутствует, будут использоваться настройки по умолчанию из этой секции.
      • localAddress - IP адрес к которому будет привязан сервер. По умолчанию 127.0.0.1.
      • serverAddress - IP адрес, к которому будут подключаться коллекторы, от которых зависят счетчики, использующие этот коллектор для передачи собранных данных. По умолчанию 127.0.0.1.
      • serverPort - TCP порт, который будет слушать сервер-коллектор и к которому будут подключаться другие серверы-коллекторы. По порту производится группировка активных и выделенных коллекторов в один процесс. Если для нескольких коллекторов указан одинаковый порт, то все эти коллекторы будут сгруппированы в одном процессе сервера. Например, 10170.
      • serverID - наименование конфигурации сервера из настройки servers. Например, defaultServer.
    • <collector-name> - имя каталога в котором находится активный или выделенный коллектор, для его настройки. В секции с настройкой коллектора могут присутствовать все параметры из секции defaultSettings. Если часть параметров отсутствует, будут использованы параметры из секции defaultSettings. Например, "zabbix-active": { "port": 10171, "serverID": "highLoadServer" }