Пример получения состояния порта коммутатора в сети по SMS-сообщению посредством NetPing SMS

Следуя этой статье вы получите инструмент для мониторинга управляемых коммутаторов посредством SMS-сообщений. Представленное решение будет полезно для сетевых администраторов, сотрудников технической поддержки и иных работников, в чьи обязанности входит мониторинг и обслуживание сетей любого уровня. Теперь у технического персонала появится возможность быстро получить информацию о состоянии порта управляемого коммутатора (up/down) без доступа к сети с целевыми коммутаторами.

Данное решение будет представлено в двух вариантах:

  1. Средствами только NetPing SMS (до 32 портов).
  2. Средствами NetPing SMS и Zabbix сервера (неограниченное количество портов).

Техническая реализация № 1 (до 32 портов)

Данное ограничение обусловлено ограничением количества переменных в шлюзе NetPing SMS — одна переменная соответствует одному SNMP OID, что в свою очередь соответствует запросу информации одного порта управляемого коммутатора по протоколу SNMP.

Для реализации этого решения нам понадобятся:

  1. Настроенный шлюз NetPing SMS.
  2. Управляемый коммутатор.

В роли управляемого коммутатора выступит маршрутизатор Mikrotik 951Ui 2HnD. В плане общения по SNMP протоколу и получения статуса порта существенной разницы нет, отличаться будут лишь SNMP OID.

Mikrotik в роли управляемого коммутатора

Базовая настройка шлюза NetPing SMS

Первым делом необходимо выполнить базовую настройку NetPing SMS, для этого:

  1. Переходим в раздел «Настройки» web-интерфейса.
  2. Осуществляем базовую настройку сетевого интерфейса.
  3. Осуществляем базовую настройку параметров доступа (логин и пароль от web-интерфейса, community чтения и записи, фильтр доступа по IP) при необходимости.

NetPing SMS основные настройки

Добавление SNMP агента в конфигурацию шлюза NetPing SMS

Далее необходимо добавить SNMP агент (наш управляемый коммутатор), для этого:

  1. Переходим в раздел «Агенты» web-интерфейса.
  2. Нажимаем в поле для доблавления нового агента.
  3. Заполняем параметры подключения к агенту.
  4. Сохраняем изменения.

NetPing SMS агенты

Добавление SNMP переменных в конфигурацию шлюза NetPing SMS

Далее необходимо настроить переменные, это SNMP OID’ы, по которым мы будем запрашивать информацию о состоянии портов:

  1. Переходим в раздел «Переменные» web-интерфейса;
  2. Нажимаем в поле для добавления нового элемента;
  3. Настраиваем параметры SNMP переменной;
  4. Сохраняем изменения.

NetPing SMS SNMP переменные

Далее по аналогии добавляем ещё 4 переменных для остальных портов соответственно, изменяя имя согласно формату «if1_cN» и «.1.2.3.1.2.1.2.2.1.8.N», N=1..5.

В данном случае «.1.2.3.1.2.1.2.2.1.8.N» — это SNMP OID переменная состояния порта для коммутаторов и маршрутизаторов MikroTik. Возвращаемые значения могут быть «1» (соответствует состояню порта «up») или «2» («down»).

Схема работает по следующему алогоритму:

  1. Администратор отправляет SMS-сообщение в формате «np snmp c1_if1? public», где np snmp — префикс команды, c1_if1 — переменная (с1 — условное обозначение первого коммутатора, if1 — условное обозначение первого порта), «public» — значение SNMP Read Community прописанное в настройках коммутатора;
  2. Шлюз NetPing SMS обрабатывает полученное SMS-сообщение, сравнивая его с заданными переменными, прописанными в его конфигурации.
  3. Обнаружив запрошенную переменную, NetPing SMS обращается к агенту, к которому она привязана. То есть он отправляет SNMP GET команду с прописанным SNMP OID, в нашем примере «.1.2.3.1.2.1.2.2.1.8.1», для того, чтобы прочитать информацию о состоянии первого порта управляемого коммутатора;
  4. NetPing SMS получает ответ от агента («1» либо «2») и расшифровывает его, используя словарь, описанный в переменной;
  5. Далее NetPing SMS отправляет расшифрованный SMS-ответ администратору в формате «NP SNMP REPLY c1_if1=Up(1)».

