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.
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
- выполнить перезагрузку конкретной ноды агента
Действие: Получить карту сети
Входные данные: отсутствуют
Выходные данные: Json содержащий в себе маршрут до каждой ноды-агента
Действие: Получить список нод-агентов и информацию о них.
Входные данные: домен или ip address ноды.
Выходные данные: Json содержащий следующую информацию по ноде-агенту или нескольким нодам: id, domain, ip address.
Действие: Добавить ноду-агента в мониторинг, если она еще не существует
Входные данные: Домен или ip address ноды
Выходные данные: Json с информацией об успешности запроса, а также информации о созданной ноде (id, ip address, domain)
Действие: Удалить ноду-агента из мониторинга, если она существует
Входные данные: Отсутствуют
Выходные данные: Json с информацией об успешности запроса
Действие: Получить статистику с конкретной ноды-агента
Входные данные: Отсутствуют (в будущем можно было бы передавать список того какие именно метрики необходимо собрать с ноды)
Выходные данные: Json содержащий показатели системы на момент запроса (LA, top 5 process, uptime, RAM)
Действие: Перезагрузить физический сервер установленной на нем с нодой-агентом
Входные данные: Отсутствуют
Выходные данные: Json с информации об успешности операции или об ошибке