powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Создание собственного MIB файла и подключение его к SNMP
11 сообщений из 11, страница 1 из 1
Создание собственного MIB файла и подключение его к SNMP
    #37805350
Memphis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Задача стоит такая: надо задать любой OID, чтоб она возвращал значение Unsigned32 2^31 (это значение выходит за рамки Unsigned32 и по идее snmpget должен вернуть отрицательное значение).
Перекурив разных манов создал вот такой MIB

авторOPCMONA-HANDLE-UNSIGNED32-MIB DEFINITIONS ::= BEGIN

IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, mib-2 FROM SNMPv2-SMI;

opcmonaHandleUnsigned32 MODULE-IDENTITY
LAST-UPDATED "201204240000Z"
ORGANIZATION "hp.com"
CONTACT-INFO "Nobody"
DESCRIPTION "First draft"
::= { mib-2 5580 }

myTestFirstFieldU32 OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DEFVAL { 2147483648 }
::= { opcmonaHandleUnsigned32 73277255 }

END


Когда этот файл подсовываю в /usr/share/snmp/mibs и перегружаю snmp сервис, то не находится необходимый OID

автор[root@oalin1 mibs]# snmpwalk localhost -c public -v 2c | grep OPCMONA
HOST-RESOURCES-MIB::hrSWRunParameters.4495 = STRING: "OPCMONA"

[root@oalin1 mibs]# snmpget -c public -v 2c localhost 1.3.6.1.2.1.5580.73277255
SNMPv2-SMI::mib-2.5580.73277255 = No Such Object available on this agent at this OID

Пробовал просто подсунуть MIB файл, который был создан hardware vendor'ом, такая же фигня :(


Кто-то сталкивался с подобным?

Помогите решить данную проблему? Может проблема в самописном MIB файле (но MIB-drowser понимает этот файл)?
...
Рейтинг: 0 / 0
Создание собственного MIB файла и подключение его к SNMP
    #37805376
Фотография bga83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Memphis,

у меня есть некоторые сомнения что в правильном направлении копать начал. Когда мне понадобилось заюзать определенный OID на возврат своего значения(длина почтовой очереди), то я изменял snmpd.conf, настройки именно демона. А MIB, насколько я понял, используются исключительно для описания OID-ов, но не для возврата значений.
...
Рейтинг: 0 / 0
Создание собственного MIB файла и подключение его к SNMP
    #37805390
Memphis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bga83,

snmpd.conf - файл, который находится в /etc/snmp?

Не подскажешь где можно подробнее прочитать про это (каким образом можно сконфигурировать snmp.confd для возврата значение, которое мне необходимо)?
...
Рейтинг: 0 / 0
Создание собственного MIB файла и подключение его к SNMP
    #37805514
Фотография bga83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Memphisbga83,

snmpd.conf - файл, который находится в /etc/snmp?

Не подскажешь где можно подробнее прочитать про это (каким образом можно сконфигурировать snmp.confd для возврата значение, которое мне необходимо)?
расположение конфигурационного файла зависит от дистрибутива, но как правило, да он в /etc/snmp

смотри exec или в любом другом месте про exec в snmpd.conf
я использовал просто числовой OID без правки MIB
...
Рейтинг: 0 / 0
Создание собственного MIB файла и подключение его к SNMP
    #37805542
Memphis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bga83,

Спасибо за наводку. Попробую это еще раскурить :)
...
Рейтинг: 0 / 0
Создание собственного MIB файла и подключение его к SNMP
    #37805648
Memphis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, по результатам имею такое

Добавил в snmpd.conf такую строку

exec echotest /bin/echo hello world

В результате выполнения snmpwalk получил такое

[root@oalin2 snmp]# snmpwalk -c public -v 1 localhost .1.3.6.1.4.1.2021.8
UCD-SNMP-MIB::extIndex.1 = INTEGER: 1
UCD-SNMP-MIB::extNames.1 = STRING: echotest
UCD-SNMP-MIB::extCommand.1 = STRING: /bin/echo hello world
UCD-SNMP-MIB::extResult.1 = INTEGER: 0
UCD-SNMP-MIB::extOutput.1 = STRING: hello world
UCD-SNMP-MIB::extErrFix.1 = INTEGER: 0
UCD-SNMP-MIB::extErrFixCmd.1 = STRING:

