- Перед началом мониторинга, система должна подключиться к каждому устройству и настроить его так, чтобы устройство стало доступным для ICMP пинга.
- Система должна опрашивать состояние устройств через ICMP (ping).
- Результаты опроса должны записываться в лог-файл, содержащий информацию о времени опроса, IP-адресе устройства и результате опроса.
- В случае, если устройство не отвечает более N раз, система должна отправлять уведомления администратору на почтовый ящик.
- На вход системе подается YAML файл, содержащий:
- Список устройств и данные для их подключения.
- Путь к файлу для логирования.
- Почтовый ящик для отправки уведомлений.
- Количество неудачных попыток подключения, после которых следует отправить уведомление.
-
Система предполагает работу с устройствами, имеющими интерфейс командной строки, похожий на Cisco CLI.
-
Допускается использование существующих python framework
-
Формат YAML файла определяется исполнителем в процессе реализации.
-
Ожидается, что реализация будет содержать избыточность в архитектуре для учета возможного расширения функционала.
-
Ожидается предоставление списка предложений по расширению функционала системы с учетом добавленных архитектурных решений для их реализации.
Система мониторинга предназначена для мониторинга состояния сетевых устройств, таких как роутеры и свитчи. Она позволяет автоматически проверять доступность устройств и отправлять уведомления в случае недоступности. Пинг устройств производится в разных потоках.
- Python 3.9.13
- Склонируйте репозиторий.
- Установите необходимые зависимости:
pip install -r requirements.txt
. - Настройте файл конфигурации
settings.yaml
.
Редактируйте файл settings.yaml
для настройки системы. Он содержит следующие параметры:
- Список устройств и данные для их подключения.
- Путь к файлу для логирования.
- Почтовый ящик для отправки уведомлений.
- Количество неудачных попыток подключения, после которых следует отправить уведомление.
Для добавления устройств в мониторинг, отредактируйте файл settings.yaml
, добавив информацию о каждом устройстве.
Запустите мониторинг, выполнив команду python monitoring.py
.
Чтобы поставить мониторинг на паузу, используйте команду pause
.
Для возобновления мониторинга используйте resume
.
Для завершения работы программы используйте kill
.
Система будет отправлять уведомления на почтовый ящик, указанный в конфигурации, если какое-то устройство станет недоступным.
- Данная система имеет потенциал развития, как отечественный аналог Cisco CLI. Ее функционал можно было бы расширить добавлением методов для добавления и удаления устройств во время работы программы через CLI.
- Также можно было бы добавить дополнительные команды для взаимодействия с системой мониторинга.
2023-11-06 13:30:43: Ping to 192.168.1.11 successful.
2023-11-06 13:30:43: Ping to 192.168.1.13 successful.
2023-11-06 13:30:46: Ping to 192.168.1.11 successful.
2023-11-06 13:30:46: Ping to 192.168.1.13 successful.
2023-11-06 13:30:49: Ping to 192.168.1.13 successful.
2023-11-06 13:30:49: Ping to 192.168.1.11 successful.
2023-11-06 13:30:52: Ping to 192.168.1.11 successful.
2023-11-06 13:30:52: Ping to 192.168.1.13 successful.
2023-11-06 13:30:55: Ping to 192.168.1.13 successful.
2023-11-06 13:30:55: Ping to 192.168.1.11 successful.
2023-11-06 13:33:47: Ping to 192.168.1.11 successful.
2023-11-06 13:33:50: Ping to 192.168.1.13 successful.
2023-11-06 13:33:50: Ping to 192.168.1.11 successful.
2023-11-06 13:33:53: Ping to 192.168.1.11 successful.
2023-11-06 13:33:53: Ping to 192.168.1.13 successful.
2023-11-06 13:33:56: Ping to 192.168.1.11 successful.
2023-11-06 13:33:57: Ping to 192.168.1.13 failed.
2023-11-06 13:33:58: Ping to 192.168.1.13 failed.
2023-11-06 13:34:00: Ping to 192.168.1.11 successful.
2023-11-06 13:34:01: Ping to 192.168.1.13 failed.
Список команд: help или ?
Введите команду: ?
Commands:
pause : система приостанавливает свою работу
resume : система возобновляет свою работу
kill : система завршает свою работу
Список команд: help или ?
Введите команду: help
Commands:
pause : система приостанавливает свою работу
resume : система возобновляет свою работу
kill : система завршает свою работу
Список команд: help или ?
Введите команду: pause
Список команд: help или ?
Введите команду: resume
Список команд: help или ?
Введите команду: kill
Данная система мониторига была разработана в качестве тестового задания на должность стажера-разработчика в компанию Aquarius.