snmp monitoring[OT]

Atul Gosain atul at mindsw.com
Thu Feb 6 09:09:42 CET 2003


Sir

snmpwalk -c public my.ip  .1.3.6.1.4.1.9.9.13.1

I tried this ,but could not get more than this
SNMPv2-SMI::enterprises.9.9.13.1.1.0 = INTEGER: 6
SNMPv2-SMI::enterprises.9.9.13.1.3.1.2.1 = STRING: "chassis"
SNMPv2-SMI::enterprises.9.9.13.1.3.1.6.1 = INTEGER: 1
SNMPv2-SMI::enterprises.9.9.13.1.5.1.2.1 = STRING: "Internal Power Supply"
SNMPv2-SMI::enterprises.9.9.13.1.5.1.3.1 = INTEGER: 1
SNMPv2-SMI::enterprises.9.9.13.1.5.1.4.1 = INTEGER: 3

Does this output means that environmental monitoring is enabled on my 
cisco. (Allthough i dont think so )

Im monitoring cisco 2610, cisco 3620, cisco 5300

Thanks
Atul


Subhendu Ghosh wrote:

>try snmpwalk - these are columns in a table - multiple power supplies and
>fans (each in a row).  To retrieve the actual element, you need to know 
>the index or use getnext.
>
>-sg
>
>On Thu, 6 Feb 2003, Atul Gosain wrote:
>
>  
>
>>Hi
>>
>>Thanks for the plugin. That will be of great help, but i have some doubts.
>>Looking at the code i saw that its checking for these ids
>>   $snmpCiscoVoltageStatus = '.1.3.6.1.4.1.9.9.13.1.2.1.7';
>>   $snmpCiscoTemperatureStatus = '.1.3.6.1.4.1.9.9.13.1.3.1.6';
>>   $snmpCiscoFanStatus = '.1.3.6.1.4.1.9.9.13.1.4.1.3';
>>   $snmpCiscoSupplyStatus = '.1.3.6.1.4.1.9.9.13.1.5.1.3';
>>When i run the plugin, it says "All environment variables normal."
>>
>> but when i use snmpget on these oids like this
>> snmpget -c public xxx.my.xxx.ip  .1.3.6.1.4.1.9.9.13.1.2.1.7
>>i get the response as
>>
>>Error in packet
>>Reason: (noSuchName) There is no such variable name in this MIB.
>>Failed object: SNMPv2-SMI::enterprises.9.9.13.1.2.1.7
>>
>>These oid's are not shown in the MIB's , even then the plugin says 
>>everything is normal.
>>Am i wrong in my assessment or if im right , then can u please tell me 
>>how to include environmental mib in the mib of cisco.
>>
>>Thanks
>>Atul
>>
>>Subhendu Ghosh wrote:
>>
>>    
>>
>>>Attached is a cisco power/temp/fan monitor.  It is going to be merged 
>>>with a similar juniper monitor and is not in the distrib as yet.
>>>
>>>check_bgpstate in the contrib dir can monitor the bgp peering 
>>>relationships on any router.
>>>
>>>-sg
>>>
>>>On Wed, 5 Feb 2003, Atul Gosain wrote:
>>>
>>> 
>>>
>>>      
>>>
>>>>Hi
>>>>
>>>>Im monitoring cisco server through Nagios. I have to monitor temperature 
>>>>and other environmental variables for cisco. Does somebody have an idea 
>>>>how can we enable environmental monitoring on cisco through SNMP. I 
>>>>searched a lot on cisco's site but could not find it.
>>>>Also is there anyplugin written which monitors other aspects of cisco 
>>>>apart from interface status.
>>>>
>>>>Thanks
>>>>Atul
>>>>
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>> 
>>>
>>>------------------------------------------------------------------------
>>>
>>>#!/usr/bin/perl -wT
>>>#
>>># check_xinterface - nagios plugin 
>>>#
>>># largely based upon check_ifoperstatus.pl plugin by Christoph Kron
>>># 
>>>#
>>>#
>>>#
>>># Copyright (C) 2002 Guy Van Den Bergh
>>>#
>>># This program is free software; you can redistribute it and/or
>>># modify it under the terms of the GNU General Public License
>>># as published by the Free Software Foundation; either version 2
>>># of the License, or (at your option) any later version.
>>>#
>>># This program is distributed in the hope that it will be useful,
>>># but WITHOUT ANY WARRANTY; without even the implied warranty of
>>># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>># GNU General Public License for more details.
>>>#
>>># You should have received a copy of the GNU General Public License
>>># along with this program; if not, write to the Free Software
>>># Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
>>>#
>>>#
>>># Report bugs to: guy at belnet.be
>>>#
>>>
>>># design of the plugin:
>>>#  check admin status: if down, then warning; exit
>>>#  check operational status: if down, then critical; exit
>>>#  check last change, if within 'tolerance' (-l or --last-change option),
>>>#    then warning
>>>#  get performance data: bits in/out, etc... (implementation to be scheduled later)
>>>#  performance data could be checked against older values (bw drops e.g.)
>>>
>>>use strict;
>>>
>>>use Net::SNMP;
>>>use Getopt::Long;
>>>&Getopt::Long::config('auto_abbrev');
>>>
>>>
>>>my $status;
>>>my $TIMEOUT = 60;
>>>
>>>my %ERRORS = ('UNKNOWN' , '-1',
>>>             'OK' , '0',
>>>             'WARNING', '1',
>>>             'CRITICAL', '2');
>>>
>>>my %ciscoEnvMonState = 	('1','normal(1)',
>>>			 '2','warning(2)',
>>>			 '3','critical(3)',
>>>			 '4','shutdown(4)',
>>>			 '5','notPresent(5)',
>>>			 '6','notFunctioning(6)');
>>>
>>>my $state = "UNKNOWN";
>>>my $answer = "";
>>>my $snmpkey = 1;
>>>my $community = "public";
>>>my $port = 161;
>>>my $t_oid;
>>>my @snmpoids;
>>>my %error_oids;
>>>my $snmpCiscoVoltageStatus;
>>>my $snmpCiscoTemperatureStatus;
>>>my $snmpCiscoFanStatus;
>>>my $snmpCiscoSupplyStatus;
>>>my $hostname;
>>>my $session;
>>>my $error;
>>>my $response;
>>>my $value;
>>>my $oid;
>>>my @voltage_errors;
>>>my @temperature_errors;
>>>my @fan_errors;
>>>my @supply_errors;
>>>
>>>
>>>sub usage {
>>> printf "\nMissing arguments!\n";
>>> printf "\n";
>>> printf "Perl Check Cisco Environment plugin for Nagios\n";
>>> printf "checks status of temperature, fans, ...\n";
>>> printf "usage: \n";
>>> printf "check_cisco_env -c <READCOMMUNITY> -p <PORT> <HOSTNAME>";
>>> printf "\nCopyright (C) 2002 Guy Van Den Bergh\n";
>>> printf "check_cisco_env comes with ABSOLUTELY NO WARRANTY\n";
>>> printf "This programm is licensed under the terms of the ";
>>> printf "GNU General Public License\n(check source code for details)\n";
>>> printf "\n\n";
>>> exit $ERRORS{"UNKNOWN"};
>>>}
>>>
>>># Just in case of problems, let's not hang Nagios
>>>$SIG{'ALRM'} = sub {
>>>    print ("ERROR: No snmp response from $hostname (alarm)\n");
>>>    exit $ERRORS{"UNKNOWN"};
>>>};
>>>alarm($TIMEOUT);
>>>
>>>
>>>$status = GetOptions("community=s",\$community,
>>>                    "port=i",\$port);
>>>if ($status == 0)
>>>{
>>>       &usage;
>>>}
>>> 
>>>  #shift;
>>>  $hostname  = shift || &usage;
>>>
>>>  ($session, $error) = Net::SNMP->session(
>>>     -hostname  => $hostname,
>>>     -community => $community,
>>>     -port      => $port
>>>  );
>>>
>>>  if (!defined($session)) {
>>>     $state='UNKNOWN';
>>>     $answer=$error;
>>>     print ("$state: $answer");
>>>     exit $ERRORS{$state};
>>>  }
>>>
>>>  $snmpCiscoVoltageStatus = '.1.3.6.1.4.1.9.9.13.1.2.1.7';
>>>  $snmpCiscoTemperatureStatus = '.1.3.6.1.4.1.9.9.13.1.3.1.6';
>>>  $snmpCiscoFanStatus = '.1.3.6.1.4.1.9.9.13.1.4.1.3';
>>>  $snmpCiscoSupplyStatus = '.1.3.6.1.4.1.9.9.13.1.5.1.3';
>>>
>>>
>>>  push(@snmpoids,$snmpCiscoVoltageStatus);
>>>  push(@snmpoids,$snmpCiscoTemperatureStatus);
>>>  push(@snmpoids,$snmpCiscoFanStatus);
>>>  push(@snmpoids,$snmpCiscoSupplyStatus);
>>>  #
>>>  # These four oids all have the same syntax,
>>>  # which makes it easy for scripting all four oids at the same time!
>>>  #
>>>
>>>  $answer = "No data returned (Environment MIB not supported)";
>>>  # This will be overwritten when there IS data returned!
>>>
>>>  TABLE:
>>>  foreach $t_oid (@snmpoids) {
>>>  #
>>>  # Now get all relevant oids, and set the plugin output status accordingly.
>>>  #
>>>
>>>     if (!defined($response = $session->get_table($t_oid))) {
>>>        $error_oids{$t_oid} = $session->error;
>>>        next TABLE;
>>>     }
>>>
>>>     while ( ($oid, $value) = each %$response ) {
>>>
>>>        if ($value == 1 || $value == 5 || $value == 6) {
>>>          # normal, notPresent or notFunctioning
>>>          $state = 'OK' if $state =~ /UNKNOWN/;
>>>          $answer = "All environment variables normal." if $state eq 'OK';
>>>        } elsif ($value == 2) {
>>>          # warning
>>>	   $error_oids{$oid} = $ciscoEnvMonState{$value};
>>>          $state = 'WARNING' unless $state =~ /CRITICAL/;
>>>        } elsif ($value == 3 || $value == 4) {
>>>          # critical or shutdown
>>>          $error_oids{$oid} = $ciscoEnvMonState{$value};
>>>          $state = 'CRITICAL'
>>>        }
>>>
>>>     }
>>>  }
>>>
>>>  $session->close;
>>>
>>>## Here is the place for introducing artificial errors (for debugging).
>>>
>>>
>>>#
>>># Now parse all erroneous responses:
>>>#
>>>
>>>unless ($state eq 'OK' or $state eq 'UNKNOWN') {
>>>
>>>  while ( ($oid, $value) = each %error_oids ) {
>>>
>>>     $value =~ s/\(\d\)//;
>>>
>>>     if ($oid =~ /$snmpCiscoVoltageStatus\./) {
>>>        $oid =~ s/$snmpCiscoVoltageStatus\.//;
>>>        push(@voltage_errors, "$value (instance $oid)");
>>>
>>>     } elsif($oid =~ /$snmpCiscoTemperatureStatus\./) {
>>>        $oid =~ s/$snmpCiscoTemperatureStatus\.//;
>>>        push(@temperature_errors, "$value (instance $oid)");
>>>
>>>     } elsif ($oid =~ /$snmpCiscoFanStatus\./) {
>>>        $oid =~ s/$snmpCiscoFanStatus\.//;
>>>        push(@fan_errors, "$value (fan $oid)");
>>>
>>>     } elsif ($oid =~ /$snmpCiscoSupplyStatus\./) {
>>>        $oid =~ s/$snmpCiscoSupplyStatus\.//;
>>>        push(@supply_errors, "$value (PS $oid)");
>>>     }
>>>  }
>>>
>>>  #
>>>  # And now the final formatting of the output:
>>>  #
>>>
>>>  my $voltage_errors_s = join ";", @voltage_errors if defined $voltage_errors[0];
>>>  my $temperature_errors_s = join ";", @temperature_errors if defined $temperature_errors[0];
>>>  my $fan_errors_s = join ";", @fan_errors if defined $fan_errors[0];
>>>  my $supply_errors_s = join ";", @supply_errors if defined $supply_errors[0];
>>>
>>>  $answer = "Problems with:<BR>";
>>>  $answer .= "Voltage: " . $voltage_errors_s . "<BR>" if defined $voltage_errors_s;
>>>  $answer .= "Temperature: " . $temperature_errors_s . "<BR>" if defined $temperature_errors_s;
>>>  $answer .= "Fans: " . $fan_errors_s . "<BR>" if defined $fan_errors_s;
>>>  $answer .= "Power Supply: " . $supply_errors_s ."<BR>" if defined $supply_errors_s;
>>>}
>>>
>>>print ("$answer\n");
>>>exit $ERRORS{$state};
>>>
>>> 
>>>
>>>      
>>>
>>
>>    
>>
>
>  
>


-- 
--------------------------------------- 
Mindframe Software & Services Pvt. Ltd. 
 
A-50, Sector-39,
NOIDA, U.P. - 201301 

Ph.: +91-120-4500369, 4575991, 4576970 

http://www.mindsw.com 
---------------------------------------






-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com




More information about the Users mailing list