Теперь вопрос как можно было б получить Unsigned32 значение?
Нагуглить пока не могу как это сделать :(
...
Рейтинг: 0 / 0
Создание собственного MIB файла и подключение его к SNMP
    #37805787
Фотография bga83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MemphisИтак, по результатам имею такое

Добавил в snmpd.conf такую строку

exec echotest /bin/echo hello world

В результате выполнения snmpwalk получил такое

[root@oalin2 snmp]# snmpwalk -c public -v 1 localhost .1.3.6.1.4.1.2021.8
UCD-SNMP-MIB::extIndex.1 = INTEGER: 1
UCD-SNMP-MIB::extNames.1 = STRING: echotest
UCD-SNMP-MIB::extCommand.1 = STRING: /bin/echo hello world
UCD-SNMP-MIB::extResult.1 = INTEGER: 0
UCD-SNMP-MIB::extOutput.1 = STRING: hello world
UCD-SNMP-MIB::extErrFix.1 = INTEGER: 0
UCD-SNMP-MIB::extErrFixCmd.1 = STRING:

Теперь вопрос как можно было б получить Unsigned32 значение?
Нагуглить пока не могу как это сделать :(
а тупо echo <число> - не катит? по сути же типы играют значение исключительно при дальнейшей обработке. Если твоему ПО, которое будет получать данные сказать, что это число, то ей без разницы будет как именно формируется результат и что указано в MIB, если данные конечно будут получены корректные.
Повторюсь, когда я вытаскивал длину очереди по snmp, то правил только snmpd.conf, где запускал скрит, проводивший обработку grep-ом вывод mailq. При этом софт (nagios) корректно воспринимал получаемые данные как числа.
...
Рейтинг: 0 / 0
Создание собственного MIB файла и подключение его к SNMP
    #37805871
Memphis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bga83,

Гугл меговесчь!

Нашел что надо править - есть такой файлик passtest, который вывод примеры того, что надо.
Но засада теперь в том, что она недопонимает тип unsigned, почему-то воспринимает как gauge32

Фалик я подредактировал вот таким образом (выделено зеленым, то что добавил):

cat passtest
#!/bin/sh -f

PATH=$path:/bin:/usr/bin:/usr/ucb

PLACE=".1.3.6.1.4.1.2021.255"
REQ="$2"

if [ "$1" = "-s" ]; then
echo $* >> /tmp/passtest.log
exit 0
fi

if [ "$1" = "-n" ]; then
case "$REQ" in
$PLACE) RET=$PLACE.1 ;;
$PLACE.1) RET=$PLACE.2.1 ;;
$PLACE.2.1) RET=$PLACE.2.2 ;;
$PLACE.2.2) RET=$PLACE.3 ;;
$PLACE.3) RET=$PLACE.4 ;;
$PLACE.4) RET=$PLACE.5 ;;
$PLACE.5) RET=$PLACE.6 ;;
*) exit 0 ;;
esac
else
case "$REQ" in
$PLACE) exit 0 ;;
*) RET=$REQ ;;
esac
fi

echo "$RET"
case "$RET" in
$PLACE.1) echo "string"; echo "life the universe and everything"; exit 0 ;;
$PLACE.2.1) echo "integer"; echo "42"; exit 0 ;;
$PLACE.2.2) echo "objectid"; echo ".1.3.6.1.4.42.42.42"; exit 0 ;;
$PLACE.2.3) echo "unsigned"; echo "2147483647"; exit 0 ;;
$PLACE.3) echo "timeticks"; echo "363136200"; exit 0 ;;
$PLACE.4) echo "ipaddress"; echo "127.0.0.1" ;;
$PLACE.5) echo "counter"; echo "42"; exit 0 ;;
$PLACE.6) echo "gauge"; echo "42"; exit 0 ;;
*) echo "string"; echo "ack... $RET $REQ"; exit 0 ;;
esac

Копаю дальше пока
...
Рейтинг: 0 / 0
Создание собственного MIB файла и подключение его к SNMP
    #37805877
Memphis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Memphisbga83,

Гугл меговесчь!

Нашел что надо править - есть такой файлик passtest, который вывод примеры того, что надо.
Но засада теперь в том, что она недопонимает тип unsigned, почему-то воспринимает как gauge32

Фалик я подредактировал вот таким образом (выделено зеленым, то что добавил):

cat passtest
#!/bin/sh -f

PATH=$path:/bin:/usr/bin:/usr/ucb

PLACE=".1.3.6.1.4.1.2021.255"
REQ="$2"

if [ "$1" = "-s" ]; then
echo $* >> /tmp/passtest.log
exit 0
fi

if [ "$1" = "-n" ]; then
case "$REQ" in
$PLACE) RET=$PLACE.1 ;;
$PLACE.1) RET=$PLACE.2.1 ;;
$PLACE.2.1) RET=$PLACE.2.2 ;;
$PLACE.2.2) RET=$PLACE.3 ;;
$PLACE.3) RET=$PLACE.4 ;;
$PLACE.4) RET=$PLACE.5 ;;
$PLACE.5) RET=$PLACE.6 ;;
*) exit 0 ;;
esac
else
case "$REQ" in
$PLACE) exit 0 ;;
*) RET=$REQ ;;
esac
fi

