mikrotik-wiki.ru
Главная
Загрузка...

Мониторинг MikroTik в Zabbix — полное руководство

RouterOS 7.xМониторинг15 мин430 мар. 2026 г.
TelegramVK

Zabbix — одна из самых популярных open-source систем мониторинга в мире. Она поддерживает сбор данных через SNMP, что делает её идеальным инструментом для мониторинга MikroTik RouterOS. В отличие от стека Prometheus + Grafana, Zabbix предоставляет всё в одном: сбор данных, хранение, визуализацию, оповещения и автообнаружение — без необходимости собирать пайплайн из нескольких компонентов. В этом руководстве развернём Zabbix Server через Docker Compose, настроим SNMP на MikroTik, подключим роутер к мониторингу, настроим триггеры, графики, автообнаружение и оповещения в Telegram.

Руководство актуально для RouterOS 7.20+, Zabbix 7.0 LTS.

Описание

Архитектура мониторинга

Схема взаимодействия компонентов:

code
MikroTik Router(s) ←[SNMP UDP 161]→ Zabbix Server ←[HTTP :8080]→ Zabbix Web Frontend
                                          ↓
                                    PostgreSQL (хранилище данных)

Компоненты:

  • Zabbix Server — ядро системы. Опрашивает устройства по SNMP, обрабатывает данные, проверяет триггеры, отправляет оповещения. Написан на C, работает как daemon.

  • Zabbix Web Frontend — веб-интерфейс на PHP (Apache/Nginx). Через него настраиваются хосты, шаблоны, триггеры, дашборды.

  • PostgreSQL — база данных для хранения конфигурации, истории метрик и событий. Альтернативы: MySQL/MariaDB, TimescaleDB (рекомендуется для больших инсталляций).

  • MikroTik SNMP Agent — встроенный SNMP-сервис RouterOS, отдающий метрики по запросу.

Что Zabbix умеет мониторить на MikroTik

С помощью официального шаблона Zabbix собирает десятки метрик:

КатегорияМетрикиПримеры
SystemCPU, RAM, disk, uptime, firmwarecpu-load, free-memory, total-hdd-space
InterfacesTraffic in/out, errors, discards, statusifHCInOctets, ifHCOutOctets, ifOperStatus
TemperatureCPU temp, board tempmtxrHlTemperature, mtxrHlProcessorTemperature
VoltageInput voltage, PoEmtxrHlVoltage
FirmwareInstalled version, latest availablemtxrFirmwareVersion, mtxrFirmwareLatestVersion
Wi-FiRegistered clients, signal, frequencymtxrWlApClientCount
DHCPActive leases
RoutesActive routes countinetCidrRouteNumber
ConnectionsActive firewall connections
IdentitySystem name, location, contactsysName, sysLocation, sysContact

Zabbix vs Prometheus/Grafana

ПараметрZabbixPrometheus + Grafana
Тип решенияAll-in-oneНабор компонентов
Сбор данныхВстроенный (SNMP, agent, JMX...)Экспортеры (MKTXP, SNMP Exporter)
ХранилищеSQL (PostgreSQL, MySQL)TSDB (собственная)
ВизуализацияВстроенная (скромная)Grafana (богатая)
АвтообнаружениеВстроенные LLD-правилаНет из коробки
ШаблоныОфициальные шаблоны для MikroTikГотовые дашборды
ОповещенияВстроенные (email, Telegram, SMS)Alertmanager (отдельный)
МасштабированиеZabbix Proxy для распределённого мониторингаFederation, Thanos
Кривая обученияСредняяВысокая

Рекомендация: Zabbix лучше подходит для enterprise-среды с гетерогенным оборудованием (MikroTik + Cisco + серверы + ОС). Prometheus + Grafana — для DevOps-среды и когда нужна максимальная гибкость визуализации.

Настройка

Шаг 1: установка Zabbix Server через Docker Compose

Создайте каталог для Zabbix и файл docker-compose.yml:

bash
mkdir -p /opt/zabbix && cd /opt/zabbix

Содержимое docker-compose.yml:

yaml
version: '3.8'

services:
  postgres:
    image: postgres:16-alpine
    container_name: zabbix-postgres
    environment:
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: ZabbixDBPass2024!
      POSTGRES_DB: zabbix
    volumes:
      - zabbix-postgres-data:/var/lib/postgresql/data
    restart: unless-stopped
    networks:
      - zabbix-net

  zabbix-server:
    image: zabbix/zabbix-server-pgsql:7.0-alpine-latest
    container_name: zabbix-server
    environment:
      DB_SERVER_HOST: postgres
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: ZabbixDBPass2024!
      POSTGRES_DB: zabbix
      ZBX_STARTPOLLERS: 10
      ZBX_STARTPINGERS: 5
      ZBX_STARTTRAPPERS: 5
      ZBX_STARTVMWARECOLLECTORS: 0
      ZBX_CACHESIZE: 128M
      ZBX_HISTORYCACHESIZE: 64M
      ZBX_TRENDCACHESIZE: 32M
    ports:
      - "10051:10051"
    volumes:
      - zabbix-snmptraps:/var/lib/zabbix/snmptraps
      - zabbix-export:/var/lib/zabbix/export
    depends_on:
      - postgres
    restart: unless-stopped
    networks:
      - zabbix-net

  zabbix-web:
    image: zabbix/zabbix-web-nginx-pgsql:7.0-alpine-latest
    container_name: zabbix-web
    environment:
      DB_SERVER_HOST: postgres
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: ZabbixDBPass2024!
      POSTGRES_DB: zabbix
      ZBX_SERVER_HOST: zabbix-server
      PHP_TZ: Europe/Moscow
    ports:
      - "8080:8080"
    depends_on:
      - zabbix-server
    restart: unless-stopped
    networks:
      - zabbix-net

