SmokerMan Опубликовано 19 июля, 2007 · Жалоба Подскажите есть ли софт позволяющий отмониторить разрыв STP кольца? Что-нибудь а-ля нагиос, или в идеальном случае плагин к нему... :-) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GateKeeper Опубликовано 19 июля, 2007 (изменено) · Жалоба snmp-trap: link down? Изменено 19 июля, 2007 пользователем GateKeeper Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Kirya Опубликовано 19 июля, 2007 · Жалоба А с чего он link down-то при отключении избыточного линка ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GateKeeper Опубликовано 19 июля, 2007 · Жалоба А это, смотря с кого трап словить... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Kirya Опубликовано 19 июля, 2007 · Жалоба Например ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GateKeeper Опубликовано 19 июля, 2007 (изменено) · Жалоба Например с любого из, между которыми этот разрыв и произошёл. Вдогонку: ошибочка вышла: smtp-trap читать как snmp-trap. Изменено 19 июля, 2007 пользователем GateKeeper Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Kirya Опубликовано 19 июля, 2007 · Жалоба Ладно. Скажи plz как настроить Dlink 3526 чтоб он давал такой trap ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GateKeeper Опубликовано 19 июля, 2007 · Жалоба Только не будем о D-Link'ах отзываться, иначе, как о мыльницах, ладно? Ну, даже, если трап не бросает, snmpget'ом добивается. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Kirya Опубликовано 19 июля, 2007 · Жалоба Ну я ж попросил, дай конкретный пример. Ну хоть, что-нибудь, что так работает, как ты описываешь. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ilijaz Опубликовано 20 июля, 2007 · Жалоба Трапы - это не то!!! А если у меня конвертер к резервному линку подключен???? Линк упадет, а трап никогда не придет! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ingress Опубликовано 20 июля, 2007 · Жалоба поставь конвертер в режим LFP,(ляжет оптика, ляжет и медь) вообще в хороших коммутаторах мибы есть на тему стп, в них и стоит покопать на счёт сбора информации о состоянии Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ilijaz Опубликовано 20 июля, 2007 · Жалоба Мне кажется, проще собирать с кольца STP cost to root, если разница больше 20000 (дефолтный кост для 1Gb), то между этими коммутаторами обрыв поставь конвертер в режим LFP,(ляжет оптика, ляжет и медь) вообще в хороших коммутаторах мибы есть на тему стп, в них и стоит покопать на счёт сбора информации о состоянии В Planet GT-702S разве такое есть??? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SmokerMan Опубликовано 26 июля, 2007 · Жалоба И все, же, никто в нагиос такой мониторинг не встраивал?... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ilijaz Опубликовано 26 июля, 2007 (изменено) · Жалоба Покопавшись денек с MIBами DES-3010G/DES-3526 и еще денек с perlом, получил скрипт, на выходе которого вот такая уродливая пока штука:-) Могу описать логику постороения картинки если кому интересно?! Изменено 26 июля, 2007 пользователем ilijaz Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_J_ Опубликовано 26 июля, 2007 · Жалоба Былоб неплохо описАть логику и на скрипт посмотреть. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Shturm_N Опубликовано 26 июля, 2007 (изменено) · Жалоба Была задача мониторить Dlink Des-2108 и Des-2110. Для nagios писал такой скрипт: ############################################## ############################################## #!/usr/bin/perl $res = "OK"; $retval="0"; my @str = split '\n', `cat /usr/local/sbin/switches`; for ($s=0;$s<(scalar(@str));$s++) { chomp (@str[$s]); my @switch = split '\s+', @str[$s]; chomp (@switch[0]); for ($port=1;$port<(scalar(@switch));$port++) { $stat=`snmpwalk -v 1 -c public @switch[0] 1.3.6.1.2.1.17.2.15.1.3.$port| cut -f 4 -d' '`; chomp ($stat); if ($stat eq ''){$stat_t="down"} elsif ($stat eq "2"){$stat_t="block"} elsif ($stat eq "5"){$stat_t="forward"}; if (@switch[$port] eq "*" or @switch[$port] eq $stat_t) { # $retval="0"; # if ($stat eq ''){$res=$port." down";} # elsif ($stat eq "2"){$res=$port." block";} # elsif ($stat eq "5"){$res=$port." forward";} } else { if ($stat eq ''){if (@switch[$port] eq "down"){$res_1=$port." down, must be ".@switch[$port]."; ";}else{$res_1=$port." down, must be ".@switch[$port]."; ";}} elsif ($stat eq "2"){if (@switch[$port] eq "block"){$res_1=$port." block, must be ".@switch[$port]."; ";}else{$res_1=$port." block, must be ".@switch[$port]."; ";}} elsif ($stat eq "5"){if (@switch[$port] eq "forward"){$res_1=$port." (forward)\tmust be ".@switch[$port]."; ";}else{$res_1=$port." forward, must be ".@switch[$port]."; ";}} if (scalar(@fail)>0) {@fail[scalar(@fail)+1]="$res_1";} else {@fail[0]="$res_1";} } } #print $res; if (scalar(@fail)>0){$res = "CRITICAL: @fail"; $retval="2";}else {$res = "OK"; $retval="0"} $hostname=@switch[0]; chomp ($hostname); chomp ($retval); chomp ($res); print "$hostname\tswstp\t$retval\t$res\n"; `/bin/echo -e "$hostname\tswstp\t$retval\t$res\n" | /usr/bin/send_nsca -H 10.0.0.9 -c /etc/nagios/send_nsca.cfg`; #@fail=(); $res_1=""; $res=""; $#fail=-1; $#switch=-1; } ############################################## ############################################## Содержимое /usr/local/sbin/switches: ############################################## ############################################## sw-name1 forward * * block down down down down sw-jname2 forward forward forward block block block block block forward down sw-name3 forward forward forward block down down down block sw-name4 forward forward * * * down block block ############################################## ############################################## Т.е. имя_свитча состояние_порта_1 состояние_порта_2 ...... Количество портов не имеет значения. Каждая строка обрабатывается отдельно. Малость коряво но работает.... Проверяется состояние портов на соответствие заданному шаблону. Возвращает "Критикал" если есть отличия и "ОК" если все в порядке. Проверка каждые 10 минут. Запуск через крон и возврат состояния через nsca. Если в шаблоне попадается "*" - значит состояние порта не интересует. Как прикрутить к нагиосу думаю описывать ненадо. Изменено 26 июля, 2007 пользователем Shturm_N Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SmokerMan Опубликовано 26 июля, 2007 · Жалоба Расскажите если не трудно... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Shturm_N Опубликовано 26 июля, 2007 (изменено) · Жалоба Расскажите если не трудно...В checkcommands.cfg дописал: # 'swstp' command definition define command{ command_name swstp command_line /usr/local/sbin/swstp } В services.cfg define service{ use generic-service ; Name of service template to use hostgroup_name switch-stp service_description swstp is_volatile 0 check_period 24x7 max_check_attempts 3 normal_check_interval 5 retry_check_interval 1 contact_groups support # !!!ПРОПИШИ СВОЮ!! active_checks_enabled 0 passive_checks_enabled 1 notification_interval 20 notification_period 24x7 notification_options c,r check_command swstp } В hostgroups.cfg: define hostgroup{ hostgroup_name switch-stp alias stp switch members sw-name1,sw-name2,sw-name3,............ } Сделано у меня через пасив чеки. Т е результат тестирования приходит самостоятельно без вызова скрипта нагиосом. Реализовано через nsca. Что такое и как работает nsca смотрим в документации прилагаемой к нагиосу, или гуглим. Можно реализовать и с вызовом чека самим нагиосом. Мне было удобнее через nsca. Изменено 26 июля, 2007 пользователем Shturm_N Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ilijaz Опубликовано 31 июля, 2007 (изменено) · Жалоба Для построения картинки мне потребовалось 1. OID для DES-3010G/3526 в которых содержится 1) STP Cost To Root DES-3010G 1.3.6.1.2.1.17.2.6.0 DES-3526 1.3.6.1.4.1.171.12.15.2.3.1.14.0 2) STP Router ID 1.3.6.1.2.1.17.1.1.0 3) STP Root Port DES-3010G 1.3.6.1.2.1.17.2.7.0 DES-3526 1.3.6.1.4.1.171.12.15.2.3.1.18.0 4) STP Designated Bridge DES-3010G 1.3.6.1.2.1.17.2.15.1.8.* <- это таблица, вместо * нужно указать порт DES-3526 1.3.6.1.4.1.171.12.15.2.3.1.17.0 ВНИМАНИЕ!!! DES-3010G ниже прошивки 3.00.053 не верно возвращают STP Designated Bridge, OID для DES-3526 указаны для прошивок >=4.00.B19 2. Решил писать на perl, не ругайте за кривой стиль или неоптимальность, я только учусь;-) use DBI; use GraphViz; DBI нужен для селекта списка свичей, snmp community, его типа и местанахождения. Есть 3 таблицы: первая со списком L2 свичей, вторая со списком колец, третья со списком L3 роутеров. Соответственно у L2 свичей есть идентификатор кольца, у колец есть идентификатор L3 роутера. GraphViz соответственно нужен для рисования картинки 3. Для постороения STP дерева необходимо знать STP router id корня дерева, которым является l3 router. И Dlink 30/35, и AT-99** в OID 1.3.6.1.2.1.17.1.1.0 содержат STP router id. sub get_router_id #Параметры 1-ip, 2-snmp v2c community { $id = `snmpget -Ov -v2c -c $_[1] $_[0] 1.3.6.1.2.1.17.1.1.0`; $id = substr($id,12,17); chomp($id); $id =~ tr/ /:/; # print "Router id $id\n"; return $id; } l3_select - массив из базы, который содержит ip и snmp community $l3_ip=$l3_select[0]; $l3_community=$l3_select[1]; $l3_router_id =get_router_id($l3_ip,$l3_community); Далее заполняем массив нужными данными полученными по snmp и из базы type1 - это DES3010G, type2 соответственно DES3526 while($row = $sth->fetchrow_hashref()) { $ip = $row->{'l2_sw_ip'}; $community = $row->{'community'}; $sw_location = $row->{'location'}; $swtype = $row->{'sw_type_id'}; if($swtype == 1) { $root_port = `snmpget -Ov -v2c -c $community $ip $type1_oid_root_port`; $root_port = substr($root_port,9); chomp($root_port); $cost_to_root = `snmpget -Ov -v2c -c $community $ip $type1_oid_cost`; $design_router_id = `snmpget -Ov -v2c -c $community $ip $type1_oid_design_bridge$root_port`; $design_router_id = substr($design_router_id,18,17); $design_router_id =~ tr/ /:/; chomp($design_router_id); } else { $root_port = `snmpget -Ov -v2c -c $community $ip $type2_oid_root_port`; $root_port = substr($root_port,9); chomp($root_port); $cost_to_root = `snmpget -Ov -v2c -c $community $ip $type2_oid_cost`; $design_router_id = `snmpget -Ov -v2c -c $community $ip $type2_oid_design_bridge`; $design_router_id = substr($design_router_id,18,17); $design_router_id =~ tr/ /:/; chomp($design_router_id); } $router_id = get_router_id($ip, $community); $cost_to_root = substr($cost_to_root,9); chomp($cost_to_root); print "$ip $community $swtype $cost_to_root $router_id root_port=$root_port design_router=$design_router_id\n"; $array[$i][0] = $router_id; $array[$i][1] = $cost_to_root; $array[$i][2] = $design_router_id; $array[$i][3] = 'n'; $array[$i][4] = $ip; $array[$i][6] = $root_port; if ($swtype == 1 ) { $array[$i][5] = 'DES-3010G'; } else { $array[$i][5] = 'DES-3526'; } $i++; } Получив массив array, начинаем спускаться по дереву от корня, параллельно рисуя ноды и ребра $g = GraphViz->new(node => {shape => 'box' , fontname => 'arial' }, edge => {labeldistance => '2', fontsize => '15'}); $g->add_node($l3_ip); find_node($l3_ip, $l3_router_id); $g->as_png("simple.png"); print $l3_ip, $l3_community, $l3_router_id; sub find_node { my $count=0; my $bum=0; while($array[$count]) { if($array[$count][2] eq $_[1]) { $g->add_node($array[$count][4], label => "$array[$count][4]\n$array[$count][5]"); $g->add_edge($_[0] => $array[$count][4], label => $array[$count][1], headlabel => $array[$count][6]); $bum=1; print "find_node($array[$count][4],$array[$count][0])\n"; find_node($array[$count][4],$array[$count][0]); } $count++; } return $bum; } Единственное, c русскими шрифтами и GraphViz какие-то проблемы. Изменено 31 июля, 2007 пользователем ilijaz Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zaqwr Опубликовано 1 августа, 2007 · Жалоба Год назад, эти свичи, хоть и было заявлено, не держали STP, SmokerMan, а мониторить нужно состояние порта, имхо так лучше. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sergiusk Опубликовано 19 апреля, 2012 · Жалоба я написал через snmp + lldp получаю в виде visio или pdf Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 20 апреля, 2012 · Жалоба А можно попросить скрипт ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...