Сети

Настройка мониторинга устройств Mikrotik через Zabbix

Пошаговое руководство по настройке мониторинга устройств, подключённых к Mikrotik роутерам, через систему Zabbix. Включает ping-мониторинг, Netwatch, ARP-таблицы и SNMP.

1 ответ 1 просмотр

Как настроить мониторинг устройств, подключённых к Mikrotik, через Zabbix? Я уже добавил Mikrotik в мониторинг Zabbix, но мне также нужно отслеживать устройства, подключённые к этому роутеру. Подойдёт даже базовый ping-мониторинг. Я искал информацию в интернете, но не нашёл готовых шаблонов для этой задачи. Встречались лишь фрагменты информации о том, как это можно сделать через логи Mikrotik или с помощью скриптов, но подробных инструкций или примеров я не обнаружил. Буду благодарен за любую информацию по этому вопросу.

Настройка мониторинга устройств, подключённых к Mikrotik через Zabbix, возможна с использованием нескольких подходов, включая ping-мониторинг, Netwatch, ARP-таблицы и интеграцию скриптов. Для эффективного мониторинга подключённых устройств Mikrotik можно создать кастомные шаблоны Zabbix с автоматическим обнаружением устройств через RouterOS и регулярной проверкой их доступности.


Содержание


Настройка базового ping-мониторинга через Mikrotik

Базовый ping-мониторинг устройств, подключённых к Mikrotik, можно реализовать с помощью встроенных возможностей RouterOS. Этот метод прост в настройке и не требует дополнительного оборудования или сложного программного обеспечения.

Первым шагом необходимо создать скрипт на Mikrotik, который будет проверять доступность подключённых устройств. Для этого перейдите в меню “System” > “Scripts” и создайте новый скрипт с следующим содержимым:

:local targetIP "192.168.88.50"
:local timeout 1
:local count 3
:local result [/ping $targetIP count=$count timeout=$timeout]

:if ([typeof :pick $result 0] = "array") do={
 :local loss [ :pick $result 0 ]
 :local avgtime [ :pick $result 1 ]
 
 :if ($loss < 100) do={
 /log info "Ping to $targetIP successful, loss: $loss%, avg: $avgtimems"
 } else={
 /log warning "Ping to $targetIP failed, loss: $loss%"
 }
}

Этот скрипт проверяет доступность указанного IP-адреса и записывает результаты в системный лог Mikrotik. Для мониторинга нескольких устройств создайте отдельные скрипты для каждого устройства или модифицируйте скрипт для работы со списком IP-адресов.

Для автоматического запуска скриптов настройте расписание в меню “System” > “Scheduler”. Например, для ежеминутной проверки создайте задачу с периодом 1 минута и командой вызова вашего скрипта.

Для сбора данных в Zabbix используйте функцию “log” в элементах данных. Настройте элемент данных для чтения системного лога Mikrotik и поиска строк, содержащих информацию о результате ping-теста. В выражении регулярного фильтра используйте шаблон для извлечения процентных потерь и среднего времени отклика.

Преимущество этого подхода заключается в том, что он использует встроенные возможности Mikrotik без необходимости установки дополнительного ПО. Однако недостатком является ограниченная гибкость при масштабировании на большое количество устройств.


Использование Mikrotik Netwatch для мониторинга подключённых устройств

Mikrotik Netwatch — это мощный инструмент для мониторинга доступности сетевых устройств и выполнения действий при изменении их состояния. Этот метод позволяет автоматически отслеживать подключённые устройства и запускать проверки в Zabbix без необходимости создания отдельных скриптов.

Для настройки Netwatch перейдите в меню “System” > “Netwatch” и создайте новую запись. Основные параметры настройки включают:

  • Host: IP-адрес или имя хоста для мониторинга
  • Interval: интервал проверки (по умолчанию 1 минута)
  • Timeout: время ожидания ответа (по умолчанию 100 мс)
  • Up-script: скрипт, выполняемый при доступности устройства
  • Down-script: скрипт, выполняемый при недоступности устройства

Пример конфигурации Netwatch для мониторинга устройства с IP-192.168.88.50:

/system netwatch
add host=192.168.88.50 interval=1m timeout=100ms up-script="/log info Device 192.168.88.50 is up" down-script="/log warning Device 192.168.88.50 is down"