volumes:
  zabbix-postgres-data:
  zabbix-snmptraps:
  zabbix-export:

networks:
  zabbix-net:
    driver: bridge

Запустите стек:

bash
docker compose up -d

Через 1-2 минуты откройте http://<IP-сервера>:8080. Логин: Admin, пароль: zabbix. Первым делом смените пароль администратора через Users → Admin → Change password.

Шаг 2: настройка SNMP на MikroTik

Для мониторинга через Zabbix на роутере должен быть включён SNMP. Настроим SNMPv2c для начала (для продуктивной среды используйте SNMPv3).

SNMPv2c (базовая настройка):

[admin@MikroTik] >
# Включаем SNMP
/snmp/set enabled=yes contact="admin@company.ru" location="Office, rack 1"

# Меняем community string (никогда не оставляйте public!)
/snmp/community/set [find default=yes] name=MikroTikZabbix2024 \
  read-access=yes write-access=no addresses=10.0.1.50/32

# Проверяем
/snmp/print
/snmp/community/print

Параметр addresses — IP-адрес Zabbix Server. Это критически важно для безопасности: без ограничения любой хост в сети сможет читать метрики.

SNMPv3 (рекомендуется для production):

[admin@MikroTik] >
/snmp/set enabled=yes contact="noc@company.ru" location="DC-Moscow"

/snmp/community/add name=zabbix-v3 security-name=zabbix-mon \
  authentication-protocol=SHA1 authentication-password="AuthZabbix2024!" \
  encryption-protocol=AES encryption-password="PrivZabbix2024!" \
  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 Server" \
  place-before=*[find where action=drop chain=input]
add chain=input action=drop protocol=udp dst-port=161 \
  comment="Drop all other SNMP"

Настройка interface list для SNMP (ограничение видимости):

По умолчанию SNMP отдаёт информацию обо всех интерфейсах. Если нужно ограничить:

[admin@MikroTik] >
# Создаём list для SNMP-мониторинга
/interface/list/add name=snmp-monitor comment="Interfaces visible in SNMP"
/interface/list/member/add interface=ether1 list=snmp-monitor
/interface/list/member/add interface=bridge1 list=snmp-monitor
/interface/list/member/add interface=wireguard1 list=snmp-monitor

Примечание: в RouterOS ограничение видимости интерфейсов через SNMP напрямую не поддерживается. Фильтрация выполняется на стороне Zabbix (через фильтры в Discovery Rules).

Шаг 3: проверка SNMP с сервера Zabbix

Перед добавлением хоста в Zabbix убедитесь, что SNMP работает:

[admin@MikroTik] >
# Установка snmp-утилит
apt install -y snmp snmp-mibs-downloader

# SNMPv2c — получаем sysName
snmpget -v2c -c MikroTikZabbix2024 192.168.88.1 1.3.6.1.2.1.1.5.0

# SNMPv2c — обход всех OID
snmpwalk -v2c -c MikroTikZabbix2024 192.168.88.1 1.3.6.1.2.1.1

# SNMPv3
snmpget -v3 -l authPriv -u zabbix-mon -a SHA -A "AuthZabbix2024!" \
  -x AES -X "PrivZabbix2024!" 192.168.88.1 1.3.6.1.2.1.1.5.0

Если команда возвращает имя роутера — SNMP работает корректно.

Шаг 4: добавление MikroTik в Zabbix

  1. Откройте Zabbix Web: Data collection → Hosts → Create host.

  2. Заполните поля:

    • Host name: MikroTik-GW-01
    • Visible name: MikroTik Gateway (192.168.88.1)
    • Groups: создайте группу MikroTik Routers
    • Templates: найдите и добавьте MikroTik RouterOS by SNMP (встроенный шаблон)
  3. На вкладке Interfaces добавьте SNMP-интерфейс:

    • Type: SNMP
    • IP address: 192.168.88.1
    • Port: 161
    • SNMP version: SNMPv2
    • SNMP community: MikroTikZabbix2024
  4. Для SNMPv3:

    • SNMP version: SNMPv3
    • Security name: zabbix-mon
    • Security level: authPriv
    • Authentication protocol: SHA1
    • Authentication passphrase: AuthZabbix2024!
    • Privacy protocol: AES128
    • Privacy passphrase: PrivZabbix2024!
  5. Нажмите Add. Через 1-2 минуты рядом с хостом появится зелёный индикатор SNMP — значит данные успешно собираются.

Шаг 5: официальный шаблон MikroTik RouterOS by SNMP

Шаблон MikroTik RouterOS by SNMP входит в стандартную поставку Zabbix 7.0. Он содержит:

Items (метрики):

  • System: CPU utilization, memory used/total, disk used/total, uptime, firmware version
  • Interfaces: traffic in/out (bits/s), errors in/out, discards in/out, operational status, speed
  • Temperature: processor temperature, board temperature
  • Voltage: input voltage
  • Identity: system name, contact, location, description

Triggers (встроенные):

  • High CPU utilization (>90% в течение 5 минут)
  • High memory utilization (>90%)
  • Device has been restarted (uptime < 10 минут)
  • Firmware has changed
  • No SNMP data collection (нет данных более 5 минут)
  • Network interface link down
  • High error rate on interface

Discovery Rules (автообнаружение):

  • Network interfaces discovery — автоматически находит все интерфейсы и создаёт items/triggers для каждого
  • Storage discovery — находит дисковые разделы

Шаблон покрывает 80% потребностей. Остальные 20% — custom items.

Шаг 6: custom items — мониторинг специфичных метрик

Температура процессора

Если шаблон не собирает температуру (зависит от модели), добавьте вручную:

  1. Data collection → Hosts → MikroTik-GW-01 → Items → Create item
  2. Параметры:
    • Name: CPU Temperature
    • Type: SNMP agent
    • Key: mikrotik.cpu.temperature
    • SNMP OID: 1.3.6.1.4.1.14988.1.1.3.11.0
    • Type of information: Numeric (float)
    • Units: °C
    • Update interval: 60s

