Как настроить мониторинг принтеров с помощью Zabbix, используя SNMP? Я попробовал выполнить команду snmpwalk для одного принтера, и получил множество oid, но не смог определить, что каждый из них означает. Я слышал, что для этого можно использовать mib-файлы. Подскажите, как получить описание oid с их помощью? Также возможно ли так настроить snmpwalk, чтобы сразу отображалось описание oid при выполнении команды?
Чтобы расшифровать OID, полученные с помощью команды `snmpwalk`, вам действительно понадобятся MIB-файлы. MIB (Management Information Base) — это структура данных, которая описывает объекты в сети, доступные для мониторинга и управления через SNMP. Каждый OID связан с определённым объектом, и MIB-файлы содержат описание этих объектов, включая их названия и типы. ### Шаги для работы с MIB-файлами: 1. **Скачивание MIB-файлов**: - Вы можете найти MIB-файлы для вашего оборудования на сайте производителя принтера или в общедоступных MIB-библиотеках, таких как [NET-SNMP](http://www.net-snmp.org). - Установите MIB-файлы на вашу локальную машину, обычно они находятся в директории, такой как `/usr/share/snmp/mibs` на системах Linux. 2. **Настройка окружения для SNMP**: - Убедитесь, что ваш SNMP-клиент (например, snmpwalk) может находить MIB-файлы. Для этого вам нужно указать переменную окружения `MIBS`. - В командной строке вы можете установить переменную, выполнив: ```bash export MIBS=+ALL ``` - Это укажет SNMP-клиенту загружать все доступные MIB-файлы. 3. **Использование `snmpwalk` с MIB-описаниями**: - После установки MIB-файлов и настройки окружения, вы можете использовать команду `snmpwalk`, и она будет автоматически расшифровывать OID: ```bash snmpwalk -v2c -c public <IP-адрес-принтера> . ``` - Операция должна показывать имена объектов вместо OID. ### Настройка мониторинга принтеров с Zabbix через SNMP: 1. **Добавление хоста в Zabbix**: - Войдите в веб-интерфейс Zabbix и добавьте новый хост, указав имя и IP-адрес принтера. - Убедитесь, что в качестве типа соединения выбран SNMP. 2. **Добавление элементарных данных**: - После добавления хоста, нужно создать элементы (items), соответствующие OID, которые вы хотите мониторить (например, уровень тонера, статус принтера и т.д.). - Получение OID можно выполнить с помощью `snmpwalk`, а затем добавить соответствующие параметры в Zabbix. 3. **Создание триггеров**: - Вы можете создать триггеры для уведомлений, если, например, уровень тонера будет ниже определённого значения, или если принтер отключится. 4. **Мониторинг и отчёты**: - Zabbix будет собирать данные с устройств и позволять вам создавать отчёты и графики для анализа состояния принтеров. ### Заключение Использование MIB-файлов не только сделает ваши OID более читаемыми, но и поможет вам настроить эффективный мониторинг ваших устройств через Zabbix. Убедитесь, что вы правильно настроили SNMP на вашем принтере и что он доступен из сети для вашего Zabbix-сервера.
SNMP MIB файл - это подробное описание каждого SNMP OID в устройстве определённого производителя.
Поэтому вам надо найти этот SNMP MIB файл, сгенерированный производителем этого принтера.
В нём вы и увидите описание каждого OID, а так же все его параметры и перечисленные вложенные OID-ы.
Можно через MIB, можно использовать online-сервисы, например https://oidref.com
Например
snmpwalk -v 2c -c public corerouter.my.domain ... iso.3.6.1.2.1.1.1.0 = STRING: "RouterOS CRS309-1G-8S+" iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.14988.1 ...
Получим описание интересующего OID'а. Естественно, предварительно надо установить пакет со стандартными MIB'ами, в Ubuntu это snmp-mibs-downloader.
snmptranslate -mALL -Td iso.3.6.1.2.1.1.1.0 SNMPv2-MIB::sysDescr.0 sysDescr OBJECT-TYPE -- FROM SNMPv2-MIB, RFC1213-MIB -- TEXTUAL CONVENTION DisplayString SYNTAX OCTET STRING (0..255) DISPLAY-HINT "255a" MAX-ACCESS read-only STATUS current DESCRIPTION "A textual description of the entity. This value should include the full name and version identification of the system's hardware type, software operating-system, and networking software." ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysDescr(1) 0 }
snmptranslate -Td -mAll iso.3.6.1.2.1.1.2.0 SNMPv2-MIB::sysObjectID.0 sysObjectID OBJECT-TYPE -- FROM SNMPv2-MIB, RFC1213-MIB SYNTAX OBJECT IDENTIFIER MAX-ACCESS read-only STATUS current DESCRIPTION "The vendor's authoritative identification of the network management subsystem contained in the entity. This value is allocated within the SMI enterprises subtree (1.3.6.1.4.1) and provides an easy and unambiguous means for determining `what kind of box' is being managed. For example, if vendor `Flintstones, Inc.' was assigned the subtree 1.3.6.1.4.1.424242, it could assign the identifier 1.3.6.1.4.1.424242.1.1 to its `Fred Router'." ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysObjectID(2) 0 }
Видим, что у микротика есть ещё свой enterprise-блок с кодом 14988, в котором находятся специфичные для него OID'ы. Если скачать MIB для микротика (в папку ~/.snmp/mibs), то в нём увидим строку
.mikrotik OBJECT IDENTIFIER ::= { enterprises 14988 }
Получим OID'ы микротика
snmpwalk -v 2c -c public corerouter.my.domain 1.3.6.1.4.1.14988 ... iso.3.6.1.4.1.14988.1.1.3.100.1.2.17 = STRING: "cpu-temperature" iso.3.6.1.4.1.14988.1.1.3.100.1.3.17 = INTEGER: 22 iso.3.6.1.4.1.14988.1.1.3.100.1.4.17 = INTEGER: 1 ...
snmptranslate -mAll iso.3.6.1.4.1.14988.1.1.3.100.1.2.17 MIKROTIK-MIB::mtxrGaugeName.17 snmptranslate -mAll iso.3.6.1.4.1.14988.1.1.3.100.1.3.17 MIKROTIK-MIB::mtxrGaugeValue.17 snmptranslate -Td -mAll iso.3.6.1.4.1.14988.1.1.3.100.1.4.17 MIKROTIK-MIB::mtxrGaugeUnit.17 mtxrGaugeUnit OBJECT-TYPE -- FROM MIKROTIK-MIB SYNTAX INTEGER {celsius(1), rpm(2), dV(3), dA(4), dW(5), status(6)} MAX-ACCESS read-only STATUS current DESCRIPTION "units" ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) mikrotik(14988) mikrotikExperimentalModule(1) mtXRouterOs(1) mtxrHealth(3) mtxrGaugeTable(100) mtxrGaugeTableEntry(1) mtxrGaugeUnit(4) 17 }
Видим, что под OID'ом 1.3.6.1.4.1.14988.1.1.3.100.1.3.17 находится температура процессора (mtxrGaugeName = cpu-temperature) в градусах цельсия (mtxrGaugeUnit = 1) и сейчас она равна 22 градусам (mtxrGaugeValue = 17).