MikroTik RouterOS
Маршрутизаторы и коммутаторы с RouterOS 7: отстают ли RouterOS и прошивка RouterBOOT, CPU, память и хранилище, температуры, вентиляторы и блоки питания, а также состояние, трафик, ошибки и потери линка каждого интерфейса.
DumbMonit читает REST API, который RouterOS 7 обслуживает под /rest, с
пользователем в группе, которая может только читать. Он отправляет только
запросы GET и ничего больше.
MikroTik редко ломается; он стареет. Релиз RouterOS, уже не самый новый в своём канале, прошивка RouterBOOT, отставшая после обновления (она следует только по запросу, при следующей перезагрузке), резервный блок питания, умерший без чьего-либо внимания, порт, который продолжает логировать ошибки или терять линк. Именно это наблюдает данная страница, вместе с нагрузкой.
Что отслеживается
Заголовок раздела «Что отслеживается»Все метрики с префиксом dumbmonit_mikrotik_. Суммарные значения — это
счётчики: графики и правила превращают их в скорости.
| Метрика | Что | Метки |
|---|---|---|
info | значение 1 | version, release (long-term, stable…), board, architecture, identity |
uptime_seconds | время с последней загрузки | |
cpu_load_percent, cpu_count | загрузка CPU, все ядра | |
memory_total_bytes, memory_free_bytes, memory_used_percent | память | |
storage_total_bytes, storage_free_bytes, storage_used_percent | флеш-память или диск, на котором живёт RouterOS | |
update_checked | 1, когда маршрутизатор проверил наличие более новой RouterOS и получил ответ | |
update_available | 1, когда последняя версия канала отличается от установленной | installed_version, latest_version, channel |
routerboard | 1 на оборудовании RouterBOARD, 0 на Cloud Hosted Router или машине x86 | |
firmware_upgrade_pending | 1, когда RouterBOOT старее прошивки, идущей в комплекте с RouterOS | current_firmware, upgrade_firmware, model |
temperature_celsius, voltage_volts, fan_rpm, power_watts, current_amperes | каждый датчик, который есть у платы | sensor (cpu-temperature, fan1-speed…) |
health_ok | 1, когда датчик psu*-state или fan*-state читается как ok, иначе 0 | sensor |
interface_running | 1, когда у интерфейса есть линк | interface, type |
interface_rx_bytes_total, interface_tx_bytes_total, interface_rx_packets_total, interface_tx_packets_total | трафик | interface, type |
interface_rx_errors_total, interface_tx_errors_total, interface_rx_drops_total, interface_tx_drops_total | ошибки и отбросы | interface, type |
interface_link_downs_total | сколько раз линк терялся | interface, type |
interfaces_skipped | интерфейсы, оставленные за пределами лимита, заданного в опциях | |
scrape_errors | второстепенные чтения, завершившиеся ошибкой при последней проверке |
Считываются только включённые интерфейсы. Динамические (клиент PPPoE или L2TP, чьё имя меняется при каждом подключении) и loopback не учитываются.
Датчики зависят от платы: у hAP есть напряжение и температура, CCR добавляет вентиляторы и блоки питания, у Cloud Hosted Router их нет вообще. Датчик, которого нет у платы, не даёт ряда.
Самая новая версия RouterOS известна только когда сам маршрутизатор
проверяет обновления: пользователю только для чтения не разрешено запускать
эту проверку. Опциональный шаг ниже планирует её на маршрутизаторе. Без него
update_checked остаётся на 0, и правило обновления никогда не срабатывает.
Применяемые встроенные правила: «Высокая загрузка CPU MikroTik», «Высокая загрузка памяти MikroTik», «Флеш-память MikroTik почти заполнена», «Высокая температура MikroTik», «Отказ блока питания или вентилятора MikroTik», «Интерфейс MikroTik накапливает ошибки», «Дребезжит линк MikroTik», «Доступно обновление RouterOS MikroTik» и «Ожидается обновление прошивки MikroTik», плюс «Монитор недоступен».
Страница монитора
Заголовок раздела «Страница монитора»Панель над графиками читает то, что сохранила проверка; открытие страницы никогда не подключается к маршрутизатору. Она показывает версию RouterOS и доступна ли более новая, прошивку RouterBOOT, время работы, CPU, память и хранилище, каждый датчик с его состоянием, и таблицу интерфейсов с их линком, трафиком, ошибками и потерями линка.
Создание пользователя только для чтения на маршрутизаторе
Заголовок раздела «Создание пользователя только для чтения на маршрутизаторе»-
Откройте терминал на маршрутизаторе (WinBox → New Terminal, или SSH со стандартной учётной записью) и создайте группу, которая может только читать, через REST API. RouterOS требует все три политики для чтения через REST: rest-api открывает API, api и read разрешают само чтение.
/user group add name=dumbmonit-read policy=read,api,rest-api comment=DumbMonit -
Создайте пользователя в этой группе с собственным длинным случайным паролем. Чтобы принимать учётную запись только от DumbMonit, добавьте address= с адресом хоста DumbMonit.
/user add name=dumbmonit group=dumbmonit-read password=REPLACE-WITH-A-LONG-RANDOM-PASSWORD -
Включите веб-сервис HTTPS, который RouterOS поставляет отключённым и без сертификата. Пропустите это, если у www-ssl уже есть сертификат. Иначе эти команды создают сертификат на самом маршрутизаторе; затем отметьте «Accept an unverifiable certificate» в опциях ниже.
/certificate add name=local-ca common-name=local-ca key-usage=key-cert-sign,crl-sign days-valid=3650/certificate sign local-ca/certificate add name=https-cert common-name=router.lan days-valid=825/certificate sign https-cert ca=local-ca/ip service set www-ssl certificate=https-cert disabled=no -
Необязательно: чтобы узнавать о новых версиях RouterOS, дайте маршрутизатору проверять их при запуске и раз в день. Пользователю только для чтения не разрешено запускать эту проверку, поэтому DumbMonit только читает её результат.
/system scheduler add name=check-for-updates interval=1d start-time=startup on-event="/system package update check-for-updates once" -
В DumbMonit введите адрес маршрутизатора, например «192.168.88.1», с пользователем dumbmonit и его паролем. DumbMonit отправляет только запросы GET к /rest: он никогда не меняет настройку, никогда не запускает обновление и никогда не перезагружает маршрутизатор.
Три политики были проверены по одной на RouterOS 7.23.7, каждая со свежим
пользователем: без rest-api маршрутизатор отвечает 401, без api отвечает
«not allowed», без read — «not enough permissions». DumbMonit сообщает
каждый случай как проблему учётных данных, называя отсутствующую политику, а
не как недоступность маршрутизатора. С тремя политиками изменение,
перезагрузка или проверка обновления отклоняются с «not enough permissions».
RouterOS может ещё некоторое время применять к пользователю прежние политики группы после её редактирования. Если вы меняете политики существующей группы, а ошибка не проходит, удалите и пересоздайте пользователя.
Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Пользователь только для чтения | Пользователь dumbmonit и его пароль, отправляются как базовая аутентификация HTTP с каждым запросом. У REST API нет сессии. |
Адрес: имя хоста или IP (192.168.88.1), host:port, или полный URL
(https://router.lan:8443). Опции: протокол (по умолчанию HTTPS; HTTP
использует службу www), порт (443 для HTTPS, 80 для HTTP), проверка
сертификата, таймаут запроса (10 с), читать ли интерфейсы (включено), и
сколько максимум (64).