Недавно перед нами была поставлена задача организовать внешний мониторинг целого парка роутеров Mikrotik одной торговой сети. Заказчик хотел иметь возможность по внешней ссылке контролировать какие из точек находятся в онлайн, а какие остались без связи.
Ситуацию осложняло то, что более половины роутеров не имели выделенного IP-адреса, а часть вообще находилась за NAT, также они могли переключиться на резервный канал, представленный мобильной связью.
При этом мониторинг должен был быть предельно прост, без настройки дополнительных сущностей, туннелей и т.п. С серверной стороны также хотелось что-то простое и наглядное.
В такой ситуации отлично подходит известная многим Uptime Kuma, поднимется просто – в Docker-контейнере, настраивается еще проще. Удобна и наглядна. Для нашей задачи у нее есть особый тип мониторинга пассивного типа – Push.
Для каждого отслеживаемого устройства формируется уникальная ссылка, точнее ссылка с уникальным ключом, по которой нужно обращаться к серверу с нужной периодичностью. В нашем случае это именно то, что требуется.
Настроить тоже очень просто, буквально двумя командами:
/system script add name="monitoring-push" source="/tool fetch url=\"http://192.168.3.112:3001/api/push/bgIDVXjXRo?status=up&msg=OK&ping=\" keep-result=no"
Эта команда создаст скрипт с именем monitoring-push, уникальный URL замените своими данными.
Затем следует добавить его в планировщик с периодичностью выполнения 60 секунд:
/system scheduler add name="monitoring-scheduler" interval=1m on-event="/system script run monitoring-push" start-time=startup
Для проверки можете запустить скрипт вручную, если все сделано правильно в мониторинге тут же появится отметка о доступности.
Внимательный читатель заметит, что в ссылке есть параметр ping, но в RouterOS нет возможности получить скриптом время пинга, поэтому контролировать время задержки не получится.
Однако визуально пустое значение на графике мониторинга воспринимается как недоступность устройства, особенно на фоне зеленых графиков соседних узлов, поэтому вы можете передавать в этом параметре некоторое произвольное значение.
Например 64, для этого измените ссылку следующим образом:
url=\http://192.168.3.112:3001/api/push/bgIDVXjXRo?status=up&msg=OK&ping=64\
Теперь визуально все будет выглядеть привычным образом.
Таким образом мы быстро настроили простой, но эффективный пассивный мониторинг, когда сами устройства сообщают серверу о своей активности.