echo "$RET"
case "$RET" in
$PLACE.1) echo "string"; echo "life the universe and everything"; exit 0 ;;
$PLACE.2.1) echo "integer"; echo "42"; exit 0 ;;
$PLACE.2.2) echo "objectid"; echo ".1.3.6.1.4.42.42.42"; exit 0 ;;
$PLACE.2.3) echo "unsigned"; echo "2147483647"; exit 0 ;;
$PLACE.3) echo "timeticks"; echo "363136200"; exit 0 ;;
$PLACE.4) echo "ipaddress"; echo "127.0.0.1" ;;
$PLACE.5) echo "counter"; echo "42"; exit 0 ;;
$PLACE.6) echo "gauge"; echo "42"; exit 0 ;;
*) echo "string"; echo "ack... $RET $REQ"; exit 0 ;;
esac

Копаю дальше пока

Вывод выглядит вот так

[root@oalin2 scripts]# snmpget -v 2c -c public localhost .1.3.6.1.4.1.2021.255.2.3
UCD-SNMP-MIB::ucdavis.255.2.3 = Gauge32: 2147483647
...
Рейтинг: 0 / 0
Создание собственного MIB файла и подключение его к SNMP
    #37816745
Memphis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Случайно, никто не сталкивался с настройкой snmpd.conf (pass и exec он почему-то не хочет понимать) файла на Solaris 10?


Задача состоит в том, чтоб можно было определить собственный OID с предустановленным значением.
На Linux'e вышеописанный метод работает, а вот на Solaris'e, AIX'e и HP-UX'e не работает..
7 часов гугления потратил зря, т.к. не нашел решения, а то что написано - не хочет работать :(
...
Рейтинг: 0 / 0
Создание собственного MIB файла и подключение его к SNMP
    #37816869
Ихтиандр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIB нужен для snmpwalk например или обращения snmpget по семантическому имени ключа
Чтобы на хосте создать конкретный OID и менять его значение в NET-SNMP например
была exec
теперь extend
мой креативчикexec - позволяет с помощью кода завершения запускаемой программы (шеллб перл) заполнять метрику.
К сожалению, почему-то авторы в версии 5.4 объявили опцию deprecated и в 5.4.2 она уже не работает. Предлагается пользоваться вместо exec extend - ниже опишу и его.
Пример:
exec .1.3.6.1.4.1.2021.53 sarstats /opt/scripts/snmp/sarstats 4
скрипт парсит вывод sar и значение из (в данном случае) 4 колонки отдает в качестве кода возврата
Значение кода возврата можно (было) читать из .1.3.6.1.4.1.2021.53.100.1
г) extend - делает то же самое, что и exec, только выдает более развернутый результат. OID можно не задавать, потому как в 1 стартовый OID NET-SNMP может сложить несколько метрик, закодировав названия в адреса OID.
extend .1.3.6.1.4.1.2021.52 wio /opt/scripts/snmp/wio
extend .1.3.6.1.4.1.2021.52 idle /opt/scripts/snmp/idle
extend .1.3.6.1.4.1.2021.52 Entitled_capacity_percent /opt/scripts/snmp/sarstats 7
extend wio /opt/scripts/snmp/wio

Как он это делает и где искать результат?
# snmpwalk -v 2c -c public localhost NET-SNMP-EXTEND-MIB::nsExtendObjects - это если не указывали OID
----------------------------------
snmpwalk -v 2c -c public localhost NET-SNMP-EXTEND-MIB::nsExtendObjects
NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 24
NET-SNMP-EXTEND-MIB::nsExtendCommand."wio" = STRING: /opt/scripts/snmp/wio
NET-SNMP-EXTEND-MIB::nsExtendArgs."wio" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendInput."wio" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."wio" = INTEGER: 5
NET-SNMP-EXTEND-MIB::nsExtendExecType."wio" = INTEGER: exec(1)
NET-SNMP-EXTEND-MIB::nsExtendRunType."wio" = INTEGER: run-on-read(1)
NET-SNMP-EXTEND-MIB::nsExtendStorage."wio" = INTEGER: permanent(4)
NET-SNMP-EXTEND-MIB::nsExtendStatus."wio" = INTEGER: active(1)
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."wio" = STRING: gY
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."wio" = STRING: gY
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."wio" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."wio" = INTEGER: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."wio".1 = STRING: gY
----------------------------------
То есть, чтобы запросить результат определенной метрики, можно сделать так:

# snmpget -v 2c -c public localhost NET-SNMP-EXTEND-MIB::nsExtendResult.\"wio\"
NET-SNMP-EXTEND-MIB::nsExtendResult."wio" = INTEGER: 0


