Services

Services - ядро программного комплекса. Состоит из нескольких сервисов:

  • Event Bus - сервис для получения, дессериализации и отправки сообщений.
  • Message Queue Handlers – обработчики клиентских событий, полученных от backend. Взаимодействие осуществляется через RabbitMQ.
  • Statistic collector – сборщик статистики.
  • DB sync – сервис для вызова периодических действий на SaltStack.
  • Task scheduler - планировщик действий.

Event Bus

Event Bus - сервис для получения и дессериализации сообщений от SaltStack. Для обработки и передачи сообщений используются модули Senders. Взаимодействие между SaltStack и Senders осуществляется через паттерн Publisher-Subscriber, где SaltStack - издатель, SaltStack Event System и Event Bus - шина событий, Sender - подписчик.

../../../../_images/Event_bus.png

Получение данных от SaltStack Event System осуществляется через технологию SSE. После получения сообщения EventBus дессериализирует его и уведомляет Senders. Senders фильтруют, обрабатывают и отправляют сообщения.

Senders and Filters

Sender - модуль для фильтрации, обработки и отправки сообщений. Содержит внутри Filters для непосредственной фильтрации и обработки сообщений.

../../../../_images/Senders.png

Классы, наследующие Filter:

  • ClientActionFilter - формирует сообщения для отправки Salt событий через MQ.
  • ClientHostInfoFilter - формирует сообщения для отправки данных мониторинга миньена через MQ.
  • DBActionFilter - формирует сообщения для отправки Salt событий в базу данных.
  • GroupIpFilter - возвращает IP адрес миньена после выполнение запроса для его определения.
  • HostFilter - формирует сообщение для создания/обновления миньена в базе данных.
  • KeyFilter - формирует сообщение для обновления ключа миньена в базе данных.
  • LastDistupgradeFilter - формирует сообщение для обновления поля «last_distupgrade» миньена в базе данных.
  • LastStateApplyFilter - формирует сообщение для обновления поля «last_stateapply» миньена в базе данных.
  • MinionStartFilter - формирует сообщение для обновления поля «status» миньена в базе данных.
  • PingFilter - формирует сообщения для обновления поля «status» миньенов в базе данных.
  • PresenceFilter - формирует сообщения для обновления поля «status» миньенов в базе данных.
  • CacheHostsFilter - формирует сообщения для создания/обновления миньенов в базе данных.
  • SeedHostsNodegroupFilter - формирует сообщения для обновления поля «nodegroups» миньенов в базе данных.
  • SeedNodegroupFilter - формирует сообщение для создания nodegroups в базе данных.
  • StateApplyFilter - формирует сообщение для создания failed-patches при неудачном выполнении «state.apply».
  • VersionFilter - формирует сообщение для обновления поля «version» миньена в базе данных.

Message Queue Handlers

Message Queue Handlers - обработчики клиентских событий, полученных от backend.

Взаимодействие осуществляется через RabbitMQ.

Statistic Collector

Statistic collector - сервис для сбора статистики. Принимает на вход имена коллекций, с которых необходимо собрать данные, и отправляет их в коллекцию statistics.

DB Sync

DB Sync - сервис для вызова периодических действий на SaltStack через salt-api.

Task Scheduler

Task Scheduler - сервис для выполнения пользовательских задач. Задача - это запрос к salt-api, который нужно выполнить. Задачи собираются из базы данных с помощью DB Adapter.