Формат SMS-сообщения для запроса статуса порта

Запрос значения SNMP переменной происходит по шаблону:

np snmp variable? password

где:

np snms — префикс команды.

variable — имя переменной, заданное на странице «Переменные» web-интерфейса устройства NetPing SMS.

password — значение параметра «Community», указанного в настройках агента на странице «Агенты» web-интерфейса устройства NetPing SMS.

На скриншоте ниже показан пример запроса информации о статусе второго и четвёртого порта управляемого коммутатора. Схожим образом можно получить любую информацию, которую коммутатор способен отдавать по протоколу SNMP — от загрузки порта до загрузки центрального процессора коммутатора.

Пример получения состояния порта коммутатора в сети по SMS-сообщению посредством NetPing SMS

Техническая реализация № 2 (неограниченное количество портов)

Для реализации этого решения нам понадобятся:

  1. Сервер с системой мониторинга Zabbix (также аналогичное решение можно построить на основе любой другой системы мониторинга — NagiosOpenNMSPRTG Network Monitor и другие) с настроенным приемом SNMP TRAP сообщений и скриптом для отправки SMS сообщений через NetPing SMS (официальная документация — установка,  SNMP TRAP);
  2. Шлюз NetPing SMS;
  3. Управляемые коммутаторы, настроенные в Zabbix для их мониторинга.

В роли управляемого коммутатора возьмём Mikrotik 951Ui 2HnD из первого варианта. Краткая схема взаимодействия компонентов будет следующей:

  1. Системный администратор отправляет SMS-команду на шлюз NetPing SMS;
  2. NetPing SMS получает SMS-команду, обрабатывает её и отправляет SNMP TRAP в Zabbix, который мониторит коммутаторы в сети;
  3. Zabbix отправляет обратно ответ в NetPing SMS;
  4. NetPing SMS получает ответ и перенаправляет его системному администратору в виде SMS-сообщения.

Настройка Zabbix

Первым делом необходимо настроить реакцию Zabbix на прием SNMP TRAP сообщений. Как это сделать описано далее по тексту.

Шаблон для обработки неизвестных SNMP TRAP сообщений

Создадим шаблон для обработки неизвестных SNMP TRAP сообщений. Для этого переходим в раздел «Configuration» (1), подраздел «Templates» (2) и нажимаем «Create template» (3):

Zabbix создание шаблона

Задаём имя шаблона «Template SNMP trap fallback» (1) и добавляем его в имеющуюся группу или создаем новую «Templates» (2) и сохраняем изменения (3):

Zabbix настройки шаблона

Далее созданный нами шаблон мы найдём в «Configuration» (1), подраздел «Templates» (2) и заходим в его настройки (3).

Zabbix шаблон

Переходим в раздел «Items» (1) и нажимаем «Create Item» (2).

Zabbix Item шаблона

Заполняем поля элемента данных:

  1. Name — SNMP trap fallback
  2. Type — SNMP trap.
  3. Key — snmptrap.fallback.
  4. Type of information — Log.
  5. Log time format — hh:mm:ss yyyy/MM/dd.
  6. Add.

Zabbix Item SNMP fallback

Далее переходим к триггерам шаблона (1), и создаём новый (2).

Zabbix создание триггера

Заполняем поля триггера:

  1. Name — Unmatched SNMP trap received {HOST.NAME};
  2. Severity — Information;
  3. Expression — {Template SNMP trap fallback:snmptrap.fallback.nodata(60)}=0, где «Template SNMP trap fallback:snmptrap.fallback» обрабатывает неизвестные SNMP Trap сообщения, «nodata(60)» — функция проверки отсутствия полученных данных за последние 60 секунд (возвращает 1 в случае отстутствия данных, 0 в противном случае), «{…}=0» — проверка получения данных.
  4. Нажимаем на кнопку Add.

Создание триггера в Zabbix

Шаблон для обработки известных SNMP TRAP сообещний с запросом состояния порта

Аналогично разделу «Шаблон для обработки неизвестных SNMP TRAP сообщений» переходим к созданию нового шаблона.

  1. Template name — Template SNMP traps.
  2. Groups — Templates.
  3. Переходим в Linked templates.

Zabbix связанные шаблоны

