Мониторинг MikroTik через SNMP — Zabbix и Grafana
Мониторинг сетевого оборудования — критически важная задача для любого администратора. MikroTik RouterOS поддерживает протокол SNMP (Simple Network Management Protocol), который позволяет собирать метрики и получать уведомления о проблемах. В этой статье настроим SNMP на MikroTik, подключим мониторинг через Zabbix и Grafana, разберём ключевые метрики и настроим оповещения.
Руководство актуально для RouterOS 7.20+, Zabbix 7.x, Grafana 11.x.
Описание
Что такое SNMP
SNMP — стандартный протокол мониторинга сетевых устройств. Он позволяет системе мониторинга (Zabbix, PRTG, Nagios, LibreNMS) опрашивать устройство и получать значения метрик: загрузка CPU, объём свободной памяти, трафик на интерфейсах, температура, количество Wi-Fi клиентов и сотни других параметров.
Каждая метрика имеет уникальный идентификатор — OID (Object Identifier). Например:
1.3.6.1.2.1.1.1.0— описание устройства (sysDescr)1.3.6.1.2.1.25.3.3.1.2— загрузка CPU1.3.6.1.2.1.2.2.1.10— входящий трафик на интерфейсе (ifInOctets)
MikroTik поддерживает стандартные MIB (Management Information Base): SNMPv2-MIB, IF-MIB, HOST-RESOURCES-MIB, а также собственные MikroTik-специфичные OID.
SNMP v2c vs v3
| Характеристика | SNMPv2c | SNMPv3 |
|---|---|---|
| Аутентификация | community string (открытый текст) | Username + пароль (MD5/SHA) |
| Шифрование | Нет | Да (DES/AES) |
| Сложность настройки | Минимальная | Умеренная |
| Безопасность | Низкая | Высокая |
| Рекомендация | Только в изолированных сетях | Для продуктивных сред |
Важно: SNMPv2c передаёт community string в открытом виде. Если мониторинг идёт через публичную сеть — используйте только SNMPv3 или SNMP через VPN.
Настройка
Включение SNMP на MikroTik
Базовая настройка SNMP v2c:
[admin@MikroTik] >/snmp/set enabled=yes contact="admin@company.ru" location="Москва, серверная, стойка 3" /snmp/community/set [find name=public] name=MySecretCommunity read-access=yes write-access=no \ addresses=10.0.0.0/8
Параметры:
contact— контактная информация администратора (отображается в системах мониторинга)location— физическое расположение устройстваcommunity— строка авторизации (заменитеpublicна свою)addresses— ограничение доступа по IP (только сервер мониторинга)
Для продуктивной среды настройте SNMPv3:
[admin@MikroTik] >/snmp/set enabled=yes contact="admin@company.ru" location="Office-MSK" # Создаём SNMPv3 пользователя /snmp/community add name=v3user security-name=monitor authentication-protocol=SHA1 \ authentication-password="AuthPassw0rd!" encryption-protocol=AES \ encryption-password="PrivPassw0rd!" read-access=yes write-access=no \ addresses=10.0.1.50/32
Ограничьте доступ к SNMP через firewall:
[admin@MikroTik] >/ip/firewall/filter add chain=input action=accept protocol=udp dst-port=161 \ src-address=10.0.1.50 comment="Allow SNMP from Zabbix" add chain=input action=drop protocol=udp dst-port=161 \ comment="Drop other SNMP"
Проверка SNMP с сервера мониторинга
Перед настройкой Zabbix/Grafana проверьте доступность SNMP с сервера:
[admin@MikroTik] ># SNMPv2c (установите snmp-utils на Linux) snmpwalk -v2c -c MySecretCommunity 192.168.88.1 1.3.6.1.2.1.1.1.0 # SNMPv3 snmpwalk -v3 -l authPriv -u monitor -a SHA -A "AuthPassw0rd!" \ -x AES -X "PrivPassw0rd!" 192.168.88.1 1.3.6.1.2.1.1.1.0 # Должен вернуть: SNMPv2-MIB::sysDescr.0 = STRING: RouterOS 7.20 ...
Ключевые OID для MikroTik
| Метрика | OID | Тип |
|---|---|---|
| Описание системы | 1.3.6.1.2.1.1.1.0 | STRING |
| Uptime | 1.3.6.1.2.1.1.3.0 | TimeTicks |
| CPU Load (%) | 1.3.6.1.2.1.25.3.3.1.2 | INTEGER |
| Total Memory | 1.3.6.1.2.1.25.2.3.1.5.65536 | INTEGER |
| Used Memory | 1.3.6.1.2.1.25.2.3.1.6.65536 | INTEGER |
| Disk Total | 1.3.6.1.2.1.25.2.3.1.5.131072 | INTEGER |
| Disk Used | 1.3.6.1.2.1.25.2.3.1.6.131072 | INTEGER |
| Interface In Octets | 1.3.6.1.2.1.2.2.1.10 | Counter32 |
| Interface Out Octets | 1.3.6.1.2.1.2.2.1.16 | Counter32 |
| Interface Status | 1.3.6.1.2.1.2.2.1.8 | INTEGER |
| Temperature | 1.3.6.1.4.1.14988.1.1.3.10.0 | INTEGER |
| Voltage | 1.3.6.1.4.1.14988.1.1.3.8.0 | INTEGER |
| Wi-Fi Clients (per iface) | 1.3.6.1.4.1.14988.1.1.1.3.1.6 | Counter32 |
| RouterOS Version | 1.3.6.1.4.1.14988.1.1.4.4.0 | STRING |
| Board Name | 1.3.6.1.4.1.14988.1.1.7.8.0 | STRING |
MikroTik-специфичные OID начинаются с 1.3.6.1.4.1.14988 (enterprises.mikrotikExperimentalModule).
Подключение к Zabbix
Zabbix — самая популярная open-source система мониторинга для MikroTik. Zabbix имеет официальные шаблоны для MikroTik.
Шаг 1: Добавление хоста в Zabbix
В веб-интерфейсе Zabbix: Configuration → Hosts → Create Host:
- Host name:
mikrotik-gw - Groups:
Network devices - Interfaces: добавьте SNMP interface, IP:
192.168.88.1, Port:161 - SNMP version:
SNMPv2(или v3) - SNMP community:
MySecretCommunity
Шаг 2: Привязка шаблона
Templates → Link new template:
- Для SNMPv2:
MikroTik by SNMP(встроенный шаблон Zabbix 7.x) - Шаблон автоматически обнаружит интерфейсы, диски, CPU
Встроенный шаблон MikroTik by SNMP включает:
- Обнаружение сетевых интерфейсов (LLD)
- Мониторинг трафика на каждом интерфейсе
- CPU, RAM, Disk utilization
- Temperature monitoring
- Firmware version
- Uptime
- Предустановленные триггеры
Шаг 3: Настройка триггеров (алертов)
Стандартные триггеры из шаблона уже включают важные оповещения. Добавим дополнительные:
| Триггер | Условие | Severity |
|---|---|---|
| High CPU | CPU > 80% в течение 5 минут | Warning |
| Critical CPU | CPU > 95% в течение 2 минут | High |
| Interface Down | Статус интерфейса = down | High |
| High Memory | RAM usage > 90% | Warning |
| Disk Almost Full | Disk usage > 80% | Warning |
| High Temperature | Temperature > 70°C | High |
| RouterOS Updated | Version changed | Information |
| Device Unreachable | No SNMP response for 3 min | Disaster |
Шаг 4: Настройка SNMP Traps (опционально)
MikroTik может отправлять SNMP traps при определённых событиях. Это push-модель вместо pull:
[admin@MikroTik] >/snmp/set trap-community=MySecretCommunity trap-version=2 \ trap-target=10.0.1.50 trap-generators=interfaces,start-trap
Параметр trap-generators:
interfaces— уведомления при изменении статуса интерфейсов (up/down)start-trap— уведомление при перезагрузке устройстваtemp-exception— при превышении температуры
Подключение к Grafana через Prometheus + snmp_exporter
Grafana сама не опрашивает SNMP. Для связки используется Prometheus + snmp_exporter.
Архитектура: MikroTik ← (SNMP) ← snmp_exporter ← (HTTP) ← Prometheus ← (PromQL) ← Grafana
Шаг 1: Установка snmp_exporter
[admin@MikroTik] ># Docker-compose пример version: '3' services: snmp-exporter: image: prom/snmp-exporter:latest ports: - "9116:9116" volumes: - ./snmp.yml:/etc/snmp_exporter/snmp.yml
Шаг 2: Конфигурация Prometheus
yaml# prometheus.yml scrape_configs: - job_name: 'snmp-mikrotik' static_configs: - targets: - 192.168.88.1 # MikroTik IP metrics_path: /snmp params: auth: [public_v2] module: [mikrotik] relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: snmp-exporter:9116
Шаг 3: Dashboard в Grafana
Импортируйте готовый dashboard из Grafana Marketplace:
- Dashboard ID 14420 — MikroTik SNMP (community)
- Dashboard ID 14857 — MikroTik Network Overview
Или создайте свой с ключевыми панелями:
- Traffic per interface (in/out, bps)
- CPU utilization (%)
- Memory utilization (%)
- Temperature gauge
- Uptime
- Active Wi-Fi clients
MikroTik The Dude — встроенный мониторинг
MikroTik предлагает собственное решение для мониторинга — The Dude. Начиная с RouterOS 7, The Dude работает как контейнер (container) непосредственно на MikroTik.
Возможности The Dude:
- Автоматическое обнаружение устройств в сети
- Мониторинг по SNMP, ICMP, DNS, HTTP
- Визуальная карта сети
- Оповещения по email и Telegram
- История метрик
- Бесплатен
Установка The Dude на RouterOS 7 (container):
[admin@MikroTik] ># Включение контейнеров (требуется перезагрузка) /system/device-mode/update container=yes # После перезагрузки /container/envs add name=dude-envs key=TZ value=Europe/Moscow /container/mounts add name=dude-data src=disk1/dude dst=/var/lib/dude /container add remote-image=mikrotik/dude:latest interface=veth-dude envlist=dude-envs \ mounts=dude-data start-on-boot=yes logging=yes
Примечание: The Dude в контейнере требует устройство с достаточным объёмом RAM (минимум 512 MB) и диска (минимум 512 MB). На hAP ax2 (1 GB RAM) работает нормально, на hAP lite — нет.
Проверка
Проверка SNMP на MikroTik
[admin@MikroTik] ># Статус SNMP /snmp/print # Список communities /snmp/community/print detail # Проверка OID (локальный тест) /snmp/print oid # Статистика SNMP-запросов /snmp/print stats
Проверка с сервера мониторинга
[admin@MikroTik] ># Получить описание системы snmpget -v2c -c MySecretCommunity 192.168.88.1 1.3.6.1.2.1.1.1.0 # Получить загрузку CPU snmpget -v2c -c MySecretCommunity 192.168.88.1 1.3.6.1.2.1.25.3.3.1.2.1 # Получить трафик на всех интерфейсах snmpwalk -v2c -c MySecretCommunity 192.168.88.1 1.3.6.1.2.1.2.2.1.10 # Получить имена интерфейсов snmpwalk -v2c -c MySecretCommunity 192.168.88.1 1.3.6.1.2.1.2.2.1.2 # Получить температуру snmpget -v2c -c MySecretCommunity 192.168.88.1 1.3.6.1.4.1.14988.1.1.3.10.0 # Получить версию RouterOS snmpget -v2c -c MySecretCommunity 192.168.88.1 1.3.6.1.4.1.14988.1.1.4.4.0
Проверка в Zabbix
После добавления хоста подождите 5–10 минут и проверьте:
- Monitoring → Latest data → выберите хост
mikrotik-gw— должны появиться метрики - Monitoring → Graphs → выберите хост — графики трафика на интерфейсах
- Monitoring → Problems — не должно быть ложных срабатываний
Мониторинг средствами RouterOS
Даже без внешних систем MikroTik предоставляет базовый мониторинг:
[admin@MikroTik] ># Текущая загрузка CPU и RAM /system/resource/print # История загрузки CPU /system/resource/cpu/print # Мониторинг трафика на интерфейсе в реальном времени /interface/monitor-traffic ether1 duration=10s # Температура и напряжение /system/health/print # Лог системных событий /log/print where topics~"system" # Netwatch — мониторинг доступности хостов /tool/netwatch/add host=8.8.8.8 interval=30s \ up-script=":log info \"Google DNS is UP\"" \ down-script=":log warning \"Google DNS is DOWN\"; \ /tool/e-mail/send to=admin@company.ru subject=\"Alert: Google DNS down\" body=\"Check internet connection\""
Типичные ошибки
1. Community string = public
Дефолтное значение public — первое, что пробует любой сканер. Обязательно измените community на уникальную строку и ограничьте доступ по IP.
[admin@MikroTik] ># НЕПРАВИЛЬНО: /snmp/community/set [find name=public] read-access=yes # ПРАВИЛЬНО: /snmp/community/set [find name=public] name=Xk9mP2vB7nQ read-access=yes \ addresses=10.0.1.50/32
2. SNMP доступен из WAN
Если SNMP не защищён firewall, он будет доступен из интернета. Это не только угроза безопасности, но и может использоваться для DDoS-амплификации (SNMP reflection attack).
[admin@MikroTik] ># Убедитесь, что SNMP заблокирован на WAN /ip/firewall/filter/print where chain=input and dst-port=161
3. Слишком частый polling
Опрос SNMP каждые 10 секунд создаёт заметную нагрузку на CPU маршрутизатора, особенно на бюджетных моделях. Рекомендуемые интервалы:
| Метрика | Интервал опроса |
|---|---|
| Трафик на интерфейсах | 60 секунд |
| CPU, RAM | 60 секунд |
| Temperature | 300 секунд |
| Uptime, version | 3600 секунд |
| Interface discovery (LLD) | 3600 секунд |
4. Counter32 overflow на загруженных интерфейсах
OID ifInOctets (1.3.6.1.2.1.2.2.1.10) использует Counter32, который переполняется при ~4.3 GB. На гигабитном интерфейсе с полной загрузкой это происходит каждые ~34 секунды. Используйте 64-битные счётчики:
| 32-bit OID | 64-bit OID | Описание |
|---|---|---|
| ifInOctets (1.3.6.1.2.1.2.2.1.10) | ifHCInOctets (1.3.6.1.2.1.31.1.1.1.6) | Входящий трафик |
| ifOutOctets (1.3.6.1.2.1.2.2.1.16) | ifHCOutOctets (1.3.6.1.2.1.31.1.1.1.10) | Исходящий трафик |
Шаблон MikroTik by SNMP в Zabbix 7.x уже использует HC (64-bit) счётчики по умолчанию.
5. Не настроены трапы для критических событий
SNMP polling обнаруживает проблему только при следующем опросе (задержка до интервала). Для критических событий (interface down, reboot) используйте traps:
[admin@MikroTik] >/snmp/set trap-target=10.0.1.50 trap-community=MySecretCommunity \ trap-version=2 trap-generators=interfaces,start-trap,temp-exception
6. Мониторинг без алертов
Красивые графики в Grafana бесполезны, если никто их не смотрит. Обязательно настройте оповещения в Zabbix (email, Telegram, SMS) или в Grafana Alerting для критических метрик:
- CPU > 90% дольше 5 минут
- Interface status = down
- Temperature > 70°C
- Устройство недоступно (ICMP/SNMP timeout)
- Disk usage > 85%
7. Забыли про SNMP при обновлении RouterOS
После major-обновления RouterOS (например, 7.x → 7.20) проверьте, что SNMP по-прежнему работает. Иногда обновления могут сбросить настройки SNMP или изменить доступные OID.
[admin@MikroTik] ># После обновления — проверьте /snmp/print /snmp/community/print
Правильно настроенный мониторинг через SNMP — это фундамент стабильной сетевой инфраструктуры. Zabbix с шаблоном MikroTik by SNMP покрывает 90% потребностей. Для визуализации и дашбордов используйте Grafana. А для простых сценариев мониторинга нескольких устройств — попробуйте встроенный The Dude, который не требует отдельного сервера.
/snmp/set enabled=yes contact="admin@company.ru" location="Москва, серверная, стойка 3"
/snmp/community/set [find name=public] name=MySecretCommunity read-access=yes write-access=no \
addresses=10.0.0.0/8
/snmp/set enabled=yes contact="admin@company.ru" location="Office-MSK"
# Создаём SNMPv3 пользователя
/snmp/community
add name=v3user security-name=monitor authentication-protocol=SHA1 \
authentication-password="AuthPassw0rd!" encryption-protocol=AES \
encryption-password="PrivPassw0rd!" read-access=yes write-access=no \
addresses=10.0.1.50/32
/ip/firewall/filter
add chain=input action=accept protocol=udp dst-port=161 \
src-address=10.0.1.50 comment="Allow SNMP from Zabbix"
add chain=input action=drop protocol=udp dst-port=161 \
comment="Drop other SNMP"
# SNMPv2c (установите snmp-utils на Linux)
snmpwalk -v2c -c MySecretCommunity 192.168.88.1 1.3.6.1.2.1.1.1.0
# SNMPv3
snmpwalk -v3 -l authPriv -u monitor -a SHA -A "AuthPassw0rd!" \
-x AES -X "PrivPassw0rd!" 192.168.88.1 1.3.6.1.2.1.1.1.0
# Должен вернуть: SNMPv2-MIB::sysDescr.0 = STRING: RouterOS 7.20 ...
/snmp/set trap-community=MySecretCommunity trap-version=2 \
trap-target=10.0.1.50 trap-generators=interfaces,start-trap
# Docker-compose пример
version: '3'
services:
snmp-exporter:
image: prom/snmp-exporter:latest
ports:
- "9116:9116"
volumes:
- ./snmp.yml:/etc/snmp_exporter/snmp.yml
**Шаг 3: Dashboard в Grafana**
Импортируйте готовый dashboard из Grafana Marketplace:
- Dashboard ID **14420** — MikroTik SNMP (community)
- Dashboard ID **14857** — MikroTik Network Overview
Или создайте свой с ключевыми панелями:
- Traffic per interface (in/out, bps)
- CPU utilization (%)
- Memory utilization (%)
- Temperature gauge
- Uptime
- Active Wi-Fi clients
#### MikroTik The Dude — встроенный мониторинг
MikroTik предлагает собственное решение для мониторинга — **The Dude**. Начиная с RouterOS 7, The Dude работает как контейнер (container) непосредственно на MikroTik.
Возможности The Dude:
- Автоматическое обнаружение устройств в сети
- Мониторинг по SNMP, ICMP, DNS, HTTP
- Визуальная карта сети
- Оповещения по email и Telegram
- История метрик
- Бесплатен
Установка The Dude на RouterOS 7 (container):
> **Примечание:** The Dude в контейнере требует устройство с достаточным объёмом RAM (минимум 512 MB) и диска (минимум 512 MB). На hAP ax2 (1 GB RAM) работает нормально, на hAP lite — нет.
### Проверка
#### Проверка SNMP на MikroTik
#### Проверка с сервера мониторинга
#### Проверка в Zabbix
После добавления хоста подождите 5–10 минут и проверьте:
- Monitoring → Latest data → выберите хост `mikrotik-gw` — должны появиться метрики
- Monitoring → Graphs → выберите хост — графики трафика на интерфейсах
- Monitoring → Problems — не должно быть ложных срабатываний
#### Мониторинг средствами RouterOS
Даже без внешних систем MikroTik предоставляет базовый мониторинг:
### Типичные ошибки
**1. Community string = public**
Дефолтное значение `public` — первое, что пробует любой сканер. Обязательно измените community на уникальную строку и ограничьте доступ по IP.
**2. SNMP доступен из WAN**
Если SNMP не защищён firewall, он будет доступен из интернета. Это не только угроза безопасности, но и может использоваться для DDoS-амплификации (SNMP reflection attack).
**3. Слишком частый polling**
Опрос SNMP каждые 10 секунд создаёт заметную нагрузку на CPU маршрутизатора, особенно на бюджетных моделях. Рекомендуемые интервалы:
| Метрика | Интервал опроса |
|---------|----------------|
| Трафик на интерфейсах | 60 секунд |
| CPU, RAM | 60 секунд |
| Temperature | 300 секунд |
| Uptime, version | 3600 секунд |
| Interface discovery (LLD) | 3600 секунд |
**4. Counter32 overflow на загруженных интерфейсах**
OID `ifInOctets` (1.3.6.1.2.1.2.2.1.10) использует Counter32, который переполняется при ~4.3 GB. На гигабитном интерфейсе с полной загрузкой это происходит каждые ~34 секунды. Используйте 64-битные счётчики:
| 32-bit OID | 64-bit OID | Описание |
|------------|------------|----------|
| ifInOctets (1.3.6.1.2.1.2.2.1.10) | ifHCInOctets (1.3.6.1.2.1.31.1.1.1.6) | Входящий трафик |
| ifOutOctets (1.3.6.1.2.1.2.2.1.16) | ifHCOutOctets (1.3.6.1.2.1.31.1.1.1.10) | Исходящий трафик |
Шаблон `MikroTik by SNMP` в Zabbix 7.x уже использует HC (64-bit) счётчики по умолчанию.
**5. Не настроены трапы для критических событий**
SNMP polling обнаруживает проблему только при следующем опросе (задержка до интервала). Для критических событий (interface down, reboot) используйте traps:
**6. Мониторинг без алертов**
Красивые графики в Grafana бесполезны, если никто их не смотрит. Обязательно настройте оповещения в Zabbix (email, Telegram, SMS) или в Grafana Alerting для критических метрик:
- CPU > 90% дольше 5 минут
- Interface status = down
- Temperature > 70°C
- Устройство недоступно (ICMP/SNMP timeout)
- Disk usage > 85%
**7. Забыли про SNMP при обновлении RouterOS**
После major-обновления RouterOS (например, 7.x → 7.20) проверьте, что SNMP по-прежнему работает. Иногда обновления могут сбросить настройки SNMP или изменить доступные OID.