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 - подписчик.
Получение данных от SaltStack Event System осуществляется через технологию SSE. После получения сообщения EventBus дессериализирует его и уведомляет Senders. Senders фильтруют, обрабатывают и отправляют сообщения.
Senders and Filters¶
Sender - модуль для фильтрации, обработки и отправки сообщений. Содержит внутри Filters для непосредственной фильтрации и обработки сообщений.
Классы, наследующие 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.