[Linux.wiki] Введение в SNMP.

0_0_SNMP-Managementkonsole

Сегодня речь пойдёт о мониторинге вашего сервера.
Мониторить свою ИТ инфраструктуру нужно всегда. Предела совершенству нет, но однозначно это делать нужно.

Всегда легче предугадать надвигающуюся проблему, например, нехватки жёсткого диска просто взглянув на график использования вашего диска чем обнаружить, что ваш сервер встал и не работает, начать копать и выяснить что у вас переполнился диск. Диск мог переполняться неделями, но без статистики и возможно алертов понять что что-то не так просто. Особенно если у вас больше чем пара серверов.

Для мониторинга применяется протокол SNMP.

SNMP (англ. Simple Network Management Protocol — простой протокол сетевого управления) — стандартный интернет-протокол для управления устройствами в IP-сетях на основе архитектур UDP/TCP. К поддерживающим SNMP устройствам относятся маршрутизаторы, коммутаторы, серверы, рабочие станции, принтеры, модемные стойки и другие.(из Википедии)

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

Управляемые протоколом SNMP сети состоят из трех ключевых компонентов:
Управляемое устройство. Например, мой сервер;
Агент — программное обеспечение, запускаемое на управляемом устройстве – демон snmpd. Этот демон отвечает на запросы от NMS. Также на управляемое устройство ставится MIB (см.ниже);
Network Management System, NMS — программное обеспечение, отлеживающее и контролирующее управляемые устройства. Эта программа ставится на отдельный сервер который будет осуществлять мониторинг всей сети (если серверов больше чем 1 =).

На стороне агента(сервера, мониторинг которого осуществляется) все параметры которые мы хотим отслеживать имеют определённые идентификаторы(текущая скорость передачи данных через ваш интерфейс – идентификатор, объём оперативной памяти – другой идентификатор). Эти идентификаторы называются OID – ObjectID.
Обратившись с NMS к Агенту на сервере и указав определённый OID можно получить информацию о каком-либо параметре сервера. Например, какой объём диска у сервера или сколько диска занято. Так, например, можно узнать количество подключённых пользователей к серверу.

Здесь с помощью утилиты snmpwalk производится запрос о количестве подключённых пользователей к моему серверу. В данном случае подключён один пользователь.
$ snmpwalk -Os -c communityname -v 2c srv-do-01.it-inside.org iso.3.6.1.2.1.25.1.5.0
iso.3.6.1.2.1.25.1.5.0 = Gauge32: 1

Здесь пользователей уже два.
$ snmpwalk -Os -c communityname -v 2c srv-do-01.it-inside.org iso.3.6.1.2.1.25.1.5.0
iso.3.6.1.2.1.25.1.5.0 = Gauge32: 2

Можно воспользоваться утилитой snmptranslate для того чтобы понять какой OID что означает.
$ snmptranslate iso.3.6.1.2.1.25.1.5.0
HOST-RESOURCES-MIB::hrSystemNumUsers.1

По сути NMS системы работают по такому же принципу, только там всё автоматизировано. NMS системы делает запросы каждого из интересуемых параметров каждые сколько-то минут…

Все OID на стороне Агента структурируются с помощью MIB – management information base. MIB описывает структуру управляемой информации на управляемом устройстве. Используется иерархическая структура. Каждый производитель использует свои MIB и NMS системы должны знать какой OID нужно запрашивать. Обычно в NMS уже есть основные наборы MIB под разных производителей. Либо можно перечитать MIB самому и взять то что нужно.

С помощью snmp можно как запрашивать данные с Агента так и устанавливать на Агенте какие-либо значания в какие-либо OID. Например, можно сменить пароль или перезагрузить систему. Для регулирования доступа по snmp применяются community(секретное слово) и access-list(список ip с которых разрешён доступ). Доступ можно предоставлять только на чтение – ro, на запись rw. Я сам не встречал на практике случае когда кто-то использовал rw.

На текущий момент существует три версии snmp. Большинство использует версию 2() – она лучше с точки зрения производительности по сравнению с 1. Версия 3 лучше с точки зрения безопасности – не всегда поддерживается всеми Агентами.

Вывод.
SNMP – мощный инструмент для мониторинга своих устройств. Можно отслеживать различные параметры и события.
Обязательно к установке.

О том как установить NMS – в моём случае cacti, как установить Агента и MIB смотри в “[Linux.wiki] Установка cacti и snmpd в Ubuntu.
Практические примеры будут в ближайшем видео. (Потом вставлю сюда ссылку).

———————
snmpd – daemon to respond to SNMP request packets.
snmptranslate – translate MIB OID names between numeric and textual forms.
snmpwalk – retrieve a subtree of management values using SNMP GETNEXT requests.
———————
SNMP wikipedia

Introduction to SNMP – Simple Network Management Protocol

25 Device Management SNMP, Syslog and Netflow