Решаем проблему «Cannot find module (SNMPv2-MIB)» при старте zabbix-server

На одном из серверов стоит zabbix-server v3.4 (на 4.0 так же актуально), при старте в лог /var/log/zabbix/zabbix_server.log выводится огромная простыня надписей вида:

...
Cannot find module (SNMPv2-MIB): At line 2 in (none)
Cannot find module (IF-MIB): At line 2 in (none)
Cannot find module (IP-MIB): At line 2 in (none)
Cannot find module (TCP-MIB): At line 2 in (none)
Cannot find module (UDP-MIB): At line 2 in (none)
...

Давайте исправим это.

Исходные данные: Сервер с Debian 9 и zabbix-server 4.0.1
Задача: Исправить ошибки Cannot find module (SNMPv2-MIB).

Смысл ошибки в том, что при запуске zabbix-server ищет скомпилированные MIB в каталоге /usr/share/snmp/mibs и некоторых других и не может найти, т.к. их там попросту нет. На общую работу zabbix-server эти ошибки никак не влияют, но если Вы используете в Zabbix мониторинг устройств по протоколу SNMP, то не имея нужных MIB-файлов zabbix-server не сможет использовать человеко-читаемые OID.
Так же не имея базы MIB’ов Вы не сможете использовать человеко-читаемые OID в утилите snmpwalk.

Давайте установим программу, которая скачает и скомпилирует все нужные нам MIB-файлы.

Для Debian пакет называется snmp-mibs-downloader и находится в non-free репозитарии.

Добавим non-free репозитарии в файл /etc/apt/sources.list

Мой файл /etc/apt/sources.list до изменения:

deb http://mirror.yandex.ru/debian/ stretch main
deb-src http://mirror.yandex.ru/debian/ stretch main
deb http://security.debian.org/debian-security stretch/updates main
deb-src http://security.debian.org/debian-security stretch/updates main
deb http://mirror.yandex.ru/debian/ stretch-updates main
deb-src http://mirror.yandex.ru/debian/ stretch-updates main

После:

deb http://mirror.yandex.ru/debian/ stretch main non-free
deb-src http://mirror.yandex.ru/debian/ stretch main non-free
deb http://security.debian.org/debian-security stretch/updates main non-free
deb-src http://security.debian.org/debian-security stretch/updates main non-free
deb http://mirror.yandex.ru/debian/ stretch-updates main non-free
deb-src http://mirror.yandex.ru/debian/ stretch-updates main non-free

По сути мы добавили non-free после слова main.

Выполним обновление базы пакетов:

apt-get update

Установим snmp-mibs-downloader:

apt-get install snmp-mibs-downloader

В процессе установки будет сразу запущена на утилита download-mibs, которая распакует, скомпилирует и разложит по нужным папкам MIB-файлы.

Теперь мы можем перезапустить zabbix-server и посмотреть лог, все ошибки вида «Cannot find module (SNMPv2-MIB)» там больше не появятся.

Дополнительно (нужно выполнить только если Вы используете в zabbix мониторинг по SNMP или используете утилиты snmpwalk и т.п. из пакета snmp):

Для того, чтобы утилита snmpwalk так же могла использовать нашу готовую базу MIB-файлов нужно ей указать какие MIB’ы подгружать.

Посмотрим текущее дерево MIB’оф:

snmptranslate -Tp

Результат:

+--iso(1)

То есть утилита snmpwalk и другие из пакета snmp ничего не знают о наших MIB’ах.
Причина кроется в строке mib: в файле /etc/snmp/snmp.conf, эту строку нужно просто закомментировать, например так:

sed -i "s/^\(mibs *:\).*/#\1/" /etc/snmp/snmp.conf

После этого, если на сервере есть запущенный демон snmpd, то нужно его перезапустить:

systemctl restart snmpd

Теперь при вызове snmptranslate мы увидим все дерево MIB’ов, примерно такое:

# snmptranslate -Tp
+--iso(1)
   |
   +--org(3)
      |
      +--dod(6)
         |
         +--internet(1)
            |
            +--directory(1)
            |
            +--mgmt(2)
            |  |
            |  +--mib-2(1)
            |     |
            |     +--system(1)
            |     |  |
            |     |  +-- -R-- String    sysDescr(1)
            |     |  |        Textual Convention: DisplayString
            |     |  |        Size: 0..255
            |     |  +-- -R-- ObjID     sysObjectID(2)
            |     |  +-- -R-- TimeTicks sysUpTime(3)
            |     |  |  |
            |     |  |  +--sysUpTimeInstance(0)
            |     |  |
            |     |  +-- -RW- String    sysContact(4)
            |     |  |        Textual Convention: DisplayString
            |     |  |        Size: 0..255
            |     |  +-- -RW- String    sysName(5)
            |     |  |        Textual Convention: DisplayString
            |     |  |        Size: 0..255

На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите, чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.


Оставить комментарий

avatar
1000

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

  Подписаться  
Уведомление о