I agree, I think that's what I came against when I tried it as well. The fact that the OIDs change every time you touch the policy.
Maybe Dartware can partner up with Cisco ;) about that (Darware: hint, hint), just like they did about Aironet APs. __________________________________________________________ Andrey Gordon | Integrity Interactive | Network Engineer | +1.781.398.3518 > From: Manickaraja Arumugam <[email protected]> > Reply-To: InterMapper Discussion <[email protected]> > Date: Tue, 27 Jan 2009 21:09:21 +0530 > To: InterMapper Discussion <[email protected]> > Subject: RE: [IM-Talk] Class based QOS monitoring. > > HI Andrey, > > I have tried to use the counters from Class based QOS MIB, But these OID > values are changing whenever the QOS policy changes and if devices get > rebooted. > I have found some scripts they are using at Cacti tool. They are using Index > Values to get the data. > > The results are below. > > Class names > ============== > SNMPv2-SMI::enterprises.9.9.166.1.7.1.1.1.1593 = STRING: "class-default" > SNMPv2-SMI::enterprises.9.9.166.1.7.1.1.1.3337361 = STRING: "Business_Data" > SNMPv2-SMI::enterprises.9.9.166.1.7.1.1.1.8443441 = STRING: "Standard_Data" > SNMPv2-SMI::enterprises.9.9.166.1.7.1.1.1.10530609 = STRING: "NRT_VIDEO" > SNMPv2-SMI::enterprises.9.9.166.1.7.1.1.1.11456657 = STRING: "NRT_VOICE" > > Value in Bytes IN/OUT > ====================== > SNMPv2-SMI::enterprises.9.9.166.1.15.1.1.9.18.14936 = Counter32: 3803826192 > SNMPv2-SMI::enterprises.9.9.166.1.15.1.1.9.18.14952 = Counter32: 3242304438 > SNMPv2-SMI::enterprises.9.9.166.1.15.1.1.9.18.14968 = Counter32: 6867461 > SNMPv2-SMI::enterprises.9.9.166.1.15.1.1.9.18.14984 = Counter32: 3732670453 > SNMPv2-SMI::enterprises.9.9.166.1.15.1.1.9.18.15000 = Counter32: 0 > SNMPv2-SMI::enterprises.9.9.166.1.15.1.1.9.32.14776 = Counter32: 3028143551 > SNMPv2-SMI::enterprises.9.9.166.1.15.1.1.9.32.14792 = Counter32: 386015312 > SNMPv2-SMI::enterprises.9.9.166.1.15.1.1.9.32.14808 = Counter32: 3824322544 > SNMPv2-SMI::enterprises.9.9.166.1.15.1.1.9.32.14824 = Counter32: 3823232256 > SNMPv2-SMI::enterprises.9.9.166.1.15.1.1.9.32.14840 = Counter32: 0 > > Detailed value of each class like packets, bytes, bit rates IN/OUT > ================================================================== > > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.18 = Gauge32: 4680832 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.14936 = Gauge32: 11456657 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.14952 = Gauge32: 10530609 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.14968 = Gauge32: 3337361 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.14984 = Gauge32: 8443441 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.15000 = Gauge32: 1593 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.4194835 = Gauge32: 14360 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.4194867 = Gauge32: 12055507 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.4309523 = Gauge32: 14392 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.4309571 = Gauge32: 7314307 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.4399667 = Gauge32: 9324867 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.4514323 = Gauge32: 14424 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.7081426 = Gauge32: 8721922 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.9033074 = Gauge32: 5756066 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.10085250 = Gauge32: 1594 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.12040259 = Gauge32: 11319347 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.13371330 = Gauge32: 12883938 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.13451891 = Gauge32: 3412499 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.13475570 = Gauge32: 10472610 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.18.15908883 = Gauge32: 11203667 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.32 = Gauge32: 12441408 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.14776 = Gauge32: 10530609 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.14792 = Gauge32: 3337361 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.14808 = Gauge32: 11456657 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.14824 = Gauge32: 8443441 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.14840 = Gauge32: 1593 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.681618 = Gauge32: 1594 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.1917138 = Gauge32: 5756066 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.5263170 = Gauge32: 10472610 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.6592579 = Gauge32: 11580163 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.7345586 = Gauge32: 8721922 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.7477587 = Gauge32: 9544211 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.8111122 = Gauge32: 12883938 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.13137331 = Gauge32: 13742035 > SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.32.13182419 = Gauge32: 11798003 > > But I much worried about how to get things (co-relate) done at our InterMapper > Probe. > > > Scripts > ======= > > #!/usr/bin/perl > > #Class-based weighted fair queue interrogation module. > #This module maps class names to policy-id, object-id pairs and > #does an SNMP get on the bytes transmitted OID. > #written by Andy Brauer > #initial release 07/05/2002 > #current release 26/04/2005 > #current version 0.53 > # > # 25/04/2005 - Paul Wozney > # > # Completely rewritten by Paul Wozney > # There was nothing really wrong with the script that Andy wrote, > # but I extended it to respond to index, query and get requests > # and made seperate subroutines for these > # > # I did this so I could integrate the script into cacti, as this > # was the only script available - and I really couldn't follow > # the code that Andy wrote so I figured it was easier just to > # do it my way. :) > # > # I'm sure there are bugs. Reach me here: [email protected] > # > # One caveat, as I'm currently applying DSCP and policing QoS on > # the same router I named my QoS classes like this "QoSnnnn" and > # this script is written to see those. > # > # April 29 2005 - I have changed the code so it can handle > # both purely numeric, and text based snmpwalk output > > #use warnings; > use strict; > > my $ip = $ARGV[0]; > my $community = $ARGV[1]; > my $action1 = $ARGV[2]; > my $action2 = $ARGV[3]; > my $class = $ARGV[4]; > my $filterstring = ".*"; # or to match everything > #my $filterstring = "QoS"; # use this to filter out unwanted classes > > > my $snmppath = "/net-snmp/bin/snmpwalk"; > my $version = "2c"; > my $index_oid = "1.3.6.1.4.1.9.9.166.1.7.1.1.1"; # lists the classes > my $ilist_oid = "1.3.6.1.4.1.9.9.166.1.5.1.1.2"; # lists the references > my $bytes_oid = "1.3.6.1.4.1.9.9.166.1.15.1.1.9"; # lists the pol/obj id > refs > > sub retrieve_index { > > # lists the classes > # this is used in the other subroutines, so if a third variable is passed > "index" > # it lists the references along with the classes > > my $node = shift; > my $comm = shift; > my $ind = shift; > my @classes; > > my @index = `$snmppath -v $version -c $comm $node $index_oid`; > # should output this: > # SNMPv2-SMI::enterprises.9.9.166.1.7.1.1.1.1025 = STRING: "CLASS" > > foreach (@index) { > s/"//g; > my @littlearray = split / /; > # if you've set $filterstring it will only display those > classes you want > next unless ($littlearray[3] =~ /$filterstring/); > my @values = split /\./, $littlearray[0]; > if ($ind eq "index") { push @classes, > "$values[-1]:$littlearray[3]\n" ; } > else { push @classes, "$values[-1]\n"; } > } > return @classes; > } > > sub retrieve_query { > > # retrieves the bytes for all classes > > my $node = shift; > my $comm = shift; > my $dowhatever = shift; # the data to retrieve > my @classes = @_; # gets the remaining variables passed > my @bytes; > > my @ilist = `$snmppath -v $version -c $comm $node $ilist_oid`; > # should output this: > # SNMPv2-SMI::enterprises.9.9.166.1.5.1.1.2.1073.1073 = Gauge32: 1025 > # note that the variable part matches the oid for the class above > > foreach my $entry (@ilist) { > my @littlearray = split / /, $entry; > my @values = split /\./, $littlearray[0]; > chomp $littlearray[3]; > foreach (@classes) { > my ($refer, $class) = split /:/; > chomp $class; > chomp $refer; > # if you've set $filterstring it will only display > those classes you want > if (($littlearray[3] eq $refer) && ($class =~ > /$filterstring/)) { > my $byte_count = `$snmppath -v $version -c > $comm $node $bytes_oid.$values[-2].$values[-1]` ; > my @byte_array = split / /, $byte_count; > if ($dowhatever eq "class") { push @bytes, > "$refer:$class"; } > if ($dowhatever eq "bytes") { push @bytes, > "$refer:$byte_array[3]"; } > } > } > } > return @bytes; > } > > sub retrieve_get { > > # gets the bytes for a single class > # this executes in about 10 seconds on my box, it could be > # way faster if there was some kind of caching done, maybe > # expire after an hour considering most people poll every 5 mins > # > # NOTE! I changed some internals and now it does sub-second > # execution! Woot! > > my $node = shift; > my $comm = shift; > my $colour = shift; # just another variable for class, but > # I hate scope problems. :) > chomp $colour; > my @classes = @_; > my $indexval; > > my @ilist = `$snmppath -v $version -c $comm $node $ilist_oid`; > > # then figure out the oid > foreach my $entry (@ilist) { > my @littlearray = split / /, $entry; > my @values = split /\./, $littlearray[0]; > chomp $littlearray[3]; > if ($colour == $littlearray[3]) { $indexval = > "$values[-2].$values[-1]" ; } > } > > # and POW! it's done. > my $byte_count = `$snmppath -v $version -c $comm $node > $bytes_oid.$indexval`; > my @byte_array = split / /, $byte_count; > > return "$byte_array[3]"; > } > > ARGUMENTS: { > if ($action1 eq "index") { print retrieve_index($ip,$community) ; last > ARGUMENTS; } > if ($action1 eq "query") { > if ($action2 eq "bytes") { > print > retrieve_query($ip,$community,"bytes",retrieve_index($ip,$community,"index")) > ; > last ARGUMENTS; > } > elsif ($action2 eq "class") { > print > retrieve_query($ip,$community,"class",retrieve_index($ip,$community,"index")) > ; > last ARGUMENTS; > } > } > if ($action1 eq "get") { print > retrieve_get($ip,$community,$class,retrieve_index($ip,$community,"index")) ; > last ARGUMENTS; } > print "usage:\n\n./nmiscbwfq.pl IP COMMUNITY index\n./nmiscbwfq.pl IP > COMMUNITY query {bytes|class}\n./nmiscbwfq.pl IP COMMUNITY get {bytes} > CLASS\n"; > } > > exit; > > > > > Regards > Manickaraja Arumugam > A R I C E N T > > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Andrey Gordon > Sent: Tuesday, January 27, 2009 7:53 PM > To: InterMapper Discussion > Subject: Re: [IM-Talk] Class based QOS monitoring. > > I was going to write up a probe to monitor queues on my cisco routers, but > never found any useful counters in the cisco MIBs. > The closest I found to monitoring throuputs in each class was total number > of packets that went through that class. > __________________________________________________________ > Andrey Gordon | Integrity Interactive | Network Engineer | +1.781.398.3518 > > > >> From: Manickaraja Arumugam <[email protected]> >> Reply-To: InterMapper Discussion <[email protected]> >> Date: Tue, 27 Jan 2009 18:43:24 +0530 >> To: InterMapper Discussion <[email protected]> >> Subject: [IM-Talk] Class based QOS monitoring. >> >> Dear All, >> >> Please let me know if anyone using a probe for class based QOS monitoring? >> >> Regards >> >> Manickaraja Arumugam >> Assistant Manager - Corporate IT >> >> A R I C E N T >> ESPEE IT Park >> Plot-5, Jawaharlal Nehru Salai, >> Ekkattuthangal, >> Chennai - 600 097 India >> Main +9 144.442.2667 7 >> Fax +9 144.442.2610 0 >> Mobile +9 199.400.1130 8 >> Voip +6 666.520.6677 >> >> >> >> ________________________________ >> "DISCLAIMER: This message is proprietary to Aricent and is intended solely >> for >> the use of the individual to whom it is addressed. It may contain privileged >> or confidential information and should not be circulated or used for any >> purpose other than for what it is intended. If you have received this message >> in error,please notify the originator immediately. If you are not the >> intended >> recipient, you are notified that you are strictly prohibited from using, >> copying, altering, or disclosing the contents of this message. Aricent >> accepts >> no responsibility for loss or damage arising from the use of the information >> transmitted by this email including damage from virus." >> ____________________________________________________________________ >> List archives: >> http://www.mail-archive.com/intermapper-talk%40list.dartware.com/ >> To unsubscribe: send email to: [email protected] >> > > ____________________________________________________________________ > List archives: > http://www.mail-archive.com/intermapper-talk%40list.dartware.com/ > To unsubscribe: send email to: [email protected] > > > "DISCLAIMER: This message is proprietary to Aricent and is intended solely for > the use of the individual to whom it is addressed. It may contain privileged > or confidential information and should not be circulated or used for any > purpose other than for what it is intended. If you have received this message > in error,please notify the originator immediately. If you are not the intended > recipient, you are notified that you are strictly prohibited from using, > copying, altering, or disclosing the contents of this message. Aricent accepts > no responsibility for loss or damage arising from the use of the information > transmitted by this email including damage from virus." > ____________________________________________________________________ > List archives: > http://www.mail-archive.com/intermapper-talk%40list.dartware.com/ > To unsubscribe: send email to: [email protected] > ____________________________________________________________________ List archives: http://www.mail-archive.com/intermapper-talk%40list.dartware.com/ To unsubscribe: send email to: [email protected]