К сожалению, прочим системам мониторинга не объяснить, что нужный инстанс можно задавать словами...

# snmptranslate -Td NET-SNMP-EXTEND-MIB::nsExtendResult.\"wio\"
NET-SNMP-EXTEND-MIB::nsExtendResult."wio"
nsExtendResult OBJECT-TYPE
-- FROM NET-SNMP-EXTEND-MIB
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The return value of the command."
::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) netSnmp(8072) netSnmpObjects(1) nsExtensions(3) nsExtendObjects(2) nsExtendOutput1Table(3) nsExtendOutput1Entry(1) nsExtendResult(4) 3 119 105 111 }

# snmpget -v 2c -c public localhost NET-SNMP-EXTEND-MIB::nsExtendResult.3.119.105.111
NET-SNMP-EXTEND-MIB::nsExtendResult."wio" = INTEGER: 0

Посмотрим как разложились метрики, прописанные там,где мне хотелось:

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.52
UCD-SNMP-MIB::ucdavis.52.1.0 = INTEGER: 2
UCD-SNMP-MIB::ucdavis.52.2.1.2.3.119.105.111 = STRING: "/opt/scripts/snmp/wio"
UCD-SNMP-MIB::ucdavis.52.2.1.2.4.105.100.108.101 = STRING: "/opt/scripts/snmp/idle"
UCD-SNMP-MIB::ucdavis.52.2.1.2.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = STRING: "/opt/scripts/snmp/sarstats"
UCD-SNMP-MIB::ucdavis.52.2.1.3.3.119.105.111 = ""
UCD-SNMP-MIB::ucdavis.52.2.1.3.4.105.100.108.101 = ""
UCD-SNMP-MIB::ucdavis.52.2.1.3.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = STRING: "7"
UCD-SNMP-MIB::ucdavis.52.2.1.4.3.119.105.111 = ""
UCD-SNMP-MIB::ucdavis.52.2.1.4.4.105.100.108.101 = ""
UCD-SNMP-MIB::ucdavis.52.2.1.4.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = ""
UCD-SNMP-MIB::ucdavis.52.2.1.5.3.119.105.111 = INTEGER: 5
UCD-SNMP-MIB::ucdavis.52.2.1.5.4.105.100.108.101 = INTEGER: 5
UCD-SNMP-MIB::ucdavis.52.2.1.5.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = INTEGER: 5
UCD-SNMP-MIB::ucdavis.52.2.1.6.3.119.105.111 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.2.1.6.4.105.100.108.101 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.2.1.6.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.2.1.7.3.119.105.111 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.2.1.7.4.105.100.108.101 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.2.1.7.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.2.1.20.3.119.105.111 = INTEGER: 4
UCD-SNMP-MIB::ucdavis.52.2.1.20.4.105.100.108.101 = INTEGER: 4
UCD-SNMP-MIB::ucdavis.52.2.1.20.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = INTEGER: 4
UCD-SNMP-MIB::ucdavis.52.2.1.21.3.119.105.111 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.2.1.21.4.105.100.108.101 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.2.1.21.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.3.1.1.3.119.105.111 = STRING: "gY"
UCD-SNMP-MIB::ucdavis.52.3.1.1.4.105.100.108.101 = ""
UCD-SNMP-MIB::ucdavis.52.3.1.1.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = ""
UCD-SNMP-MIB::ucdavis.52.3.1.2.3.119.105.111 = STRING: "gY"
UCD-SNMP-MIB::ucdavis.52.3.1.2.4.105.100.108.101 = ""
UCD-SNMP-MIB::ucdavis.52.3.1.2.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = ""
UCD-SNMP-MIB::ucdavis.52.3.1.3.3.119.105.111 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.3.1.3.4.105.100.108.101 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.3.1.3.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.52.3.1.4.3.119.105.111 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.52.3.1.4.4.105.100.108.101 = INTEGER: 98
UCD-SNMP-MIB::ucdavis.52.3.1.4.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.52.4.1.2.3.119.105.111.1 = STRING: "gY"
UCD-SNMP-MIB::ucdavis.52.4.1.2.4.105.100.108.101.1 = ""
UCD-SNMP-MIB::ucdavis.52.4.1.2.25.69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116.1 = ""

Что такое 119.105.111 ,
105.100.108.101
и 69.110.116.105.116.108.101.100.95.99.97.112.97.99.105.116.121.95.112.101.114.99.101.110.116 ?
А это авторы взяли и посимвольно перекодировали названия метрик в числа по ASCII таблице.
Красиво конечно, но брать именно оттуда, куда я положил, мне нравилось больше.

Подробнее, правда в приложении к AIX вот тут
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Создание собственного MIB файла и подключение его к SNMP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]