Для интеграции с Zabbix модифицируйте скрипты, чтобы они записывали результаты в системный лог с уникальными идентификаторами. Например:

up-script="/log info ZABBIX:DEVICE:192.168.88.50:UP"
down-script="/log warning ZABBIX:DEVICE:192.168.88.50:DOWN"

Настройте элементы данных в Zabbix для чтения системного лога Mikrotik с использованием функции log. В элементе данных укажите регулярное выражение для поиска строк, соответствующих формату “ZABBIX:DEVICE:IP:STATUS”.

Преимущества использования Netwatch включают:

  • Автоматическое обнаружение новых устройств при их подключении
  • Гибкость в настройке интервалов проверки для разных устройств
  • Возможность выполнения различных действий при изменении состояния устройства
  • Низкое потребление ресурсов Mikrotik

Ограничением этого метода является необходимость ручного добавления каждого устройства в Netwatch, что может быть неудобно при большом количестве подключённых устройств.


Автоматическое обнаружение устройств через ARP-таблицу

Для автоматического обнаружения всех устройств, подключённых к Mikrotik, можно использовать ARP-таблицу RouterOS. Этот метод позволяет динамически определять подключённые устройства без необходимости ручной настройки каждого из них.

Создайте скрипт на Mikrotik, который будет извлекать данные из ARP-таблицы и передавать их в Zabbix:

:local zabbix_server "192.168.88.1"
:local zabbix_port "10051"
:local hostid "MIKROTIK-ROUTER"

:foreach i in=[/ip arp find] do={
 :local ip [/ip arp get $i address]
 :local mac [/ip arp get $i mac-address]
 :local interface [/ip arp get $i interface]
 :local lastseen [/ip arp get $i last-seen]
 
 :if ($lastseen > 0) do={
 :local data "zabbix.sender -z $zabbix_server -p $zabbix_port -s $hostid -k device.ip.$ip -o $ip"
 :local data2 "zabbix.sender -z $zabbix_server -p $zabbix_port -s $hostid -k device.mac.$ip -o $mac"
 :local data3 "zabbix.sender -z $zabbix_server -p $zabbix_port -s $hostid -k device.interface.$ip -o $interface"
 :local data4 "zabbix.sender -z $zabbix_server -p $zabbix_port -s $hostid -k device.lastseen.$ip -o $lastseen"
 
 /tool fetch url="http://$zabbix_server/zabbix_sender.php" mode=http keep-result=no as-value
 }
}

Этот скрипт извлекает информацию из ARP-таблицы и отправляет её в Zabbix с помощью zabbix_sender. Для использования этого метода необходимо установить на Mikrotik пакет zabbix_sender.

Настройте в Zabbix шаблон с элементами данных для сбора информации о подключённых устройствах:

  • device.ip.{IP}: IP-адрес устройства
  • device.mac.{IP}: MAC-адрес устройства
  • device.interface.{IP}: интерфейс, через который подключено устройство
  • device.lastseen.{IP}: время последнего обнаружения устройства

Для мониторинга доступности устройств добавьте триггеры, которые срабатывают при изменении статуса device.lastseen.{IP} на значение 0 (устройство не обнаружено).

Преимущества этого подхода включают:

  • Автоматическое обнаружение всех подключённых устройств
  • Отслеживание времени последнего обнаружения устройства
  • Сохранение истории подключений к сети
  • Возможность создания сетевой карты со всеми устройствами

Недостатком является то, что этот метод не напрямую проверяет доступность устройства, а только фиксирует его присутствие в сети. Для проверки доступности необходимо дополнительно настроить ping-мониторинг.


Создание кастомных шаблонов Zabbix для Mikrotik

Для эффективного мониторинга устройств, подключённых к Mikrotik, рекомендуется создать кастомные шаблоны в Zabbix. Эти шаблоны позволят централизованно управлять параметрами мониторинга и легко масштабировать систему при добавлении новых устройств.

Базовый шаблон для мониторинга подключённых устройств

