На одном из серверов стоит 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
На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите, чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Профессионально занимаюсь системным администрированием Linux -серверов и баз данных (MySQL, PostgreSQL) на протяжении последних 24 лет.
Спасибо. Помогло.