Количество Wi-Fi клиентов

code
OID: 1.3.6.1.4.1.14988.1.1.1.3.1.6

Это таблица — для каждого Wi-Fi интерфейса свой OID. Используйте Discovery Rule для автоматического обнаружения Wi-Fi интерфейсов и создания items.

Активные VPN-сессии

Для подсчёта активных PPP-сессий (L2TP, SSTP, PPPoE):

code
OID: 1.3.6.1.4.1.14988.1.1.5.1.0 (PPP active sessions)

Создайте item:

  • Name: Active VPN Sessions
  • SNMP OID: 1.3.6.1.4.1.14988.1.1.5.1.0
  • Type of information: Numeric (unsigned)
  • Update interval: 30s

Счётчики firewall-правил

Для мониторинга срабатываний конкретного firewall-правила потребуется SNMP OID из таблицы:

code
1.3.6.1.4.1.14988.1.1.2 — MikroTik firewall table

На MikroTik можно присвоить comment к правилу и искать по нему:

[admin@MikroTik] >
# Добавляем comment к важным правилам
/ip/firewall/filter/set [find where action=drop chain=input] \
  comment="drop-input-all"

Для мониторинга счётчиков через Zabbix создайте SNMP Discovery Rule с OID 1.3.6.1.4.1.14988.1.1.2.1.1.2 (имена правил) и items для bytes/packets.

Шаг 7: настройка триггеров

Триггеры — это условия, при выполнении которых Zabbix генерирует алерт.

CPU > 80%

  1. Data collection → Hosts → MikroTik-GW-01 → Triggers → Create trigger
  2. Параметры:
    • Name: CPU utilization is above 80% on {HOST.NAME}
    • Severity: Warning
    • Expression: avg(/MikroTik-GW-01/system.cpu.util[hrProcessorLoad.1],5m)>80

RAM > 90%

  • Name: Memory utilization is above 90% on {HOST.NAME}
  • Severity: High
  • Expression: last(/MikroTik-GW-01/vm.memory.util[memoryUsedPercentage])>90

Интерфейс упал