Создайте новый шаблон в Zabbix с именем “Template Mikrotik Connected Devices” следующей структуры:

  1. Группы элементов данных:
  • Device Information (информация об устройстве)
  • Device Availability (доступность устройства)
  • Device Performance (производительность устройства)
  1. Элементы данных:
  • Device IP (тип: Zabbix trapper, ключ: device.ip.{IP})
  • Device MAC (тип: Zabbix trapper, ключ: device.mac.{IP})
  • Device Interface (тип: Zabbix trapper, ключ: device.interface.{IP})
  • Device Last Seen (тип: Zabbix trapper, ключ: device.lastseen.{IP})
  • Device Ping Loss (тип: Zabbix trapper, ключ: device.ping.loss.{IP})
  • Device Ping Time (тип: Zabbix trapper, ключ: device.ping.time.{IP})
  1. Триггеры:
  • Device is unreachable (выражение: {Template Mikrotik Connected Devices:device.lastseen.{IP}.nodata(10m)}=1)
  • High ping loss (выражение: {Template Mikrotik Connected Devices:device.ping.loss.{IP}.avg(5m)}>50)
  • High ping time (выражение: {Template Mikrotik Connected Devices:device.ping.time.{IP}.avg(5m)}>100)
  1. Графики:
  • Device Ping Loss (показывает процент потерь ping)
  • Device Ping Time (показывает среднее время отклика ping)

Настройка автоматического создания элементов данных

