Linux Mint    Ubuntu    openSUSE    Asterisk    FreeBSD    Android    Nokia N900    Игры в Linux
 Linux Mint    Ubuntu     openSUSE     Asterisk     FreeBSD     Android     N900     Games

Мониторим dhcp пулы по snmp

И так сегодня я расскажу как можно мониторить dhcp пулы по протоколу snmp.

Начнем с того что единственное решение, которое я смог найти, было dhcp-snmp скрипт и скачать его можно было с сайта разработчика http://www.net-track.ch/opensource/dhcpd-snmp/ НО скрипт был написан еще в 2006 году и сайт уже давно не работает.  Другого решения нет. Если найдете пишите в комментариях это будет актуально.

Погнали. Для начала нужно скачать скрипт от сюда. В архиве 2 версии скрипта old и new. old версия подходит для perl версии 5.10 и ниже (оригинал), а new для perl 5.14 и выше(переделка). Так например old для Дебиан 6, а new для Дебиан 7.

Скидываем на сервер dhcp нужную версию и делаем исполняемым.

-rwxr-xr-x 1 root root 10582 Jun 18 17:43 dhcp-snmp
-rw-r--r-- 1 root root   724 Jun 18 17:07 dhcp-snmp.conf

 2 файла: первый сам скрипт, второй его конфиг. Мой конфиг выглядит так

#The file is in key: value format and allows only two keys:
#
#leases: /var/lib/dhcp3/dhcpd.leases
#
#Location of the dhcpd.leases file. This file needs to be accessible by the script.
#
#pool: index, description, ip1-ip2, ip3-ip4...
#
#Defines a pool to monitor. index is a unique numeric index, description a textual
#description of this pool, and ip1-ip2, ip3-ip4, ... defines the ranges of IP addresses
#belonging to this pool.

leases: /var/lib/dhcp/dhcpd.leases

pool: 1, LAN,
pool: 10, pool_for_MG_36_1, 10.43.100.2-10.43.103.254,
pool: 11, pool_for_MG_36_2, 10.43.104.2-10.43.107.254,
pool: 12, pool_for_MG_36_3, 10.43.108.2-10.43.111.254,
pool: 13, pool_for_MG_32_1, 10.43.112.2-10.43.115.254,

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

Затем идем и правим конфиг snmpd /etc/snmp/snmpd.conf в дебиане, в вашем дистрибутиве путь может отличаться. Все что нужно это добавить в конфиг строчку

pass_persist .1.3.6.1.4.1.21695.1.2  /etc/dhcp/dhcp-mrtg/dhcp-snmp /etc/dhcp/dhcp-mrtg/dhcp-snmp.conf

Путь до скрипта указывайте свой, но pass_persist обязательно!!!

В принцепе готово, перезапускаем демон snmpd и проверяем:

snmpwalk -v 2c -c public 10.245.112.147  1.3.6.1.4.1.21695.1.2
iso.3.6.1.4.1.21695.1.2.2.1 = INTEGER: 0
iso.3.6.1.4.1.21695.1.2.2.1.1 = INTEGER: 1
iso.3.6.1.4.1.21695.1.2.2.1.10 = INTEGER: 10
iso.3.6.1.4.1.21695.1.2.2.1.11 = INTEGER: 11
iso.3.6.1.4.1.21695.1.2.2.1.12 = INTEGER: 12
iso.3.6.1.4.1.21695.1.2.2.1.13 = INTEGER: 13
iso.3.6.1.4.1.21695.1.2.2.2 = ""
iso.3.6.1.4.1.21695.1.2.2.2.1 = STRING: "LAN"
iso.3.6.1.4.1.21695.1.2.2.2.10 = STRING: "pool_for_MG_36_1"
iso.3.6.1.4.1.21695.1.2.2.2.11 = STRING: "pool_for_MG_36_2"
iso.3.6.1.4.1.21695.1.2.2.2.12 = STRING: "pool_for_MG_36_3"
iso.3.6.1.4.1.21695.1.2.2.2.13 = STRING: "pool_for_MG_32_1"
iso.3.6.1.4.1.21695.1.2.2.3 = INTEGER: 0
iso.3.6.1.4.1.21695.1.2.2.3.1 = INTEGER: 0
iso.3.6.1.4.1.21695.1.2.2.3.10 = INTEGER: 1021
iso.3.6.1.4.1.21695.1.2.2.3.11 = INTEGER: 1021
iso.3.6.1.4.1.21695.1.2.2.3.12 = INTEGER: 1021
iso.3.6.1.4.1.21695.1.2.2.3.13 = INTEGER: 1021
iso.3.6.1.4.1.21695.1.2.2.4 = INTEGER: 0
iso.3.6.1.4.1.21695.1.2.2.4.1 = INTEGER: 0
iso.3.6.1.4.1.21695.1.2.2.4.10 = INTEGER: 4
iso.3.6.1.4.1.21695.1.2.2.4.11 = INTEGER: 2
iso.3.6.1.4.1.21695.1.2.2.4.12 = INTEGER: 1
iso.3.6.1.4.1.21695.1.2.2.4.13 = INTEGER: 1
iso.3.6.1.4.1.21695.1.2.2.5 = INTEGER: 1
iso.3.6.1.4.1.21695.1.2.2.5.1 = INTEGER: 0
iso.3.6.1.4.1.21695.1.2.2.5.10 = INTEGER: 511
iso.3.6.1.4.1.21695.1.2.2.5.11 = INTEGER: 510
iso.3.6.1.4.1.21695.1.2.2.5.12 = INTEGER: 510
iso.3.6.1.4.1.21695.1.2.2.5.13 = INTEGER: 510
iso.3.6.1.4.1.21695.1.2.2.6 = INTEGER: 0
iso.3.6.1.4.1.21695.1.2.2.6.1 = INTEGER: 0
iso.3.6.1.4.1.21695.1.2.2.6.10 = INTEGER: 1017
iso.3.6.1.4.1.21695.1.2.2.6.11 = INTEGER: 1019
iso.3.6.1.4.1.21695.1.2.2.6.12 = INTEGER: 1020
iso.3.6.1.4.1.21695.1.2.2.6.13 = INTEGER: 1020

Что тут к чему? Вот выдержка из скрипта, ктр все объясняет:

    $dhcp{"2.1.".$i} = [ "integer", $i ];
    $dhcp{"2.2.".$i} = [ "string", $pool->{"name"} ];
    $dhcp{"2.3.".$i} = [ "integer", $pool->{"total"} ];
    $dhcp{"2.4.".$i} = [ "integer", $pool->{"active"} ];
    $dhcp{"2.5.".$i} = [ "integer", $pool->{"expired"} ];
    $dhcp{"2.6.".$i} = [ "integer", $pool->{"total"} - $pool->{"active"} ];

Прошу не судите особо строго, я эту статью делал в большей степени для себя, что бы не забыть, т.к. про новую версию перла в интернете попросу не сказано из-за того что проект dhcp-snmp старый и мертвый. Сам скрипт под новую версию я переделывал с помощью друзей на форуме. За что им огромное спасибо.

jekson аватар

это для сбора информации по свободным/занятым IP?

BAF аватар

Да, свободным, занятым, истекшим и всего.

Эксперт - зто человек, который совершил все возможные ошибки в очень узкой специальности.