Открываем окно выбора шаблонов (1), в нем выбираем нужный нам шаблон («Template SNMP trap fallback») и добавляем/сохраняем (2).

Zabbix добавление связанного шаблона

Аналогично в «Template SNMP trap fallback» переходим к добавлению элементов данных шаблона. В списке мы видим уже один существующий элемент данных, он унаследован от шаблона «Template SNMP trap fallback». Жмём «Create item».

Zabbix создание элемента данных

Заполняем поля следующим образом:

  1. Name — get c1 if1;
  2. Type — SNMP trap;
  3. Key — snmptrap[«get c1 if1«]. Этот параметр будет обрабатывать SNMP TRAP сообщение «get c1 if1» (это SNMP TRAP сообщение формирует NetPing SMS при получении SMS-сообщения «get c1 if1»), то есть запрос состояния первого порта первого коммутатора;
  4. Type of information — Log;
  5. Нажимаем Add.

Zabbix настройки элемента данных

Аналогично «get c1 if1» создадим элемент данных для «get c1 if2», и по аналогии до 5:

Zabbix настройки элемента данных

Далее по аналогии с «Template SNMP trap fallback» переходим к добавлению триггеров:

  1. Name — c1 if1.
  2. Severity — Information.
  3. Expression — {Template SNMP traps:snmptrap[«get c1 if1»].nodata(60)}=0, где «Template SNMP traps:snmptrap[«get c1 if1»]» — проверка полученного сообщен на соответствие регулярному выражению «get c1 if1», «nodata(60)» — функция проверки отсутствия полученных данных за последние 60 секунд (возвращает 1 в случае отстутствия данных, 0 в противном случае), «{…}=0» — проверка получения данных.
  4. Нажимаем Add.

Zabbix настройки триггера

Аналогично создадим второй триггер, с изменениями в имени «c1 if2» и выражении «{Template SNMP traps:snmptrap[«get c1 if2»].nodata(60)}=0» и по аналогии до 5.

Добавление хоста (управляемого коммутатора)

Теперь нам необходимо настроить мониторинг интересующего нас управляемого коммутатора. Перейти в раздел «Configuration» (1), подраздел «Hosts» (2) и нажать «Create host» (3):

Zabbix добавление нового хоста

Заполняем поля следующим образом:

  1. Host name — Mikrotik.
  2. New group — Template Mikrotik.
  3. SNMP interface — Add.
  4. SNMP interface ip address — 192.168.0.51 (IP адрес интерфейса Mikrotik, на котором находится SNMP агент).
  5. SNMP intefface port — 161 (порт, на котором SNMP агент ожидает входящие подключения).
  6. Нажимаем Add.

Zabbix настройки хоста

Добавленный хост мы можем найти в разделе «Configuration» (1), подразделе «Hosts» (2). Открываем его настройки (3):

Zabbix список хостов

Переходим в раздел «Items» (1) и жмём «Create item»:

Zabbix создание элемента данных для хоста

Заполняем свойства элемента данных следующий образом:

  1. Name — if1_status (удобочитаемое обозначение состояния порта);
  2. Type — SNMPv1 agent (использование SNMPv1 обусловлено техническими характеристиками NetPing SMS);
  3. Key — ifStatus[1] — ключ, по которому мы сможем запросить информацию из этого элемента данных;
  4. Host interface — 192.168.0.51:161 (т.к. он у нас один, то он будет выбран по-умолчанию);
  5. SNMP OID — .1.3.6.1.2.1.2.2.1.8.1 (.1.3.6.1.2.1.2.2.1.8.Х — OID состояния порта для коммутаторов Mikrotik, где Х — номер порта, возвращаемые значения — «1» (Up), «2» (Down). Полный перечень поддерживаемых OID устройством можно взять на официальном сайте изготовителя);
  6. SNMP community — public (указывается при конфигурировании SNMP на целевом коммутаторе);
  7. Port — 161;
  8. Type of information — Text (тип получаемой информации);
  9. Переходим во вкладку «Preprocessing».

Zabbix настройки элемента данных для хоста

Добавляем два поля для регулярных выражений (1), заполняем поля следующим образом (2):

Regular expression (.*) \1:1=up:2=down
Regular expression (1|2)(?=:.*\1=(up|down)) \2

