SNMP (англ. Simple Network Management Protocol — простой протокол сетевого управления) — стандартный интернет-протокол для управления устройствами в IP-сетях на основе архитектур UDP/TCP. К поддерживающим SNMP устройствам относятся маршрутизаторы, коммутаторы, серверы, рабочие станции, принтеры, и другие. Протокол обычно используется в системах сетевого управления для контроля подключенных к сети устройств на предмет условий, которые требуют внимания администратора.
SNMP предоставляет данные для управления в виде переменных, описывающих конфигурацию управляемой системы. Эти переменные могут быть запрошены (а иногда и заданы) управляющими приложениями.
Кроме управления устройствами, SNMP используют и для мониторинга.
Установка SNMPD, SNMP
#apt-get install snmpd snmp
Настройка SNMPD
Редактируем файл /etc/snmp/snmpd.conf
#nano /etc/snmp/snmpd.conf
приводим файл к виду:
syslocation Odessa, UA syscontact admin 'at' andy.od.ua sysservices 0 rocommunity ServerRO 192.168.0.0/24 rwcommunity ServerRW 192.168.0.0/24
перезапускаем службу snmpd
#service snmpd restart
Теперь, можем послать запрос с помощью команды snmpwalk, команда snmpwalk автоматически выполняет серию snmpnext команд внутри заданного OID'ом диапазона.
OID (Object IDentification) - Идентификатор объекта, например 3.6.1.2.1.1.1.0
#snmpwalk -On -c ServerRO -v 2c localhost | less iso.3.6.1.2.1.1.1.0 = STRING: "Linux websrv 3.11.0-20-generic #34~precise1-Ubuntu SMP Thu Apr 3 17:25:07 UTC 2014 x86_64" iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10 iso.3.6.1.2.1.1.3.0 = Timeticks: (7436078) 20:39:20.78 iso.3.6.1.2.1.1.4.0 = STRING: "admin 'at' andy.od.ua" iso.3.6.1.2.1.1.5.0 = STRING: "websrv" iso.3.6.1.2.1.1.6.0 = STRING: "Odessa, UA" iso.3.6.1.2.1.1.7.0 = INTEGER: 0 iso.3.6.1.2.1.1.8.0 = Timeticks: (5) 0:00:00.05 iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1 iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1 iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.15.2.1.1 iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.6.3.1 iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.2.1.49 iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.2.1.4 iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.2.1.50 iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.6.3.16.2.2.1 iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The SNMP Management Architecture MIB." ......
Можно получить значение конкретного OID с помощью Команды snmpget (используется для чтения информации с устройства заданного OID), прочитаем значение OID'а 3.6.1.2.1.1.1.0 содержащий информацию о системе:
#snmpget -v 2c -c ServerRO localhost iso.3.6.1.2.1.1.1.0 iso.3.6.1.2.1.1.1.0 = STRING: "Linux websrv 3.11.0-20-generic #34~precise1-Ubuntu SMP Thu Apr 3 17:25:07 UTC 2014 x86_64"
Установка MIB
OID выглядит не так информативно без MIB (Managment Information Base - Информационная база управления), поэтому поставим базу MIB'ов.
#apt-get install snmp-mibs-downloader #download-mibs
Теперь можно запрашивать данные в виде
#snmpget -m ALL -v 2c -c ServerRO localhost sysDescr.0 SNMPv2-MIB::sysDescr.0 = STRING: Linux la2server 2.6.31-23-server #75-Ubuntu SMP Fri Mar 18 19:23:09 UTC 2011 x86_64
Данные с lm-sensors
установка lm-sensors если он еще не установлен
#apt-get install lm-sensors #sensors acpitz-virtual-0 Adapter: Virtual device temp1: +27.8°C (crit = +106.0°C) temp2: +29.8°C (crit = +106.0°C) #service snmpd restart
OID (.1.3.6.1.4.1.2021.13.16) = MIB (lmSensors)
#snmpwalk -c ServerRO -v 2c localhost lmSensors LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 0 LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 1 LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 2 LM-SENSORS-MIB::lmTempSensorsIndex.4 = INTEGER: 3 LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: temp1 LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: temp1 LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: temp2 LM-SENSORS-MIB::lmTempSensorsDevice.4 = STRING: temp2 LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 27800 LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 106000 LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 29800 LM-SENSORS-MIB::lmTempSensorsValue.4 = Gauge32: 106000 или конкретный OID #snmpget -m ALL -v 2c -c ServerRO localhost lmTempSensorsValue.1 LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 45000
Теперь можно использовать snmp для мониторинга или управление сервером. Программы для мониторинга и управления: Cacti, Nagios, SNMPc, NetXMS, Zabbix ....