Для автоматического создания элементов данных для каждого обнаруженного устройства используйте макросы и прототипы элементов данных:

  1. В шаблоне создайте прототип элемента данных с ключом device.ip.{#IP}
  2. Настройте макросы для передачи информации об устройстве
  3. Используйте зависимые элементы данных для сбора дополнительной информации

Преимущества использования шаблонов включают:

  • Централизованное управление параметрами мониторинга
  • Лёгкое масштабирование при добавлении новых устройств
  • Унифицированный интерфейс для просмотра данных о подключённых устройствах
  • Возможность создания отчётов и дашбордов по всем устройствам

Для применения шаблона к устройствам Mikrotik:

  1. Импортируйте шаблон в Zabbix
  2. Прикрепите шаблон к хосту Mikrotik
  3. Настройте передачу данных от Mikrotik в Zabbix с помощью скриптов

Интеграция Mikrotik скриптов с Zabbix

Интеграция Mikrotik скриптов с Zabbix позволяет создавать гибкую систему мониторинга подключённых устройств. Этот метод использует возможности RouterOS для сбора данных и передачу их в Zabbix через zabbix_sender.

Установка zabbix_sender на Mikrotik

Для начала необходимо установить пакет zabbix_sender на Mikrotik. Скачайте бинарный файл с официального сайта Zabbix и скопируйте его в Mikrotik с помощью WinBox или FTP:

/system script
add name="install_zabbix_sender" source={
 /tool fetch url="http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.15/zabbix_sender_3.4.15.win32.zip" dst="zabbix_sender.zip"
 /tool unzip archive=zabbix_sender.zip
 /file move zabbix_sender.exe zabbix_sender
 /file remove zabbix_sender.zip
}

Скрипт для мониторинга подключённых устройств

Создайте комплексный скрипт, который будет собирать информацию о всех подключённых устройствах и передавать её в Zabbix:

:local zabbix_server "192.168.88.1"
:local zabbix_port "10051"
:local hostid "MIKROTIK-ROUTER"

:foreach i in=[/ip arp find] do={
 :local ip [/ip arp get $i address]
 :local mac [/ip arp get $i mac-address]
 :local interface [/ip arp get $i interface]
 :local lastseen [/ip arp get $i last-seen]
 
 :if ($lastseen > 0) do={
 :ping $ip count=3 size=1000 timeout=100ms do={
 :if ([typeof $packet-loss] = "nothing") do={
 :set $packet-loss 100
 }
 :if ([typeof $avg-latency] = "nothing") do={
 :set $avg-latency 0
 }
 }
 
 :local data "zabbix_sender -z $zabbix_server -p $zabbix_port -s $hostid -k device.ip.$ip -o \"$ip\""
 :local data2 "zabbix_sender -z $zabbix_server -p $zabbix_port -s $hostid -k device.mac.$ip -o \"$mac\""
 :local data3 "zabbix_sender -z $zabbix_server -p $zabbix_port -s $hostid -k device.interface.$ip -o \"$interface\""
 :local data4 "zabbix_sender -z $zabbix_server -p $zabbix_port -s $hostid -k device.lastseen.$ip -o \"$lastseen\""
 :local data5 "zabbix_sender -z $zabbix_server -p $zabbix_port -s $hostid -k device.ping.loss.$ip -o \"$packet-loss\""
 :local data6 "zabbix_sender -z $zabbix_server -p $zabbix_port -s $hostid -k device.ping.time.$ip -o \"$avg-latency\""
 
 /execute $data
 /execute $data2
 /execute $data3
 /execute $data4
 /execute $data5
 /execute $data6
 }
}

Этот скрипт выполняет следующие действия:

  1. Извлекает информацию из ARP-таблицы Mikrotik
  2. Проверяет доступность каждого устройства с помощью ping
  3. Передает информацию в Zabbix с помощью zabbix_sender
  4. Сохраняет историю подключений и доступности устройств

Настройка расписания выполнения скрипта

Для автоматического выполнения скрипта настройте расписание в Mikrotik:

/system scheduler
add name="monitor_devices" start-date=jan/01/1970 start-time=00:00 interval=1m on-event=monitor_devices_script policy=ftp,read,write,policy,test,sniff

Этот скрипт будет выполняться каждую минуту и передавать данные о всех подключённых устройствах в Zabbix.

Обработка данных в Zabbix

В Zabbix настройте элементы данных для приёма информации от Mikrotik:

  • Используйте тип элемента “Zabbix trapper”
  • Настройте ключи элементов в соответствии с форматом, используемым в скрипте
  • Создайте прототипы элементов данных для автоматического создания элементов для каждого устройства

Преимущества этого подхода включают:

  • Гибкость в настройке параметров мониторинга
  • Возможность сбора расширенной информации об устройствах
  • Эффективное использование ресурсов Mikrotik
  • Автоматическое обнаружение и мониторинг новых устройств

Настройка SNMP для мониторинга подключённых устройств

SNMP (Simple Network Management Protocol) — это стандартный протокол для мониторинга сетевых устройств. Настройка SNMP на Mikrotik позволяет использовать готовые шаблоны Zabbix для мониторинга подключённых устройств.

Включение SNMP на Mikrotik

Для включения SNMP на Mikrotik выполните следующие команды:

/snmp
set enabled=yes
set community=public
set contact=Network Administrator
set location=Server Room
set engine-id=Mikrotik-Router

Для более безопасной настройки используйте SNMPv3:

/snmp
set enabled=yes
set engine-id=Mikrotik-Router
/snmp user
add name=zabbixuser authentication-protocol=SHA authentication-password=zabbixpass privacy-protocol=AES privacy-password=zabbixpass

Настройка Zabbix для мониторинга через SNMP

В Zabbix создайте новый шаблон для мониторинга устройств Mikrotik через SNMP:

  1. Импортируйте официальный шаблон Zabbix для Mikrotik: “Template App MikroTik SNMP”
  2. Создайте прототипы элементов данных для мониторинга подключённых устройств
  3. Настройте триггеры для оповещений о недоступности устройств

Мониторинг подключённых устройств через SNMP

Для мониторинга подключённых устройств через SNMP используйте OID (Object Identifier) для таблицы ARP:

.1.3.6.1.2.1.4.22.1.2 -- ipNetToMediaIfIndex
.1.3.6.1.2.1.4.22.1.3 -- ipNetToMediaPhysAddress
.1.3.6.1.2.1.4.22.1.7 -- ipNetToMediaLastChanged

Настройте в Zabbix элементы данных для чтения этих OID:

SNMPv2-SMI::mib-2.4.22.1.2.[{SNMPINDEX}] -- Индекс интерфейса
SNMPv2-SMI::mib-2.4.22.1.3.[{SNMPINDEX}] -- MAC-адрес
SNMPv2-SMI::mib-2.4.22.1.7.[{SNMPINDEX}] -- Время последнего изменения

Использование Low Level Discovery (LLD)

Для автоматического обнаружения подключённых устройств используйте функцию Low Level Discovery в Zabbix:

  1. Создайте прототип элемента данных с использованием LLD
  2. Настройте правила обнаружения для извлечения информации из SNMP таблицы ARP
  3. Создайте прототипы элементов данных для каждого обнаруженного устройства

Преимущества использования SNMP включают:

  • Стандартизированный протокол, поддерживаемый большинством сетевых устройств
  • Готовые шаблоны Zabbix для Mikrotik
  • Возможность мониторинга различных параметров устройств
  • Эффективная передача данных через сеть

Недостатком является необходимость настройки SNMP на каждом устройстве, что может быть неудобно для некоторых типов устройств.


Оптимизация производительности мониторинга

При мониторинге большого количества устройств, подключённых к Mikrotik, важно оптимизировать производительность системы, чтобы избежать перегрузки как Mikrotik, так и Zabbix.

Оптимизация Mikrotik

  1. Интервалы проверки: Увеличьте интервалы проверки для устройств, которые не критичны для мониторинга. Например, для офисных компьютеров можно установить интервал проверки 5-10 минут вместо 1 минуты.

  2. Пакетные проверки: Организуйте проверки пакетами, чтобы уменьшить количество запросов к Mikrotik. Например, проверяйте доступность 10 устройств за один раз вместо проверки каждого устройства отдельно.

  3. Фильтрация устройств: Настройте мониторинг только для нужных устройств, исключая из него сетевые принтеры, IoT-устройства и другие устройства, для которых мониторинг доступности не критичен.

  4. Оптимизация скриптов: Используйте эффективные алгоритмы в скриптах Mikrotik, чтобы минимизировать нагрузку на процессор. Например, кэшируйте результаты проверок и передавайте их в Zabbix пакетами.

Оптимизация Zabbix

  1. Интервалы обновления: Увеличьте интервалы обновления для элементов данных, которые не требуют частого обновления. Например, для информации об устройстве можно установить интервал обновления 1 час, а для доступности — 1 минуту.

  2. История данных: Настройте сохранение истории данных только для необходимых периодов. Например, для данных о доступности устройства сохраняйте историю за 7 дней, а для производительности — за 30 дней.

  3. Тренды: Используйте тренды для сглаживания данных и уменьшения объема хранимых данных. Например, вместо сохранения каждого значения пинга сохраняйте среднее значение за час.

  4. Триггеры: Оптимизируйте триггеры, чтобы избежать ложных срабатываний. Например, для триггера “Device is unreachable” используйте выражение с несколькими проверками подряд.

Оптимизация сети

  1. Сетевая нагрузка: Мониторинг большого количества устройств может создать значительную нагрузку на сеть. Используйте сжатие данных и оптимизируйте частоту передач.

  2. Резервирование: Настройте резервирование каналов связи между Mikrotik и Zabbix, чтобы обеспечить непрерывность мониторинга даже при сбоях сети.

  3. Сегментация: Разделите мониторинг на несколько потоков, чтобы распределить нагрузку по разным каналам связи.

Мониторинг производительности системы

Настройте мониторинг производительности самой системы мониторинга:

  1. Загрузка Mikrotik: Следите за загрузкой процессора и использованием памяти на Mikrotik. Если эти показатели превышают 70%, оптимизируйте настройки мониторинга.

  2. Загрузка Zabbix: Мониторьте загрузку базы данных и процессорное использование сервера Zabbix. При высоких нагрузках оптимизируйте настройки Zabbix или добавьте дополнительные серверы.

  3. Сетевая задержка: Следите за задержкой передачи данных между Mikrotik и Zabbix. При задержке более 100 миллисекунд оптимизируйте сетевые настройки.

Пример оптимизированного скрипта для Mikrotik:

:local zabbix_server "192.168.88.1"
:local batch_size 10
:local batch_counter 0
:local batch_data ""

:foreach i in=[/ip arp find] do={
 :local ip [/ip arp get $i address]
 :local mac [/ip arp get $i mac-address]
 :local interface [/ip arp get $i interface]
 :local lastseen [/ip arp get $i last-seen]
 
 :if ($lastseen > 0) do={
 :ping $ip count=1 size=1000 timeout=100ms do={
 :if ([typeof $packet-loss] = "nothing") do={
 :set $packet-loss 100
 }
 :if ([typeof $avg-latency] = "nothing") do={
 :set $avg-latency 0
 }
 }
 
 :set batch_data ($batch_data . " -k device.ip.$ip -o \"$ip\"")
 :set batch_data ($batch_data . " -k device.mac.$ip -o \"$mac\"")
 :set batch_data ($batch_data . " -k device.interface.$ip -o \"$interface\"")
 :set batch_data ($batch_data . " -k device.lastseen.$ip -o \"$lastseen\"")
 :set batch_data ($batch_data . " -k device.ping.loss.$ip -o \"$packet-loss\"")
 :set batch_data ($batch_data . " -k device.ping.time.$ip -o \"$avg-latency\"")
 
 :set batch_counter ($batch_counter + 1)
 
 :if ($batch_counter >= $batch_size) do={
 :execute "zabbix_sender -z $zabbix_server -p 10051 -s MIKROTIK-ROUTER" . $batch_data
 :set batch_data ""
 :set batch_counter 0
 }
 }
}

:if ($batch_counter > 0) do={
 :execute "zabbix_sender -z $zabbix_server -p 10051 -s MIKROTIK-ROUTER" . $batch_data
}

Этот скрипт передает данные пакетами по 10 устройств, что значительно уменьшает нагрузку на сеть и Mikrotik.


Источники

  1. Zabbix Mikrotik Documentation — Официальная документация по мониторингу устройств Mikrotik в Zabbix: https://www.zabbix.com/documentation/current/en/manual/config/templates_out_of_the_box/network_devices

  2. Layer-X Tech Integration Guide — Подробное руководство по интеграции Mikrotik с Zabbix с примерами скриптов: https://tech.layer-x.com/integrating-mikrotik-with-zabbix-for-advanced-network-monitoring/

  3. Zabbix Mikrotik SNMP Integration — Официальная интеграция Mikrotik с Zabbix через SNMP: https://www.zabbix.com/integrations/mikrotik_snmp

  4. TechExpert Zabbix Guide — Пошаговая инструкция по базовой настройке SNMP на Mikrotik: https://techexpert.tips/zabbix/monitor-mikrotik-zabbix/

  5. Mikrotik Forum Netwatch Script — Примеры скриптов Mikrotik для мониторинга ping и интеграции с Zabbix: https://forum.mikrotik.com/viewtopic.php?t=205590

  6. Reddit Zabbix Community — Альтернативные методы мониторинга устройств Mikrotik через Zabbix: https://www.reddit.com/r/zabbix/comments/1cg9tlv/does_zabbix_have_any_way_to_monitor_mikrotik/


Заключение

Настройка мониторинга устройств, подключённых к Mikrotik через Zabbix, требует комплексного подхода с использованием различных инструментов Mikrotik RouterOS и возможностей Zabbix. В зависимости от размера сети, требований к мониторингу и доступных ресурсов можно выбрать один из нескольких подходов:

  1. Базовый ping-мониторинг — простой метод для небольшого количества устройств, использующий встроенные возможности Mikrotik и системный лог для передачи данных в Zabbix.

  2. Netwatch Mikrotik — эффективный метод для мониторинга доступности устройств с автоматическим выполнением действий при изменении состояния.

  3. ARP-таблица и скрипты — наиболее гибкий метод для автоматического обнаружения и мониторинга всех подключённых устройств с помощью скриптов Mikrotik и zabbix_sender.

  4. SNMP-мониторинг — стандартный метод, использующий готовые шаблоны Zabbix и протокол SNMP для сбора данных о подключённых устройствах.

Для оптимальной работы системы мониторинга рекомендуется комбинировать несколько методов: использовать SNMP для сбора основной информации о устройствах, скрипты для детального мониторинга доступности, и Netwatch для быстрого реагирования на изменения состояния.

При настройке системы мониторинга важно учитывать производительность Mikrotik и Zabbix, оптимизировать интервалы проверки и фильтровать ненужные устройства. Для крупных сетей рекомендуется использовать пакетную передачу данных и низкоуровневое обнаружение (LLD) в Zabbix для автоматического создания элементов данных.

Таким образом, несмотря на отсутствие готовых шаблонов для этой задачи, комбинируя возможности Mikrotik RouterOS и Zabbix, можно создать эффективную систему мониторинга всех устройств, подключённых к Mikrotik роутеру.

Авторы
Проверено модерацией
Модерация