Агент SNMP

From Wiren Board
(Redirected from Агент SNMP)

This is the approved revision of this page, as well as being the most recent.

Контроллер как источник SNMP

Иногда нужно получать какие-то параметры из контроллера по SNMP, например, значения топиков. Для реализации требуется установить и настроить на контроллере агента SNMP.

Решение базируется на демоне snmpd, который разрабатывается и поддерживается открытым сообществом. Здесь даны общие рекомендации, подробную информацию ищите в официальной документации (англ). Перед началом установки убедитесь что правильно и полностью понимаете содержимое документации https://manpages.debian.org/unstable/snmpd/snmpd.conf.5.en.html

Установка и предварительная настройка пакетов

Обновите источники и установите пакеты snmp и snmpd:

apt update && apt -y install snmp snmpd

Отредактируйте основной файл конфигурации демона:

nano /etc/snmp/snmpd.conf
  1. Чтобы разрешить запросы со всех IP-адресов, закомментируйте строку:
    # agentaddress  127.0.0.1,[::1]
    
  2. В раздел # SECTION: Access Control Setup допишите строчки:
    view   systemonly  included   .1.3.6.1.4.1.2021.8
    view   systemonly  included   .1.3.6.1.4.1.2021.9
    
  3. В конец файла допишите ссылки на скрипты:
    extend .1.3.6.1.4.1.2021.8 tt /var/lib/snmp/mqtt-snmp.sh
    pass  .1.3.6.1.4.1.2021.9 /var/lib/snmp/mqtt-snmp_pass.sh
    

Дополнительную информацио о параметрах конфигурационного файла можно в документации snmpd

Добавление скрипта

В релизе wb-2304 и более новых сервис snmpd запускается от имени пользователя "Debian-snmp". Требуется коррекция прав:

echo 'Debian-snmp ALL=(ALL) NOPASSWD: /usr/bin/mosquitto_sub' > /etc/sudoers.d/snmpd

Отредактируйте скрипт /var/lib/snmp/mqtt-snmp.sh

nano /var/lib/snmp/mqtt-snmp.sh

И приведите его к виду:

#!/bin/sh
echo "mosquitto topics"
sudo mosquitto_sub -C 1 -t "/devices/wb-adc/controls/Vin"

OID'ы отдаваемые этим скриптом могут иметь тип только STRING

Для демонстрации вывода других типов служит второй:

nano /var/lib/snmp/mqtt-snmp_pass.sh

Содержимое:

#!/bin/sh -f

echo .1.3.6.1.4.1.2021.9.1
echo integer
/bin/systemctl is-active wb-mqtt-serial > /dev/null && echo 1 || echo 0

Скрипт возвращает INTEGER:1 если сервис wb-mqtt-serial запущен и 0 если нет.

Установите права:

chmod a+rx /var/lib/snmp/mqtt-snmp.sh /var/lib/snmp/mqtt-snmp_pass.sh

Теперь добавляем в этот скрипт нужные топики, или создаем несколько скриптов с разными наборами. Если вы создаете несколько скриптов, не забудьте дописать ссылки на них в конец файла /etc/snmp/snmpd.conf.

После сохранения изменений в скрипте, перезапустите демон snmpd:

systemctl restart snmpd && systemctl status snmpd

Можно протестировать:

snmpwalk -On -c public -v 2c 127.0.0.1 1.3.6.1.4.1.2021.8.4
snmpwalk -On -c public -v 2c 127.0.0.1 1.3.6.1.4.1.2021.9

Параметры:

  • -On включает числовой вывод, т.е. отключает трансляцию OIDов в имена из MIBа.
  • -c задаёт community string,
  • -v задаёт версию протокола SNMPv2c.