Bear_UA Опубликовано 26 марта, 2012 · Жалоба Подскажите пожалуйста есть ли у кого скрипт для nagios для подсчета количества мак адресов по snmp на заданом порту комутатора ну и срабатывание *OK* при наличии > 0 адресов и соответственно *CRITICAL* при = 0 адресов. Заранее благодарю. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Negator Опубликовано 26 марта, 2012 · Жалоба Подскажите пожалуйста есть ли у кого скрипт для nagios для подсчета количества мак адресов по snmp на заданом порту комутатора ну и срабатывание *OK* при наличии > 0 адресов и соответственно *CRITICAL* при = 0 адресов. Заранее благодарю. Такого нет, но проблемы сделать оный не вижу. А что за коммутаторы то? Хочу заметить что Нагиос не очень удобен для таких целей. Вы хотите видеть постоянно кучу сервисов в дауне, когда абонент отключил комп? Да и наличие мака на порту не гарантирует работоспособность. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bear_UA Опубликовано 26 марта, 2012 · Жалоба Комутаторы в основном EdgeCore ES3528M. Мониторится будут не абонентские порты. Неужели никто не делал такой скрипт? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
bos9 Опубликовано 27 марта, 2012 · Жалоба да там 5 строчек на баше, oid нашли? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bear_UA Опубликовано 27 марта, 2012 · Жалоба Да вот в том то и дело что нет :( А не стандартных oid для свичей которые показывают маки на портах? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sirmax Опубликовано 27 марта, 2012 · Жалоба Да вот в том то и дело что нет :( А не стандартных oid для свичей которые показывают маки на портах? Блин, это лень что ли? Ну запросите ОИД у того кто продал свитчи, например у Монблана. Действительно там же 5 строк. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hub00 Опубликовано 27 марта, 2012 (изменено) · Жалоба snmpwalk -v 2c -c public $ip .1.3.6.1.2.1.17.7.1.2.2.1.2.666 -Ovq Маки в влане 666 в dec виде (меньше грузит железку, в отличии от hex). Грепни порт и wc -l. Ну как-то это криво. у меня 1500 железок, и каждые 5 мин скрипт проходит по всем коммутаторам и по snmp собирает mac port в БД. Где эта информация уже анализируется на предмет закольцовок в сети, флуда, построения динамической топологии сети. Обход и анализ занимает около 3-х мин в вечернее время. Можешь переделать этот код для себя #!/usr/bin/perl -w use strict; my $result; my $limit; my @part; $limit = $ARGV[0]; open(SNMP,"snmpwalk -v 2c -c public $ip 1.3.6.1.4.1.6527.3.1.2.1.1.1 -Ov|"); while (<SNMP>) { @part=split(/ /, $_); $result=$part[1]; } if ($result <= $limit) { print "SNMP OK - $result\n"; exit 0; } else { print "SNMP CRITICAL - $result\n"; exit 2; } Изменено 27 марта, 2012 пользователем hub00 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Negator Опубликовано 27 марта, 2012 · Жалоба у меня 1500 железок, и каждые 5 мин скрипт проходит по всем коммутаторам и по snmp собирает mac port в БД. Где эта информация уже анализируется на предмет закольцовок в сети, флуда, построения динамической топологии сети. Обход и анализ занимает около 3-х мин в вечернее время. а каким образом анализируете? Если не секрет конечно Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hub00 Опубликовано 27 марта, 2012 (изменено) · Жалоба у меня 1500 железок, и каждые 5 мин скрипт проходит по всем коммутаторам и по snmp собирает mac port в БД. Где эта информация уже анализируется на предмет закольцовок в сети, флуда, построения динамической топологии сети. Обход и анализ занимает около 3-х мин в вечернее время. а каким образом анализируете? Если не секрет конечно Не секрет и абсолютно ничего особенного. Кольца или mac-move определяются путем сравнения пар mac-port только что полученных, с уже имеющимися в базе (полученными раннее). Если видим что mac переехал в другой порт, обновляем в базе новый порт, и к примеру я заношу запись в другую таблицу, мол в это время на этом коммутаторе мак переехал в этот порт с того порта. Как арп-вотч в линухе, только там ip-mac. Флуд (мак-флуд) анализирую БД на количество новых маков за промежуток времени, если больше определенного значения, получаю уведомление. Построение динамической топологии. Выбираю один мак как ориентир (мак шлюза в влане управления этими коммутаторами), опираясь на имеющуюся информацию в БД, определяю на коммутаторах аплинковые порты и потом уже строю цепочки. Все делаю на перле, сбор и обработка данных производится многопоточно. Одновременно обрабатываю по 500 железок 4 ядра ксеона 2.5 Гигагерц 70-100% и 2.5-3Гб ОЗУ. Изменено 27 марта, 2012 пользователем hub00 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martin74 Опубликовано 28 марта, 2012 · Жалоба а не поделитесь скриптами? ;) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bear_UA Опубликовано 1 апреля, 2012 · Жалоба Огромное спасибо hub00 за помощь. Вот сделал свой скрипт на основе скрипта hub00. Пользуйтесь на здоровье :) Параметры скрипта check_mac HOST PORT MIN_LIMIT HOST - ип адрес свича PORT - номер порта MIN_LIMIT - минимальное значение для статуса OK (если ниже то CRITICAL) скрипт также проверяет или порт физически активный (ifOperStatus.x) и в случае если не активный то также выдает CRITICAL Скрипт проверен со свичами EdgeCore, Dlink, Planet, Linksys #!/usr/bin/perl -w use strict; my $result; my $limit; my $port; my $count; my $portstatus; my $ip; my @part; $ip = $ARGV[0]; $limit = $ARGV[2]; $port = $ARGV[1]; $count=0; $portstatus=0; if ($limit eq "" || $port eq "" || $ip eq "") { print "SNMP CRITICAL - Usage: check_mac HOST PORT MIN_LIMIT\n"; exit 2; } open(SNMPUP,"snmpwalk -v 2c -c public -Ov $ip ifOperStatus.$port |"); while (<SNMPUP>) { @part=split(/ /, $_); $portstatus=$part[1]; chomp $portstatus; } close(SNMPUP); open(SNMP,"snmpwalk -v 2c -c public -Ov $ip .1.3.6.1.2.1.17.7.1.2.2.1.2 |"); while (<SNMP>) { @part=split(/ /, $_); $result=$part[1]; if ($result == $port) { $count++; } } if ($count >= $limit && $portstatus eq "up(1)") { print "SNMP OK - $count\n"; exit 0; } else { print "SNMP CRITICAL - $count\n"; exit 2; } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 2 апреля, 2012 · Жалоба а не поделитесь скриптами? ;) Я бы тоже взглянул. Возможно, нашлись бы точки соприкосновения с http://forum.nag.ru/forum/index.php?showtopic=54023 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sinoptik Опубликовано 20 апреля, 2012 · Жалоба Bear_UA А как должен выглядеть описание плагина и как описать сервис ,чтоб каждый раз айпишник свича не описывать?? 'check_snmp' command definition define command{ command_name check_mac command_line /usr/lib/nagios/plugins/check_mac -H $ARG1$ $ARG2$ } define service{ use generic-service host_name MAC service_description Port25_MAC1 check_command check_mac!192.168.128.42 25 1 } так что-то не забирает(( И что надо поправить ,дабы при активном порту ,но 0 маков он не critical бывл, а желтый warning ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
st_re Опубликовано 20 апреля, 2012 · Жалоба Скорее всего так 1 command_line /usr/lib/nagios/plugins/check_mac $HOST$ $ARG1$ $ARG2$ 2 check_command check_mac!25!1 И что надо поправить ,дабы при активном порту ,но 0 маков он не critical бывл, а желтый warning ? наверное в конце скрипта сменить exit 2; на exit 1; (1 это варнинг кажется, поискать nagios.pm и посмотреть там или попробовать) и текст в принте строкой выше по вкусу (текст - комментарий) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sinoptik Опубликовано 21 апреля, 2012 · Жалоба Спасибо всем! поправили немного для себя - чтоб критикал показывал при потушенном порте, а при меньше нормы маков - варнинг, #!/usr/bin/perl -w use strict; my $result; my $limit; my $port; my $count; my $portstatus; my $ip; my @part; $ip = $ARGV[0]; $limit = $ARGV[2]; $port = $ARGV[1]; $count=0; $portstatus=0; if ($limit eq "" || $port eq "" || $ip eq "") { print "SNMP CRITICAL - Usage: check_mac HOST PORT MIN_LIMIT\n"; exit 2; } open(SNMPUP,"snmpwalk -v 2c -c public -Ov $ip ifOperStatus.$port -r 1 -m RFC1213-MIB |"); while (<SNMPUP>) { @part=split(/ /, $_); $portstatus=$part[1]; chomp $portstatus; } close(SNMPUP); open(SNMP,"snmpwalk -v 2c -c public -Ov $ip .1.3.6.1.2.1.17.7.1.2.2.1.2 |"); while (<SNMP>) { @part=split(/ /, $_); $result=$part[1]; if ($result == $port) { $count++; } } #if ($count >= $limit && $portstatus eq "up(1)") #{ #print "SNMP OK MACs on port - $count\n"; #exit 0; #} #else #{ #print "SNMP CRITICAL - $count\n"; #exit 2; #} if ($portstatus eq "up(1)") { if ($count>0) { print "SNMP OK MACs on port - $count\n"; exit 0; } else { print "SNMP WARNING MACs on port = 0\n"; exit 1; } } else { print "SNMP CRITICAL - link down!\n"; exit 2; } В /etc/nagios-plugins/config 'check_mac' command definition define command{ command_name check_mac command_line /usr/lib/nagios/plugins/check_mac $HOSTADDRESS$ $ARG1$ $ARG2$ } В сервисах хоста описываем define service{ use generic-service host_name service_description Port25 check_command check_mac!25!1 } где 25 - номер порта 1 - минимальное кол-во маков для status ok Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...