Этими регулярными выражениями мы превратим получаемые статусы порта коммутатора « и « в удобочитаемые «up» и «down». В данном примере логика следующая: 

  • На первой итерации будет добавлено «1=up:2=down» к строке , что поможет нам расшифровать значение на следующей итерации;
  • На второй итерации значение состояния порта « или « будет преобразовано в удобочитаемое «up» или «down».

Добавляем/сохраняем изменения (3):

Zabbix регулярные выражения

Аналогичным образом добавляем элементы данных для остальных портов (их количество зависит от модели коммутатора, в данном примере их 5). Для каждого последующего элемента данных меняется только Name (ifN_status), Key (ifStatus[N]), OID (.1.3.6.1.2.1.2.2.1.8.N), N=1..5.

Zabbix список элементов данных хоста

Добавление NetPing SMS в Zabbix в качестве SNMP TRAP сервера

Теперь нам необходимо добавить NetPing SMS в качестве SNMP TRAP сервера, от которого Zabbix будет принимать SNMP TRAP сообщения. Переходим в раздел «Configuration», подраздел «Hosts», нажимаем «Create host» и заполняем поля следующим образом:

  1. Host name — NetPing SMS.
  2. Groups — Trap servers.
  3. SNMP interface — 192.168.0.124.
  4. SNMP interface port — 161.
  5. Переходим во вкладку «Templates».

Zabbix добавление NetPing SMS в роли SNMP TRAP сервера

Выбираем шаблон «Template SNMP traps» (1), созданный ранее. Добавляем/сохраняем изменения (2).

Zabbix выбор шаблона для NetPing SMS SNMP TRAP сервера

Действия Zabbix сервера после приема SNMP TRAP сообщений о запросе статуса порта

Теперь нам необходимо настроить реакцию Zabbix сервера на SNMP TRAP сообщения, полученные от NetPing SMS. Для этого переходим в «Configuration» (1), «Action» (3), и жмём «Create action» (3):

Zabbix добавление Action

Задаем имя действия (1), заполняем условия срабатывания (2) (в данном примере действие будет выполнятся при сработке триггера «c1 if1», который в свою очередь сработает при получении SNMP TRAP сообщения от NetPing SMS), добавляем их (3) и переходим в раздел «Operations» (4):

Zabbix настройка Action на прием trap сообщения

  1. Default message — «if status — {Test_Mikrotik:ifStatus[1].last()}» (макросом мы получаем последнее полученное значение элемента данных с ключем ifStatus[1]);
  2. Send to Users Add;
  3. Выбираем пользователя «Admin»;
  4. Send only to — NetPing SMS;
  5. Нажимаем Add.

Zabbix настройка Action на прием trap сообщения

И далее по аналогии для каждого из пяти портов создадим действия, которые будет выполнять Zabbix сервер при получении SNMP TRAP сообщения от NetPing SMS с запросом информации о состоянии порта: get c1 ifN status, {Test_Mikrotik:ifStatus[N].last()}. N=1..5.

Настройка NetPing SMS на отправку SNMP TRAP сообщения Zabbix серверу

Для этого:

  1. Переходим в раздел «Настройки» web-интерфейса NetPing SMS.
  2. Заполняем «Адрес 1 для посылки Trap сообщений», указывем IP адрес Zabbix сервера.
  3. Сохраняем изменения.

NetPing SMS основные настройки

Теперь, отправляя на шлюз NetPing SMS SMS-сообщение формата «get cN if, мы будем получать удобочитаемое состояние порта «M», коммутатора «N» (up/down).

Пример получения состояния порта коммутатора в сети по SMS-сообщению посредством NetPing SMS

Вывод

Решение получилось довольно компактным, но легко масштабируемым. Во втором варианте подобным образом можно получать любую информацию, которую собирает Zabbix сервер, что в свою очередь позволит в случае внештатной ситуации скоординировать действия системного администратора «на лету», даже без доступа к сети с коммутаторами.

?
×

    Получите бесплатную консультацию по выбору оптимального оборудования

    Наши операторы свяжутся с вами при первой возможности

    ×

      Обращение в техническую поддержку

      Сформулируйте, пожалуйста, тему и текст вашего обращения. Вам ответят в течении рабочего дня.

      ×
      Ваша заявка отправлена. Мы свяжемся с вами при первой возможности.