← Все заметки
Monitoring & Security

Мониторинг сетевого оборудования через SNMP Exporter и Prometheus

Production-backed схема SNMP-мониторинга MikroTik и Zyxel через snmp_exporter 0.30.1 и Prometheus file-based discovery.

Статус: актуальноОпубликовано: 2026-09-16Обновлено: 2026-09-16

Проверено на: snmp_exporter 0.30.1 · Prometheus file_sd

Контекст

Production-слой сетевого мониторинга использует один локальный SNMP Exporter и file-based inventory. Prometheus передаёт exporter’у адрес устройства и набор модулей для каждого target.

Prometheus file_sd
    -> SNMP Exporter на 127.0.0.1:9116
    -> маршрутизаторы / коммутаторы / точки доступа

В подтверждённом production inventory находится 19 SNMP-устройств на нескольких площадках. На момент проверки все 19 device targets и self-target самого exporter были UP.

Подтверждённый baseline

snmp_exporter: 0.30.1
platform: linux/amd64
service account: snmp_exporter
listener: 127.0.0.1:9116

Exporter работает как отдельный systemd-сервис и доступен только через loopback с хоста Prometheus.

Prometheus job

Общий job для сетевых устройств использует:

- job_name: snmp
  scrape_interval: 60s
  scrape_timeout: 50s
  metrics_path: /snmp

  file_sd_configs:
    - files:
        - /etc/prometheus/targets/snmp/*.yml
      refresh_interval: 30s

Relabeling передаёт exporter’у реальный target и выбранный набор модулей, после чего адрес устройства сохраняется в Prometheus как label instance.

Inventory contract

Для каждого устройства используются labels уровня:

site
vendor
model
role
module set

Санитизированный пример:

- targets:
    - <management-ip>
  labels:
    site: <site>
    vendor: mikrotik
    model: RB5009UG+S+
    role: gateway
    snmp_module: if_mib,mikrotik

Inventory разбит по отдельным файлам, поэтому исключения по моделям и ролям остаются явно видимыми.

Подтверждённые классы устройств

Текущие RouterOS gateway и access point используют:

if_mib,mikrotik

RouterOS-устройство, используемое как switch, опрашивается через:

if_mib,hrDevice,hrStorage,mikrotik_switch_system

Подтверждённый SwOS target использует только:

if_mib

Несколько Zyxel GS1920 используют:

if_mib,zyxel_gs1920_system

Часть GS1900 сейчас использует только if_mib.

То есть module set определяется конкретной моделью и ролью, а не только vendor.

Общий интерфейсный слой

if_mib является переносимым baseline между vendor’ами и даёт общие сигналы:

administrative state
operational state
speed
traffic counters
errors
discards
interface identity

Vendor-specific modules добавляют системные метрики только там, где устройство действительно их поддерживает.

Верхние уровни мониторинга

Production rules отделяют транспорт SNMP от предметной логики.

Switch alerts покрывают availability, состояние и скорость trunk, CPU, memory, temperature, voltage, system storage, errors/discards и VLAN contract checks.

AP rules покрывают uplink, WLAN state, radio metrics и часть RouterOS wireless-метрик. CAPsMAN и MikroTik IPsec вынесены в отдельные rule groups.

Такое разделение позволяет не смешивать generic SNMP transport с конкретными операционными правилами.

Runtime validation

Подтверждённое состояние:

19 job="snmp" targets: UP
1 job="snmp_exporter" target: UP

Это подтверждает полный путь от Prometheus discovery через exporter до сетевого оборудования.

Модель диагностики

При падении target нужно разделять возможные failure domains:

недоступен exporter
нет сетевой доступности до устройства
не подходит профиль опроса
module set не поддерживается или слишком тяжёлый
устройство отвечает слишком медленно

Рабочий self-target exporter не гарантирует, что все устройства доступны. И наоборот, падение одного device target не означает отказ самого exporter.

Добавление нового устройства

Безопасная последовательность:

  1. определить vendor, model и role;
  2. выбрать минимальный module set, который покрывает нужные метрики;
  3. добавить target со стандартными inventory labels;
  4. дождаться file_sd refresh;
  5. проверить, что runtime target стал UP;
  6. посмотреть реальные метрики;
  7. только после этого добавлять role-specific recording и alert rules.

Изменение только target-файла не требует restart Prometheus, потому что используется периодическое file_sd discovery.

Backup и rollback

Перед изменениями сохраняй exporter unit, SNMP module configuration, Prometheus target inventory и связанные rule files.

После rollback проверь и self-target exporter, и затронутые device targets.

Чек-лист валидации

[ ] версия exporter известна
[ ] exporter работает от отдельного пользователя
[ ] exporter слушает только ожидаемый адрес
[ ] target содержит site/vendor/model/role metadata
[ ] module set соответствует модели и роли
[ ] Prometheus обнаружил target
[ ] runtime target = UP
[ ] self-target exporter = UP
[ ] реальные метрики просмотрены до создания alerts

References