Этот триггер уже включён в шаблон, но можно создать кастомный с другим severity:

  • Name: Interface {#IFNAME} is down on {HOST.NAME}
  • Severity: Disaster
  • Expression: last(/MikroTik-GW-01/net.if.status[ifOperStatus.{#SNMPINDEX}])=2

Температура > 70°C

  • Name: CPU temperature is above 70°C on {HOST.NAME}
  • Severity: High
  • Expression: last(/MikroTik-GW-01/mikrotik.cpu.temperature)>70
  • Recovery expression: last(/MikroTik-GW-01/mikrotik.cpu.temperature)<65

Recovery expression с гистерезисом (65°C) предотвращает мигание триггера при температуре на границе порога.

Устройство недоступно

  • Name: {HOST.NAME} is unreachable by SNMP
  • Severity: Disaster
  • Expression: nodata(/MikroTik-GW-01/sysUpTime,300s)=1

Шаг 8: графики и дашборды

Создание графика

  1. Data collection → Hosts → MikroTik-GW-01 → Graphs → Create graph
  2. Пример — трафик на WAN-интерфейсе:
    • Name: WAN Traffic (ether1)
    • Items: добавьте Interface ether1: Bits received и Interface ether1: Bits sent
    • Graph type: Normal
    • Show working time: включить

Создание дашборда

  1. Dashboards → Create dashboard
  2. Рекомендуемые виджеты:
    • Graph — трафик WAN-интерфейса
    • Graph — CPU и RAM загрузка
    • Plain text — текущий firmware, uptime
    • Problems — список активных проблем
    • Top hosts — топ роутеров по CPU

Пример компоновки дашборда для NOC:

ВиджетРазмерОписание
System info1/4 экранаUptime, firmware, model
CPU & RAM1/4 экранаГрафики загрузки за 24ч
WAN Traffic1/2 экранаIn/Out за 24ч
Problems1/4 экранаТекущие алерты
Top Talkers1/4 экранаИнтерфейсы с максимальным трафиком

Шаг 9: Discovery Rules — автоматическое обнаружение

Low-Level Discovery (LLD) — мощная функция Zabbix, автоматически создающая items, triggers и graphs для обнаруженных объектов.

Автообнаружение интерфейсов

Уже включено в стандартный шаблон. Zabbix периодически опрашивает OID 1.3.6.1.2.1.2.2.1.2 (ifDescr), находит все интерфейсы и для каждого создаёт:

  • Items: traffic in/out, errors, discards, status
  • Triggers: interface down, high error rate
  • Graphs: traffic graph per interface

Можно настроить фильтры, чтобы исключить ненужные интерфейсы:

  1. Data collection → Hosts → MikroTik-GW-01 → Discovery rules → Network interfaces discovery → Filters
  2. Добавьте фильтр: {#IFNAME} not matches loopback|dummy``

Автообнаружение DHCP-leases

Для мониторинга DHCP-пулов создайте custom Discovery Rule:

  • Name: DHCP Lease Discovery
  • Type: SNMP agent
  • Key: mikrotik.dhcp.discovery
  • SNMP OID: discovery[{#POOLNAME},1.3.6.1.4.1.14988.1.1.17.1.1.2]
  • Update interval: 1h

Шаг 10: мониторинг нескольких роутеров

Для масштабного мониторинга:

  1. Настройте SNMP на каждом роутере (используйте скрипт):
[admin@MikroTik] >
# Единый скрипт для всех роутеров
/snmp/set enabled=yes contact="noc@company.ru" \
  location=[/system/identity/get name]
/snmp/community/set [find default=yes] name=MikroTikZabbix2024 \
  read-access=yes write-access=no addresses=10.0.1.50/32
  1. В Zabbix используйте Network Discovery для автоматического обнаружения роутеров:

    • Data collection → Discovery → Create discovery rule
    • IP range: 10.0.0.0/24 (подсеть управления)
    • Checks: SNMP (community MikroTikZabbix2024, OID 1.3.6.1.2.1.1.1.0)
    • Device uniqueness: IP address
    • Actions: при обнаружении автоматически добавлять хост в группу MikroTik Routers и применять шаблон MikroTik RouterOS by SNMP
  2. Для распределённых сетей используйте Zabbix Proxy:

yaml
# Добавьте в docker-compose.yml
  zabbix-proxy:
    image: zabbix/zabbix-proxy-sqlite3:7.0-alpine-latest
    container_name: zabbix-proxy-branch1
    environment:
      ZBX_HOSTNAME: proxy-branch1
      ZBX_SERVER_HOST: zabbix-server
      ZBX_PROXYMODE: 0
    ports:
      - "10053:10051"
    restart: unless-stopped
    networks:
      - zabbix-net

Zabbix Proxy устанавливается на удалённой площадке, опрашивает локальные роутеры и передаёт данные центральному серверу. Это снижает нагрузку на WAN-канал и повышает надёжность.

Шаг 11: оповещения по email

  1. Alerts → Media types → Email:

    • SMTP server: smtp.gmail.com
    • SMTP port: 587
    • SMTP email: zabbix@company.ru
    • Authentication: username + password (или app password для Gmail)
    • Security: STARTTLS
  2. Users → Admin → Media → Add:

    • Type: Email
    • Send to: admin@company.ru
    • When active: 1-7,00:00-24:00
    • Severity: выберите нужные уровни
  3. Alerts → Actions → Trigger actions → Create action:

    • Name: Send alerts for MikroTik
    • Conditions: Host group = MikroTik Routers
    • Operations: Send message to user Admin via Email

Шаг 12: оповещения в Telegram

Telegram — самый популярный способ получения алертов для русскоязычных администраторов.

Создание бота:

  1. Напишите @BotFather в Telegram
  2. Команда /newbot, задайте имя: Zabbix MikroTik Bot
  3. Скопируйте API Token: 1234567890:AAHxxxxxxxxxxxxxxxxxxxxxx
  4. Создайте группу (или канал) и добавьте бота
  5. Получите Chat ID через https://api.telegram.org/bot<TOKEN>/getUpdates

Настройка в Zabbix:

  1. Alerts → Media types — найдите встроенный Telegram
  2. Установите параметр Token: 1234567890:AAHxxxxxxxxxxxxxxxxxxxxxx
  3. Users → Admin → Media → Add:
    • Type: Telegram
    • Send to: -1001234567890 (Chat ID группы)
  4. Проверьте отправкой тестового сообщения: Alerts → Media types → Telegram → Test

Формат сообщений настраивается в шаблоне Media type. По умолчанию Zabbix отправляет:

code
Problem: CPU utilization is above 80% on MikroTik-GW-01
Host: MikroTik-GW-01
Severity: Warning
Time: 2026-03-28 14:35:00

Проверка

Проверка сбора данных

После добавления хоста проверьте, что данные поступают:

  1. Monitoring → Latest data → Host: MikroTik-GW-01 — здесь отображаются все собранные метрики с последним значением и временем обновления.

  2. Ключевые метрики для проверки:

    • system.cpu.util — загрузка CPU (должно быть числовое значение)
    • vm.memory.util — загрузка RAM
    • system.uptime — аптайм (должен расти)
    • net.if.in/out — трафик (должен меняться)
  3. Если данные не поступают — проверьте индикатор SNMP на странице хостов. Красный значок означает ошибку.

Проверка SNMP на MikroTik

[admin@MikroTik] >
# Проверяем, что SNMP включён
/snmp/print

# Проверяем community
/snmp/community/print

# Смотрим счётчики SNMP-запросов
/snmp/print stats

Если счётчик packets-received растёт — Zabbix успешно опрашивает роутер.

Проверка триггеров

Для тестирования триггера CPU > 80% можно искусственно нагрузить роутер:

[admin@MikroTik] >
# Генерируем нагрузку на CPU (отправка 1000 ping-пакетов)
/tool/flood-ping 8.8.8.8 count=10000 size=1500

# Или через bandwidth-test (если есть второй MikroTik)
/tool/bandwidth-test address=192.168.88.2 duration=60s

Через 5 минут (avg интервал триггера) Zabbix должен сгенерировать алерт. Проверьте: Monitoring → Problems.

Проверка оповещений

  1. Alerts → Media types → Telegram → Test: введите Chat ID и текст, нажмите Test — должно прийти сообщение.
  2. Alerts → Actions → Trigger actions: убедитесь, что action включён (Status: Enabled).
  3. Reports → Action log: здесь видна история отправки оповещений и ошибки.

Диагностика с сервера

[admin@MikroTik] >
# Проверка SNMP доступности
snmpwalk -v2c -c MikroTikZabbix2024 192.168.88.1 sysDescr.0

# Проверка конкретного OID (CPU)
snmpget -v2c -c MikroTikZabbix2024 192.168.88.1 \
  1.3.6.1.2.1.25.3.3.1.2.1

# Просмотр логов Zabbix Server
docker logs zabbix-server --tail 50

# Проверка подключения Zabbix к PostgreSQL
docker exec -it zabbix-postgres psql -U zabbix -c "SELECT count(*) FROM hosts;"

Типичные ошибки

1. SNMP timeout — Zabbix не может подключиться к роутеру

Симптомы: красный индикатор SNMP на странице хостов, сообщение Timeout while connecting.

Причины и решения:

  • SNMP не включён на MikroTik: /snmp/set enabled=yes
  • Неправильный community string: проверьте совпадение в /snmp/community/print и настройках хоста Zabbix
  • Firewall на MikroTik блокирует UDP 161: добавьте разрешающее правило перед drop
  • Firewall на сервере Zabbix блокирует исходящий UDP 161
  • Неправильный IP-адрес в addresses= community — Zabbix Server должен быть в списке
[admin@MikroTik] >
# Быстрая диагностика — разрешить SNMP отовсюду (временно!)
/snmp/community/set [find] addresses=0.0.0.0/0

# После успешного подключения — вернуть ограничение
/snmp/community/set [find] addresses=10.0.1.50/32

2. Данные собираются, но триггеры не срабатывают

Причины:

  • Триггер отключён (Disabled)
  • Expression использует имя хоста, а не макрос {HOST.NAME}
  • Период усреднения слишком большой (avg 1h вместо 5m)
  • Данные не попадают в нужный item (проверьте ключ)

Решение: Проверьте expression через Configuration → Hosts → Triggers → Test. Zabbix 7.0 позволяет тестировать триггеры с текущими данными.

3. Оповещения не приходят

Причины:

  • Media type не настроен или отключён
  • У пользователя нет Media (Send to пустой)
  • Action не создан или отключён
  • Severity действия не совпадает с severity триггера
  • SMTP-сервер блокирует подключение (Gmail требует App Password)
  • Telegram Bot Token невалидный или бот не добавлен в группу

Диагностика:

[admin@MikroTik] >
# Проверьте лог Zabbix Server
docker logs zabbix-server 2>&1 | grep -i "alert\|media\|notification"

В веб-интерфейсе: Reports → Action log — показывает статус каждой попытки отправки.

4. Высокое потребление дискового пространства

Zabbix хранит всю историю метрик в PostgreSQL. При мониторинге 10+ роутеров с интервалом 30 секунд база быстро растёт.

Решение:

  1. Настройте Housekeeping: Administration → General → Housekeeping:

    • History retention: 90d (90 дней детальных данных)
    • Trend retention: 365d (1 год агрегированных данных)
  2. Увеличьте интервал опроса для некритичных метрик (60s → 300s)

  3. Для больших инсталляций используйте TimescaleDB вместо обычного PostgreSQL:

yaml
# Замените postgres image на TimescaleDB
postgres:
  image: timescale/timescaledb:latest-pg16
  environment:
    POSTGRES_USER: zabbix
    POSTGRES_PASSWORD: ZabbixDBPass2024!
    POSTGRES_DB: zabbix

5. Discovery обнаруживает слишком много интерфейсов

MikroTik создаёт множество виртуальных интерфейсов (bridge ports, VLAN sub-interfaces, loopback). Discovery создаёт items и triggers для всех.

Решение: Добавьте фильтры в Discovery Rule:

  1. Discovery rules → Network interfaces discovery → Filters
  2. Добавьте: {#IFNAME} not matches ^(loopback|dummy|bridge-port).*``
  3. Или включите только нужные: {#IFNAME} matches ^(ether|sfp|wlan|bridge|wireguard|vlan).*``

6. Ошибка "No SNMP data collection"

Это trigger от стандартного шаблона. Срабатывает, когда Zabbix не получает SNMP-данные более 5 минут.

Возможные причины:

  • Роутер перезагружается
  • Сетевая проблема между Zabbix и роутером
  • SNMP community был изменён
  • Роутер перегружен и не отвечает на SNMP-запросы вовремя

Решение: увеличьте timeout в настройках хоста: Hosts → MikroTik-GW-01 → SNMP interface → Timeout: с 3s до 5s или 10s.

7. Неправильное время в алертах

Причина: рассинхронизация времени между Zabbix Server и MikroTik.

[admin@MikroTik] >
# Настройте NTP на MikroTik
/system/ntp/client/set enabled=yes

/system/ntp/client/servers
add address=pool.ntp.org
add address=time.google.com

# Проверка
/system/clock/print

На сервере Zabbix убедитесь, что timezone корректный:

[admin@MikroTik] >
# В docker-compose.yml должно быть:
# PHP_TZ: Europe/Moscow
docker exec -it zabbix-web date

8. SNMPv3 — ошибка аутентификации

Симптомы: Authentication failure в логах Zabbix.

Причины:

  • Несовпадение authentication/privacy паролей
  • Неправильный protocol (SHA vs SHA256, AES128 vs AES256)
  • Security name не совпадает

Решение: Удалите и пересоздайте SNMP-community на MikroTik, затем обновите настройки в Zabbix. Убедитесь, что длина пароля не менее 8 символов (требование SNMPv3).

[admin@MikroTik] >
/snmp/community/remove [find name=zabbix-v3]
/snmp/community/add name=zabbix-v3 security-name=zabbix-mon \
  authentication-protocol=SHA1 authentication-password="AuthPass123!" \
  encryption-protocol=AES encryption-password="PrivPass123!" \
  read-access=yes write-access=no addresses=10.0.1.50/32

Zabbix — мощная и зрелая платформа мониторинга, которая отлично работает с MikroTik RouterOS. Официальный шаблон покрывает большинство потребностей, а система LLD-правил и custom items позволяет мониторить любые специфичные метрики. Для начала достаточно развернуть Zabbix через Docker Compose, настроить SNMP на роутере и применить стандартный шаблон — через 5 минут вы получите полноценный мониторинг с графиками и алертами. Для масштабных инсталляций используйте Zabbix Proxy, TimescaleDB и Network Discovery для автоматического добавления новых устройств.

[admin@MikroTik] >
MikroTik Router(s) ←[SNMP UDP 161]→ Zabbix Server ←[HTTP :8080]→ Zabbix Web Frontend
                                          ↓
                                    PostgreSQL (хранилище данных)
mkdir -p /opt/zabbix && cd /opt/zabbix
Запустите стек:
Через 1-2 минуты откройте `http://<IP-сервера>:8080`. Логин: `Admin`, пароль: `zabbix`. Первым делом смените пароль администратора через **Users → Admin → Change password**.

#### Шаг 2: настройка SNMP на MikroTik

Для мониторинга через Zabbix на роутере должен быть включён SNMP. Настроим SNMPv2c для начала (для продуктивной среды используйте SNMPv3).

**SNMPv2c (базовая настройка):**
Параметр `addresses` — IP-адрес Zabbix Server. Это критически важно для безопасности: без ограничения любой хост в сети сможет читать метрики.

**SNMPv3 (рекомендуется для production):**
**Защита SNMP через firewall:**
**Настройка interface list для SNMP (ограничение видимости):**

По умолчанию SNMP отдаёт информацию обо всех интерфейсах. Если нужно ограничить:
> **Примечание:** в RouterOS ограничение видимости интерфейсов через SNMP напрямую не поддерживается. Фильтрация выполняется на стороне Zabbix (через фильтры в Discovery Rules).

#### Шаг 3: проверка SNMP с сервера Zabbix

Перед добавлением хоста в Zabbix убедитесь, что SNMP работает:
Если команда возвращает имя роутера — SNMP работает корректно.

#### Шаг 4: добавление MikroTik в Zabbix

1. Откройте Zabbix Web: **Data collection → Hosts → Create host**.

2. Заполните поля:
   - **Host name**: `MikroTik-GW-01`
   - **Visible name**: `MikroTik Gateway (192.168.88.1)`
   - **Groups**: создайте группу `MikroTik Routers`
   - **Templates**: найдите и добавьте `MikroTik RouterOS by SNMP` (встроенный шаблон)

3. На вкладке **Interfaces** добавьте SNMP-интерфейс:
   - **Type**: SNMP
   - **IP address**: `192.168.88.1`
   - **Port**: `161`
   - **SNMP version**: `SNMPv2`
   - **SNMP community**: `MikroTikZabbix2024`

4. Для SNMPv3:
   - **SNMP version**: `SNMPv3`
   - **Security name**: `zabbix-mon`
   - **Security level**: `authPriv`
   - **Authentication protocol**: `SHA1`
   - **Authentication passphrase**: `AuthZabbix2024!`
   - **Privacy protocol**: `AES128`
   - **Privacy passphrase**: `PrivZabbix2024!`

5. Нажмите **Add**. Через 1-2 минуты рядом с хостом появится зелёный индикатор SNMP — значит данные успешно собираются.

#### Шаг 5: официальный шаблон MikroTik RouterOS by SNMP

Шаблон `MikroTik RouterOS by SNMP` входит в стандартную поставку Zabbix 7.0. Он содержит:

**Items (метрики):**
- System: CPU utilization, memory used/total, disk used/total, uptime, firmware version
- Interfaces: traffic in/out (bits/s), errors in/out, discards in/out, operational status, speed
- Temperature: processor temperature, board temperature
- Voltage: input voltage
- Identity: system name, contact, location, description

**Triggers (встроенные):**
- High CPU utilization (>90% в течение 5 минут)
- High memory utilization (>90%)
- Device has been restarted (uptime < 10 минут)
- Firmware has changed
- No SNMP data collection (нет данных более 5 минут)
- Network interface link down
- High error rate on interface

**Discovery Rules (автообнаружение):**
- Network interfaces discovery — автоматически находит все интерфейсы и создаёт items/triggers для каждого
- Storage discovery — находит дисковые разделы

Шаблон покрывает 80% потребностей. Остальные 20% — custom items.

#### Шаг 6: custom items — мониторинг специфичных метрик

##### Температура процессора

Если шаблон не собирает температуру (зависит от модели), добавьте вручную:

1. **Data collection → Hosts → MikroTik-GW-01 → Items → Create item**
2. Параметры:
   - **Name**: `CPU Temperature`
   - **Type**: `SNMP agent`
   - **Key**: `mikrotik.cpu.temperature`
   - **SNMP OID**: `1.3.6.1.4.1.14988.1.1.3.11.0`
   - **Type of information**: `Numeric (float)`
   - **Units**: `°C`
   - **Update interval**: `60s`

##### Количество Wi-Fi клиентов
Это таблица — для каждого Wi-Fi интерфейса свой OID. Используйте Discovery Rule для автоматического обнаружения Wi-Fi интерфейсов и создания items.

##### Активные VPN-сессии

Для подсчёта активных PPP-сессий (L2TP, SSTP, PPPoE):
Создайте item:
- **Name**: `Active VPN Sessions`
- **SNMP OID**: `1.3.6.1.4.1.14988.1.1.5.1.0`
- **Type of information**: `Numeric (unsigned)`
- **Update interval**: `30s`

##### Счётчики firewall-правил

Для мониторинга срабатываний конкретного firewall-правила потребуется SNMP OID из таблицы:
На MikroTik можно присвоить comment к правилу и искать по нему:
Для мониторинга счётчиков через Zabbix создайте SNMP Discovery Rule с OID `1.3.6.1.4.1.14988.1.1.2.1.1.2` (имена правил) и items для bytes/packets.

#### Шаг 7: настройка триггеров

Триггеры — это условия, при выполнении которых Zabbix генерирует алерт.

##### CPU > 80%

1. **Data collection → Hosts → MikroTik-GW-01 → Triggers → Create trigger**
2. Параметры:
   - **Name**: `CPU utilization is above 80% on {HOST.NAME}`
   - **Severity**: `Warning`
   - **Expression**: `avg(/MikroTik-GW-01/system.cpu.util[hrProcessorLoad.1],5m)>80`

##### RAM > 90%

- **Name**: `Memory utilization is above 90% on {HOST.NAME}`
- **Severity**: `High`
- **Expression**: `last(/MikroTik-GW-01/vm.memory.util[memoryUsedPercentage])>90`

##### Интерфейс упал

Этот триггер уже включён в шаблон, но можно создать кастомный с другим severity:

- **Name**: `Interface {#IFNAME} is down on {HOST.NAME}`
- **Severity**: `Disaster`
- **Expression**: `last(/MikroTik-GW-01/net.if.status[ifOperStatus.{#SNMPINDEX}])=2`

##### Температура > 70°C

- **Name**: `CPU temperature is above 70°C on {HOST.NAME}`
- **Severity**: `High`
- **Expression**: `last(/MikroTik-GW-01/mikrotik.cpu.temperature)>70`
- **Recovery expression**: `last(/MikroTik-GW-01/mikrotik.cpu.temperature)<65`

Recovery expression с гистерезисом (65°C) предотвращает мигание триггера при температуре на границе порога.

##### Устройство недоступно

- **Name**: `{HOST.NAME} is unreachable by SNMP`
- **Severity**: `Disaster`
- **Expression**: `nodata(/MikroTik-GW-01/sysUpTime,300s)=1`

#### Шаг 8: графики и дашборды

##### Создание графика

1. **Data collection → Hosts → MikroTik-GW-01 → Graphs → Create graph**
2. Пример — трафик на WAN-интерфейсе:
   - **Name**: `WAN Traffic (ether1)`
   - **Items**: добавьте `Interface ether1: Bits received` и `Interface ether1: Bits sent`
   - **Graph type**: `Normal`
   - **Show working time**: включить

##### Создание дашборда

1. **Dashboards → Create dashboard**
2. Рекомендуемые виджеты:
   - **Graph** — трафик WAN-интерфейса
   - **Graph** — CPU и RAM загрузка
   - **Plain text** — текущий firmware, uptime
   - **Problems** — список активных проблем
   - **Top hosts** — топ роутеров по CPU

Пример компоновки дашборда для NOC:

| Виджет | Размер | Описание |
|--------|--------|----------|
| System info | 1/4 экрана | Uptime, firmware, model |
| CPU & RAM | 1/4 экрана | Графики загрузки за 24ч |
| WAN Traffic | 1/2 экрана | In/Out за 24ч |
| Problems | 1/4 экрана | Текущие алерты |
| Top Talkers | 1/4 экрана | Интерфейсы с максимальным трафиком |

#### Шаг 9: Discovery Rules — автоматическое обнаружение

Low-Level Discovery (LLD) — мощная функция Zabbix, автоматически создающая items, triggers и graphs для обнаруженных объектов.

##### Автообнаружение интерфейсов

Уже включено в стандартный шаблон. Zabbix периодически опрашивает OID `1.3.6.1.2.1.2.2.1.2` (ifDescr), находит все интерфейсы и для каждого создаёт:
- Items: traffic in/out, errors, discards, status
- Triggers: interface down, high error rate
- Graphs: traffic graph per interface

Можно настроить фильтры, чтобы исключить ненужные интерфейсы:

1. **Data collection → Hosts → MikroTik-GW-01 → Discovery rules → Network interfaces discovery → Filters**
2. Добавьте фильтр: `{#IFNAME} not matches `loopback|dummy``

##### Автообнаружение DHCP-leases

Для мониторинга DHCP-пулов создайте custom Discovery Rule:

- **Name**: `DHCP Lease Discovery`
- **Type**: `SNMP agent`
- **Key**: `mikrotik.dhcp.discovery`
- **SNMP OID**: `discovery[{#POOLNAME},1.3.6.1.4.1.14988.1.1.17.1.1.2]`
- **Update interval**: `1h`

#### Шаг 10: мониторинг нескольких роутеров

Для масштабного мониторинга:

1. **Настройте SNMP на каждом роутере** (используйте скрипт):
2. **В Zabbix используйте Network Discovery** для автоматического обнаружения роутеров:
   - **Data collection → Discovery → Create discovery rule**
   - **IP range**: `10.0.0.0/24` (подсеть управления)
   - **Checks**: SNMP (community `MikroTikZabbix2024`, OID `1.3.6.1.2.1.1.1.0`)
   - **Device uniqueness**: IP address
   - **Actions**: при обнаружении автоматически добавлять хост в группу `MikroTik Routers` и применять шаблон `MikroTik RouterOS by SNMP`

3. **Для распределённых сетей используйте Zabbix Proxy**:
Zabbix Proxy устанавливается на удалённой площадке, опрашивает локальные роутеры и передаёт данные центральному серверу. Это снижает нагрузку на WAN-канал и повышает надёжность.

#### Шаг 11: оповещения по email

1. **Alerts → Media types → Email**:
   - **SMTP server**: `smtp.gmail.com`
   - **SMTP port**: `587`
   - **SMTP email**: `zabbix@company.ru`
   - **Authentication**: username + password (или app password для Gmail)
   - **Security**: `STARTTLS`

2. **Users → Admin → Media → Add**:
   - **Type**: `Email`
   - **Send to**: `admin@company.ru`
   - **When active**: `1-7,00:00-24:00`
   - **Severity**: выберите нужные уровни

3. **Alerts → Actions → Trigger actions → Create action**:
   - **Name**: `Send alerts for MikroTik`
   - **Conditions**: Host group = `MikroTik Routers`
   - **Operations**: Send message to user `Admin` via `Email`

#### Шаг 12: оповещения в Telegram

Telegram — самый популярный способ получения алертов для русскоязычных администраторов.

**Создание бота:**

1. Напишите `@BotFather` в Telegram
2. Команда `/newbot`, задайте имя: `Zabbix MikroTik Bot`
3. Скопируйте **API Token**: `1234567890:AAHxxxxxxxxxxxxxxxxxxxxxx`
4. Создайте группу (или канал) и добавьте бота
5. Получите **Chat ID** через `https://api.telegram.org/bot<TOKEN>/getUpdates`

**Настройка в Zabbix:**

1. **Alerts → Media types** — найдите встроенный `Telegram`
2. Установите параметр **Token**: `1234567890:AAHxxxxxxxxxxxxxxxxxxxxxx`
3. **Users → Admin → Media → Add**:
   - **Type**: `Telegram`
   - **Send to**: `-1001234567890` (Chat ID группы)
4. Проверьте отправкой тестового сообщения: **Alerts → Media types → Telegram → Test**

Формат сообщений настраивается в шаблоне Media type. По умолчанию Zabbix отправляет:
### Проверка

#### Проверка сбора данных

После добавления хоста проверьте, что данные поступают:

1. **Monitoring → Latest data → Host: MikroTik-GW-01** — здесь отображаются все собранные метрики с последним значением и временем обновления.

2. Ключевые метрики для проверки:
   - `system.cpu.util` — загрузка CPU (должно быть числовое значение)
   - `vm.memory.util` — загрузка RAM
   - `system.uptime` — аптайм (должен расти)
   - `net.if.in/out` — трафик (должен меняться)

3. Если данные не поступают — проверьте индикатор SNMP на странице хостов. Красный значок означает ошибку.

#### Проверка SNMP на MikroTik
Если счётчик `packets-received` растёт — Zabbix успешно опрашивает роутер.

#### Проверка триггеров

Для тестирования триггера CPU > 80% можно искусственно нагрузить роутер:
Через 5 минут (avg интервал триггера) Zabbix должен сгенерировать алерт. Проверьте: **Monitoring → Problems**.

#### Проверка оповещений

1. **Alerts → Media types → Telegram → Test**: введите Chat ID и текст, нажмите Test — должно прийти сообщение.
2. **Alerts → Actions → Trigger actions**: убедитесь, что action включён (Status: Enabled).
3. **Reports → Action log**: здесь видна история отправки оповещений и ошибки.

#### Диагностика с сервера
### Типичные ошибки

#### 1. SNMP timeout — Zabbix не может подключиться к роутеру

**Симптомы:** красный индикатор SNMP на странице хостов, сообщение `Timeout while connecting`.

**Причины и решения:**
- SNMP не включён на MikroTik: `/snmp/set enabled=yes`
- Неправильный community string: проверьте совпадение в `/snmp/community/print` и настройках хоста Zabbix
- Firewall на MikroTik блокирует UDP 161: добавьте разрешающее правило перед drop
- Firewall на сервере Zabbix блокирует исходящий UDP 161
- Неправильный IP-адрес в `addresses=` community — Zabbix Server должен быть в списке
#### 2. Данные собираются, но триггеры не срабатывают

**Причины:**
- Триггер отключён (Disabled)
- Expression использует имя хоста, а не макрос `{HOST.NAME}`
- Период усреднения слишком большой (avg 1h вместо 5m)
- Данные не попадают в нужный item (проверьте ключ)

**Решение:** Проверьте expression через **Configuration → Hosts → Triggers → Test**. Zabbix 7.0 позволяет тестировать триггеры с текущими данными.

#### 3. Оповещения не приходят

**Причины:**
- Media type не настроен или отключён
- У пользователя нет Media (Send to пустой)
- Action не создан или отключён
- Severity действия не совпадает с severity триггера
- SMTP-сервер блокирует подключение (Gmail требует App Password)
- Telegram Bot Token невалидный или бот не добавлен в группу

**Диагностика:**
В веб-интерфейсе: **Reports → Action log** — показывает статус каждой попытки отправки.

#### 4. Высокое потребление дискового пространства

Zabbix хранит всю историю метрик в PostgreSQL. При мониторинге 10+ роутеров с интервалом 30 секунд база быстро растёт.

**Решение:**

1. Настройте Housekeeping: **Administration → General → Housekeeping**:
   - History retention: `90d` (90 дней детальных данных)
   - Trend retention: `365d` (1 год агрегированных данных)

2. Увеличьте интервал опроса для некритичных метрик (60s → 300s)

3. Для больших инсталляций используйте TimescaleDB вместо обычного PostgreSQL:
#### 5. Discovery обнаруживает слишком много интерфейсов

MikroTik создаёт множество виртуальных интерфейсов (bridge ports, VLAN sub-interfaces, loopback). Discovery создаёт items и triggers для всех.

**Решение:** Добавьте фильтры в Discovery Rule:

1. **Discovery rules → Network interfaces discovery → Filters**
2. Добавьте: `{#IFNAME} not matches `^(loopback|dummy|bridge-port).*``
3. Или включите только нужные: `{#IFNAME} matches `^(ether|sfp|wlan|bridge|wireguard|vlan).*``

#### 6. Ошибка "No SNMP data collection"

Это trigger от стандартного шаблона. Срабатывает, когда Zabbix не получает SNMP-данные более 5 минут.

**Возможные причины:**
- Роутер перезагружается
- Сетевая проблема между Zabbix и роутером
- SNMP community был изменён
- Роутер перегружен и не отвечает на SNMP-запросы вовремя

**Решение:** увеличьте timeout в настройках хоста: **Hosts → MikroTik-GW-01 → SNMP interface → Timeout**: с `3s` до `5s` или `10s`.

#### 7. Неправильное время в алертах

**Причина:** рассинхронизация времени между Zabbix Server и MikroTik.
На сервере Zabbix убедитесь, что timezone корректный:
#### 8. SNMPv3 — ошибка аутентификации

**Симптомы:** `Authentication failure` в логах Zabbix.

**Причины:**
- Несовпадение authentication/privacy паролей
- Неправильный protocol (SHA vs SHA256, AES128 vs AES256)
- Security name не совпадает

**Решение:** Удалите и пересоздайте SNMP-community на MikroTik, затем обновите настройки в Zabbix. Убедитесь, что длина пароля не менее 8 символов (требование SNMPv3).
Мониторинг / Мониторинг MikroTik в Zabbix — полное руководство