Как стать автором
Обновить

snmp и Linux — простым языком

мониторинг? не так уж и страшно!
изучаем snmp

Эта статья посвящена тем кто не знаком с технологией snmp в качестве общей информации, а также описывает вариант использовения snmp технологии на линуксах для сетевого мониторинга систем.

Cтолкнулся я как то по работе с необходимостью развертывания системы мониторинга на приличное количество разношерстных серверов — windows, debian, gentoo. Для мониторинга был закуплен и установлен некий продукт (PRTG network expert, см www.paessler.com — что за зверь могу написать в следующий раз) и стояла задача подключения к нему всего оборудования.
С windows он справился в пару кликов, как и обещанно, опознал и сетевое оборудование. Проблема встала с линукс. Если для windows предлагались разные протоколы и стандарные пакеты настроек, для линукса был оставлен один единственный snmp. Надо заметить в документации к продукту не было сказано не слова о том как его настраивать.
На тот момент я слабо представлял что это за зверь и с чем его едят. Порывшись в гугле так и не нашел достаточно простого мануала «для чайника» чтобы понять что да как. Все информация уводила либо в густую техническую информацию, либо предлагала решения «в пакете» так и не рассказывая что делать. Первое впечатление что это чтото сложное и непонятное. Видать поэтому эта технология так мало используется в наши дни.

Так что же это? Когда разобрался, все оказалось очень простым и мощным инструментом.

Смотрим википедию:
SNMP (англ. Simple Network Management Protocol — простой протокол управления сетью) — это протокол управления сетями связи на основе архитектуры TCP/IP.

На основе концепции TMN в 1980—1990 гг. различными органами стандартизации был выработан ряд протоколов управления сетями передачи данных с различным спектром реализации функций TMN. К одному из типов таких протоколов управления относится SNMP.

Также это технология, призванная обеспечить управление и контроль за устройствами и приложениями в сети связи путём обмена управляющей информацией между агентами, располагающимися на сетевых устройствах, и менеджерами, расположенными на станциях управления. SNMP определяет сеть как совокупность сетевых управляющих станций и элементов сети (главные машины, шлюзы и маршрутизаторы, терминальные серверы), которые совместно обеспечивают административные связи между сетевыми управляющими станциями и сетевыми агентами.

Итак, все что делает эта система — передает управляющую информацию на уровне протокола. Также почитав ту же статью — появляются еще два понятия — MIB (не имеющий отношения к однименному фильму) и OID.
OID — задает уникальные идентификаторы объектов по которым информация может быть прочитана или установлена через SNMP.
MIB — это база OID-ов, представляющая собой древовидную структуру.

snmp используется практически на всем сетевом оборудовании, как инструмент наблюдения и управления.

Теперь хватит теории, перейдем к практике.

snmp технология клиент-серверная. Значит понадобится как минимум один клиент и сервер. сперва разберемся с сервером:
В случае с линукс он как правило идет в стандартной сборке. Разных вариантов установки — много, общее — надо посмотреть есть ли в системе файл конфигурации /etc/snmp/*.conf и скрипт автозапуска /etc/initd/snmpd
Если нет — устанавливаем. В случае генту emerge net-snmp установит необходимо-достаточный набор утилит. Для других дистрибутивов найти несложно.

В этом же пакете есть программы для клиентских запросов. Для визуальности и любителей графического интерфейса можно поставить mbrowse или mibbrowser (под windows)

После установки смотрим файл конфигурации. /etc/snmp/snmpd.conf Как правило дается пример конфигурации. В первую очередь интересуют следующие строчки:

Первое — ограничения доступа. Задает из каких сетей и адресов можно обращаться к серверу. Весьма удобно для ограничения доступа.
# sec.name source community
com2sec local 127.0.0.1/32 public
com2sec local 192.168.0.*/32 public

Этот пункт создает группы по указанному выше имени и версии протокола. можно разграничить кто сможет получать какую информацию
# sec.model sec.name
group MyROGroup v1 local
group MyROGroup v2c local
group MyROGroup usm local

Очередное разграничение прав, конкретнее какую часть mib дерева можно смотреть.
# incl/excl subtree [mask]
view all included .1

Последняя строка доступа. задает права доступа для групп.
# context model level prefix read write notify (unused)
access MyROGroup "" any noauth exact all none none

самый на мой взгляд интересный пункт, аддоны. Кроме стандартного набора параметров, сервер позволяет загружать пользовательские скрипты.
Здесь как пример — вызывается шелл скрипт с параметром, возвращающий значение. можно было бы сразу написать команду, но для приера можно и поизвращаться.
#Add-on's
exec root /bin/sh /usr/monitoring/df.sh hda2
exec home /bin/sh /usr/monitoring/df.sh home

Переменные для имени сервера и адреса сисадмина. для красоты. остальные параметры можно узнать из мануала.
syslocation — syscontact — сохранить, перезапустить демона ./etc/init.d/snmpd restart

Теперь к клиенту:
snmpgetnext -c public -v 2c -O n localhost 1
выведет первое значение из доступных в формате оид=тип: значение. Вместо единички можно подставить любой оид, вместо localhost — ип компьютера.
snmpgetnext -c public -v 2c -O v localhost 1
выведет только значение
snmpwalk -c public -v 2c -O n localhost .1
выведет все дерево ОИДов с значениями.
snmpwalk -c public -v 2c -O n localhost .1.3.6.1.4.1.2021.8.1
выведет таблицу выше описанных аддонов.

Это отнюдь не все возможности, все на целую книгу потянут — но достаточно чтобы иметь представление об инструменте и начать его использовать.

Конечно, можно все это сделать и через тотже ssh и комуто покажется быстрее и удобнее. Но для автоматизации в больших количествах данный метод имхо куда лучше.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.