Skip to content

nedostupno/zinaida

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

svc-zinaida

svc-zinaida - система мониторинга серврверов, работающая на системе агентов и одного упровляющего сервиса, предоставляющая возможность:

  • Строить карту сети.
  • Собирать системную информацию с ноды-агента в режиме реального времени.
  • Выполнять перезагрузку сервера, на котором расположена нода-агент.
  • Регистрировать ноды-агенты.
  • Удалять из мониторинга ноды-агенты.
  • Предоставлять интерфейс клиентского REST API с использованием gRPC-Gateway.
  • Логировать запросы с клиентов, регистрацию нод-агентов, отсутствие ответа от ноды-агента более N раз подряд за определенный промежуток времени, а также ошибки.

Сущности системы

Нода-менеджер:

  • Главная управляющая сущность системы.
  • Предоставляет Rest API интерфейс для получения информации сторонними клиентами/сервисами.
  • Регистрирует ноды-агенты.
  • Хранит в базе данных информацию о нодах-агентах.
  • Проверяет доступность нод-агентов по протоколу udp.
  • Собирает трассировку до каждой ноды.
  • Позволяет запрашивать информацию с нод-агентов.

Нода-агент:

  • Бинарный файл, устанавливаемый на сервера, мониторинг которых будет происходить.
  • Автоматически регистрируется у ноды-менеджера при запуске.
  • Слушает запросы по gRPC от ноды-менеджера.
  • По запросу предоставляет информацию.
  • Выполняет перезагрузку сервера, на котором установлен, при поступлении запроса по gRPC.

База Данных:

  • Хранит в себе информацию о зарегистрированных нодах-агентах. (id node, domain, ip address)
  • Хранить данные для доступа к системе. (login, password, jwt token)

Особенности работы системы

  • Взаимодействие клиента и системы осуществляется с помощью интерфейса REST API, который предоставляется нодой-менеджером.
  • API требует авторизации по JWT токену.
  • Логин и пароль задается в конфигурационном файле, после чего данные хранятся в базе данных.
  • Общение между нодой-менеджером и нодами-агентами осуществляется с помощью gRPC.
  • И нода-агент и нода-менеджер выступают как в роли gRPC клиента, так и в роли gRPC сервера в зависимости от ситуации.
  • Нода-агент является gRPC клиентом, когда регистрируется у ноды-менеджера
  • Во всех остальных ситуациях gRPC клиентом выступает нода-менеджер.
  • Проверка доступности осуществляется с помощью отправки udp пакетов от ноды-менеджера к нодам-агентам, по аналогии с работой утилиты traceroute.
  • Сбор информации с ноды-агента происходит с помощью чтения данных из файлов в /proc.

API:

Endpoints:

  • GET /api/map/ - получить карту сети
  • GET /api/nodes/ - получить информацию о нодах
  • POST /api/nodes/ - добавить ноду-агента в мониторинг
  • DELETE /api/nodes/{node_id}/ - удалить ноды-агента из мониторинга
  • GET /api/nodes/{node_id}/stat - получить статистику по конкретной ноде-агенту
  • GET /api/nodes/{node_id}/reboot - выполнить перезагрузку конкретной ноды агента

GET api/map/

Действие: Получить карту сети

Входные данные: отсутствуют

Выходные данные: Json содержащий в себе маршрут до каждой ноды-агента


GET api/nodes/

Действие: Получить список нод-агентов и информацию о них.

Входные данные: домен или ip address ноды.

Выходные данные: Json содержащий следующую информацию по ноде-агенту или нескольким нодам: id, domain, ip address.


POST api/nodes/

Действие: Добавить ноду-агента в мониторинг, если она еще не существует

Входные данные: Домен или ip address ноды

Выходные данные: Json с информацией об успешности запроса, а также информации о созданной ноде (id, ip address, domain)


DELETE api/nodes/{node_id}

Действие: Удалить ноду-агента из мониторинга, если она существует

Входные данные: Отсутствуют

Выходные данные: Json с информацией об успешности запроса


GET api/node/{node_id}/stat

Действие: Получить статистику с конкретной ноды-агента

Входные данные: Отсутствуют (в будущем можно было бы передавать список того какие именно метрики необходимо собрать с ноды)

Выходные данные: Json содержащий показатели системы на момент запроса (LA, top 5 process, uptime, RAM)


GET api/node/{node_id}/reboot

Действие: Перезагрузить физический сервер установленной на нем с нодой-агентом

Входные данные: Отсутствуют

Выходные данные: Json с информации об успешности операции или об ошибке

About

Zinaida monitoring system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages