Перейти к содержимому

MikroTik RouterOS

Маршрутизаторы и коммутаторы с RouterOS 7: отстают ли RouterOS и прошивка RouterBOOT, CPU, память и хранилище, температуры, вентиляторы и блоки питания, а также состояние, трафик, ошибки и потери линка каждого интерфейса.

DumbMonit читает REST API, который RouterOS 7 обслуживает под /rest, с пользователем в группе, которая может только читать. Он отправляет только запросы GET и ничего больше.

MikroTik редко ломается; он стареет. Релиз RouterOS, уже не самый новый в своём канале, прошивка RouterBOOT, отставшая после обновления (она следует только по запросу, при следующей перезагрузке), резервный блок питания, умерший без чьего-либо внимания, порт, который продолжает логировать ошибки или терять линк. Именно это наблюдает данная страница, вместе с нагрузкой.

Все метрики с префиксом dumbmonit_mikrotik_. Суммарные значения — это счётчики: графики и правила превращают их в скорости.

МетрикаЧтоМетки
infoзначение 1version, 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_checked1, когда маршрутизатор проверил наличие более новой RouterOS и получил ответ
update_available1, когда последняя версия канала отличается от установленнойinstalled_version, latest_version, channel
routerboard1 на оборудовании RouterBOARD, 0 на Cloud Hosted Router или машине x86
firmware_upgrade_pending1, когда RouterBOOT старее прошивки, идущей в комплекте с RouterOScurrent_firmware, upgrade_firmware, model
temperature_celsius, voltage_volts, fan_rpm, power_watts, current_amperesкаждый датчик, который есть у платыsensor (cpu-temperature, fan1-speed…)
health_ok1, когда датчик psu*-state или fan*-state читается как ok, иначе 0sensor
interface_running1, когда у интерфейса есть линк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, память и хранилище, каждый датчик с его состоянием, и таблицу интерфейсов с их линком, трафиком, ошибками и потерями линка.

Создание пользователя только для чтения на маршрутизаторе

Заголовок раздела «Создание пользователя только для чтения на маршрутизаторе»
  1. Откройте терминал на маршрутизаторе (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
  2. Создайте пользователя в этой группе с собственным длинным случайным паролем. Чтобы принимать учётную запись только от DumbMonit, добавьте address= с адресом хоста DumbMonit.

    /user add name=dumbmonit group=dumbmonit-read password=REPLACE-WITH-A-LONG-RANDOM-PASSWORD
  3. Включите веб-сервис 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
  4. Необязательно: чтобы узнавать о новых версиях RouterOS, дайте маршрутизатору проверять их при запуске и раз в день. Пользователю только для чтения не разрешено запускать эту проверку, поэтому DumbMonit только читает её результат.

    /system scheduler add name=check-for-updates interval=1d start-time=startup on-event="/system package update check-for-updates once"
  5. В 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).