Board index

Cheshire Cat Software

Steve Shipway's Discussion Groups
Locations of visitors to this page
It is currently Wed 08 Sep, 2010 11:42 pm

All times are UTC - 5 hours




Post new topic Reply to topic  [ 12 posts ] 
Author Message
 Post subject: Host template for Cisco
PostPosted: Tue 19 Aug, 2008 6:39 pm 
Offline
Site Admin
User avatar

Joined: Mon 28 Jul, 2003 5:42 pm
Posts: 3005
Location: Auckland, New Zealand
This host template for cfgmaker will add CPU monitoring for CISCO routers and switches. It has been taken from the cfgmaker manual pages and slightly modified.
Since this checks to make sure the device in question really is a Cisco, then you could use this for all devices if you want to.
Code:
# cisco.htp
# This host template is for Cisco devices
# cfgmaker --host-template=cisco.htp
# Cisco CPU OID is 1.3.6.1.4.1.9.2.1.58.0

if( $sysdescr =~ /cisco/i ) {
$head_lines .= "#---------------------------------------------------------------------\n";
my $target_name = $router_name . ".cpu";
$target_lines .= <<ECHO;
routers.cgi*Icon: cisco-sm.gif
routers.cgi*Description: $sysname
routers.cgi*ShortDesc: $router_name
#-------------------------------------------------
Target[$target_name]: 1.3.6.1.4.1.9.2.1.58.0&1.3.6.1.4.1.9.2.1.58.0:$router_connect
Title[$target_name]: $router_name CPU load
YLegend[$target_name]: Percentage
ShortLegend[$target_name]: %
Legend1[$target_name]: CPU load in %
Legend3[$target_name]: Max Observed CPU load
LegendI[$target_name]: &nbsp;CPU Load:
MaxBytes[$target_name]: 100
UnScaled[$target_name]: dwmy
Options[$target_name]: growright, gauge, nopercent, noo
PageTop[$target_name]: <h1>$router_name CPU load</h1>
     <div><table><tr>
          <td>System:</td>
          <td>$router_name in $html_syslocation</td>
     </tr><tr>
          <td>Maintainer:</td>
          <td>$html_syscontact</td>
     </tr><tr>
          <td>Description:</td>
          <td>$html_sysdescr</td>
     </tr><tr>
          <td>Resource:</td><td>CPU.</td>
     </tr></table></div>
routers.cgi*Icon[$target_name]: chip-sm.gif
routers.cgi*InOut[$target_name]: no
routers.cgi*InSummary[$target_name]: yes
routers.cgi*ShortDesc[$target_name]: CPU
routers.cgi*InCompact[$target_name]: yes
routers.cgi*Mode[$target_name]: cpu
routers.cgi*Options[$target_name]: nototal fixunit
ECHO
}


Note that there are several other Cisco templates posted below; one of these may suit your requirements better.

_________________
Steve Shipway
UNIX Systems, ITSS, University of Auckland, NZ
Woe unto them that rise up early in the morning... -- Isaiah 5:11


Top
 Profile  
 
 Post subject: Re: Host template for Cisco
PostPosted: Thu 21 Aug, 2008 6:36 am 
Offline
Silver User

Joined: Fri 03 Oct, 2003 11:47 am
Posts: 28
Location: Austin, TX
I have several Cisco templates. This one is for IOS Modularity:
Code:
$head_lines .= <<ECHO
#.....................................................................
# Router processor utilization.
#
     
ECHO
;
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-SMI-V1SMI.my");
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-TC-V1SMI.my");
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-PROCESS-MIB.my");
snmpMIB_to_OID("/usr/share/snmp/mibs/ENTITY-MIB-V1SMI.my");
my (@entid) = snmpwalk($router,$v3opt,'cpmCPUTotalPhysicalIndex');
my %entids;
foreach my $ent (@entid) {
   $ent =~ /(\d+):(\d+)/;
   my $instance= $1;
   my $entindex = $2;
   my ($entname) = snmpget($router,$v3opt,'entPhysicalName.'.$entindex);
   $entids{$instance}=$entname;
}

my %cpu;
my (@temp) = snmpwalk($router,$v3opt,'cpmCPUTotal5secRev');
foreach my $tempi(@temp) {
   $tempi =~ /(\d+):\d+/;
   my $instance=$1;
   my $target_name=$router_name.".cpu".$instance;
   $cpu{$instance}++;
   $target_lines .= <<CPU
Target[$target_name]: cpmCPUTotal5secRev.$instance&cpmCPUTotal1minRev.$instance:$router
SnmpOptions[$target_name]: $v3options
MaxBytes[$target_name]: 100
routers.cgi*ShortDesc[$target_name]:  CPU # $entids{$instance}
routers.cgi*Options[$target_name]: nototal
bb*host[$target_name]: $router_name
bb*svc[$target_name]: cpu
bb*red[$target_name]: 90
bb*yellow[$target_name]: 80
Options[$target_name]:  gauge
Directory[$target_name]: $directory_name
WithPeak[$target_name]: wmy
YLegend[$target_name]: % Utilization
ShortLegend[$target_name]: %
Legend1[$target_name]: 5 Second Load
Legend2[$target_name]: 1 Minute Load
LegendI[$target_name]:  5sec :
LegendO[$target_name]:  1min :
Title[$target_name]: $sysname
PageTop[$target_name]: <H1>$sysname Processor Load - $entids{$instance} </H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
CPU
;
}

my (@temp) = snmpwalk($router,$v3opt,'cpmCPUTotal5sec');
foreach my $tempi(@temp) {
   $tempi =~ /(\d+):\d/;
   my $instance=$1;
   next if exists $cpu{$instance};
   my $target_name=$router_name.".cpu".$instance;
   $cpu{$instance}++;
   $target_lines .= <<CPUOLD
Target[$target_name]: cpmCPUTotal5sec.$instance&cpmCPUTotal1min.$instance:$router
SnmpOptions[$target_name]: $v3options
MaxBytes[$target_name]: 100
routers.cgi*ShortDesc[$target_name]:  CPU # $entids{$instance}
routers.cgi*Options[$target_name]: nototal
bb*host[$target_name]: $router_name
bb*svc[$target_name]: cpu
bb*red[$target_name]: 90
bb*yellow[$target_name]: 80
Options[$target_name]:  gauge
Directory[$target_name]: $directory_name
WithPeak[$target_name]: wmy
YLegend[$target_name]: % Utilization
ShortLegend[$target_name]: %
Legend1[$target_name]: 5 Second Load
Legend2[$target_name]: 1 Minute Load
LegendI[$target_name]:  5sec :
LegendO[$target_name]:  1min :
Title[$target_name]: $sysname
PageTop[$target_name]: <H1>$sysname Processor Load -- $entids{$instance}</H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
CPUOLD
;
}
my (@temp) = snmpwalk($router,$v3opt,'cpmCPUMemoryFree');
foreach my $tempi(@temp) {
   $tempi =~ /(\d+):\d+/;
   my $instance=$1;
   my ($free,$used,$kernel) = snmpget($router,$v3opt,"cpmCPUMemoryFree.$instance","cpmCPUMemoryUsed.$instance","cpmCPUMemoryKernelReserved.$instance");
   my $max = $free + $used + $kernel;
   my $target_name=$router_name.".memory".$instance;
   $cpu{$instance}++;
   $target_lines .= <<TOTALMEM
Target[$target_name]: cpmCPUMemoryUsed.$instance&cpmCPUMemoryKernelReserved.$instance:$router
SnmpOptions[$target_name]: $v3options
MaxBytes[$target_name]: $max
routers.cgi*ShortDesc[$target_name]:  Total Memory Used # $entids{$instance}
routers.cgi*Options[$target_name]: nototal
routers.cgi*GraphStyle[$target_name]: stack
bb*host[$target_name]: $router_name
bb*svc[$target_name]: memory
bb*red[$target_name]: 90%
bb*yellow[$target_name]: 80%
Options[$target_name]:  gauge
Directory[$target_name]: $directory_name
WithPeak[$target_name]: wmy
YLegend[$target_name]: Memory
ShortLegend[$target_name]: B
Legend1[$target_name]: Memory used
Legend2[$target_name]: Kernel Reserved
Kilo[$target_name]: 1024
Factor[$target_name]: 1024
Title[$target_name]: $sysname
PageTop[$target_name]: <H1>$sysname Total Memory -- $entids{$instance}</H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
TOTALMEM
;
}
#snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-QOS-PIB-MIB-V1SMI.my");


#snmpMIB_to_OID("/usr/share/snmp/mibs/SNMPv2-SMI-V1SMI.my");
#snmpMIB_to_OID("/usr/share/snmp/mibs/SNMP-FRAMEWORK-MIB-V1SMI.my");
#snmpMIB_to_OID("/usr/share/snmp/mibs/ENTITY-MIB-V1SMI.my");
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-ENHANCED-MEMPOOL-MIB-V1SMI.my");
my (@temp) = snmpwalk($router,$v3opt,'cempMemPoolName');
foreach my $tempi(@temp) {
   $tempi =~ /^([\d\.]+):(.+)/;
   my $instance=$1;
   my $pool_name=$2;
   my ($entity,$in2) = split('\.',$instance);
   my ($used, $free, $pool_descr) = snmpget($router,$v3opt,
      'cempMemPoolUsed.'.$instance,
      'cempMemPoolFree.'.$instance,
      'entPhysicalName.'.$entity
   );
   $pool_descr .= ' '.$pool_name;
   my $target_name=$router_name.".memory".$instance;
   my $maxsize = $used+$free;
   if ($pool_name !~ /posix/) {
   $target_lines .= <<DISK
#--------------------------------------------------------------------------------------
# Memory Utilization
   
Target[$target_name]: cempMemPoolFree.$instance&cempMemPoolLargestFree.$instance:$router
SnmpOptions[$target_name]: $v3options
YLegend[$target_name]: Bytes Free
Options[$target_name]: gauge
Directory[$target_name]: $directory_name
MaxBytes[$target_name]: $maxsize
ShortLegend[$target_name]: bytes
routers.cgi*ShortDesc[$target_name]: Memory $pool_name
routers.cgi*Options[$target_name]: nototal
bb*host[$target_name]: $router_name
bb*svc[$target_name]: memory
bb*red[$target_name]: 5%:101%
bb*yellow[$target_name]: 15%:100%
Legend1[$target_name]: Free Mem
Legend2[$target_name]: Largest Block
LegendI[$target_name]: Free
LegendO[$target_name]: Block
WithPeak[$target_name]: ymw
Title[$target_name]: $sysname $pool_descr
PageTop[$target_name]: <H1>Memory on $sysname $pool_descr </H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
DISK
;
} else {
   $target_lines .= <<POSIX
#--------------------------------------------------------------------------------------
# Memory Utilization
   
Target[$target_name]: cempMemPoolFree.$instance&cempMemPoolUsed.$instance:$router
SnmpOptions[$target_name]: $v3options
YLegend[$target_name]: Bytes Free
Options[$target_name]: gauge
Directory[$target_name]: $directory_name
MaxBytes[$target_name]: $maxsize
ShortLegend[$target_name]: bytes
routers.cgi*ShortDesc[$target_name]: Memory $pool_name
routers.cgi*Options[$target_name]: nototal
routers.cgi*GraphType[$target_name]: stack
Legend1[$target_name]: Free Mem
Legend2[$target_name]: Used Memory
LegendI[$target_name]: Free
LegendO[$target_name]: Used
WithPeak[$target_name]: ymw
Title[$target_name]: $sysname $pool_descr
PageTop[$target_name]: <H1>Memory on $sysname $pool_descr </H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
POSIX
;
}
}
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-ENTITY-FRU-CONTROL-MIB.my");
   my $firstfru = 0;
     my (@fru) = snmpwalk($router,$v3opt,'cefcPowerUnits');
   foreach my $frui (@fru) {
   next if $firstfru++ >0;
   my $factor = 1;
        my ($finstance,$funits) = ($frui =~  /(\d+):(.+)$/) ;
   $factor /= 100 if $funits =~ s/^centi//;
   if ($funits =~ /AmpsAt(\d+)v/) {
      $factor *= $1;
      $funits = "VoltAmps";
   }
   my ($avail) = snmpget($router,$v3opt,'cefcTotalAvailableCurrent.'.$finstance);
   my $target_name =$router_name.".power";
   $target_lines .= <<POWER

#--------------------------------------------------------------------------------------
# Power Consumption
   
Target[$target_name]: cefcTotalDrawnCurrent.$finstance&cefcTotalDrawnCurrent.$finstance:$router
SnmpOptions[$target_name]: $v3options
YLegend[$target_name]: $funits used
Options[$target_name]: gauge
Directory[$target_name]: $directory_name
MaxBytes[$target_name]: $avail
ShortLegend[$target_name]: $funits
Factor[$target_name]: $factor
routers.cgi*ShortDesc[$target_name]: Power
routers.cgi*Options[$target_name]: nototal
bb*host[$target_name]: $router_name
bb*svc[$target_name]: power
bb*red[$target_name]: 95%
bb*yellow[$target_name]: 90%
Legend1[$target_name]: Power used
Legend2[$target_name]:
LegendI[$target_name]: Used
LegendO[$target_name]:
WithPeak[$target_name]: ymw
Title[$target_name]: $sysname Power
PageTop[$target_name]: <H1>Power on $sysname </H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
POWER
;
}
snmpMIB_to_OID("/usr/share/snmp/mibs/POWER-ETHERNET-MIB-V1SMI.my");
     my (@pet) = snmpwalk($router,$v3opt,'pethMainPsePower');
   foreach my $peti (@pet) {
        my ($pinstance,$pmax) = ($peti =~  /(\d+):(.+)$/) ;
        if ($pmax == 0) {
                $pmax = 840;
        }
   my $factor = 1;
   my $abspmax = $pmax;
   my ($curval) = snmpget($router,$v3opt,"pethMainPseConsumptionPower.".$pinstance);
   if ($curval > $pmax) {
      $factor = .001;
      $pmax *= 1000;
      $abspmax = $pmax;
   } elsif ($curval == 0) {
      $abspmax=$pmax * 1000;
   };
   my $target_name =$router_name.".poe.".$pinstance;
   $target_lines .= <<POEMOD

#--------------------------------------------------------------------------------------
# Per Module Power Over Ethernet Consumption
   
Target[$target_name]: pethMainPseConsumptionPower.$pinstance&pethMainPseConsumptionPower.$pinstance:$router
SnmpOptions[$target_name]: $v3options
YLegend[$target_name]: watts used
Options[$target_name]: gauge
Directory[$target_name]: $directory_name
AbsMax[$target_name]: $abspmax
MaxBytes[$target_name]: $pmax
Factor[$target_name]: $factor
ShortLegend[$target_name]: w
routers.cgi*ShortDesc[$target_name]: PoE Mod $pinstance
routers.cgi*Graph[$target_name]: PoE noi
bb*host[$target_name]: $router_name
bb*svc[$target_name]: power
bb*red[$target_name]: 95%
bb*yellow[$target_name]: 90%
Legend1[$target_name]: Power used
Legend2[$target_name]:
LegendI[$target_name]: Used
LegendO[$target_name]:
WithPeak[$target_name]: ymw
Title[$target_name]: $sysname Power
PageTop[$target_name]: <H1>Power on $sysname module $pinstance </H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
POEMOD
;
}

#
# Look for dBm meters - probably interesting

snmpMIB_to_OID("/usr/share/snmp/mibs/ENTITY-SENSOR-MIB.my");
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-ENTITY-SENSOR-MIB-V1SMI.my");
     my (@est) = snmpwalk($router,$v3opt,'entSensorType');
   foreach my $esti (@est) {
        my ($tinstance,$ttype) = ($esti =~  /(\d+):(.+)$/) ;
   next if $ttype != 14;
      my (@estv) = snmpwalk($router,$v3opt,'entSensorThresholdValue.'.$tinstance);
      my %thresh;
      foreach my $estvi (@estv) {
         my ($thin,$value) = ($estvi =~ /(\d+):(.+)$/) ;
         $thresh{$thin} = $value;
         };
      my $maxsize = $thresh{1}+10;
      my ($sens_name) = snmpget($router,$v3opt,'entPhysicalName.'.$tinstance);
   my $sens_descr .= ' '.$sens_name;
   my $target_name=$router_name.".signal".$tinstance;
   $target_lines .= <<SIGNAL
#--------------------------------------------------------------------------------------
# Signal Strength
   
Target[$target_name]: entSensorValue.$tinstance&entSensorValue.$tinstance:$router
SnmpOptions[$target_name]: $v3options
YLegend[$target_name]: dB
Options[$target_name]: gauge, noi, nopercent
Directory[$target_name]: $directory_name
MaxBytes[$target_name]: $maxsize
ShortLegend[$target_name]: dB
Factor[$target_name]: .1
routers.cgi*ShortDesc[$target_name]: $sens_name
routers.cgi*Options[$target_name]: nototal
bb*host[$target_name]: $router_name
bb*svc[$target_name]: signal
bb*red[$target_name]: $thresh{4}:$thresh{1}
bb*yellow[$target_name]: $thresh{3}:$thresh{2}
Legend1[$target_name]: dB
WithPeak[$target_name]: ymw
Title[$target_name]: $sysname $sens_descr
PageTop[$target_name]: <H1>$sysname $sens_descr </H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
SIGNAL
;
}

_________________
Daniel J McDonald, CCIE #2495, CISSP # 78281, CNX
Austin Energy


Top
 Profile  
 
 Post subject: Re: Host template for Cisco - SNMP V3
PostPosted: Thu 21 Aug, 2008 6:38 am 
Offline
Silver User

Joined: Fri 03 Oct, 2003 11:47 am
Posts: 28
Location: Austin, TX
This template is for Cisco devices not running IOS Modularity. It supports snmp v3.
Code:
# First see if there are VOIP interfaces:
my %iftype;

if ($$router_opt{'interfaces'}) {
   foreach my $ifindex (sort {int($a) <=> int($b)} keys %$router_ref) {
          next unless $ifindex =~ /^\d+$/;
             my $i = $$router_ref{$ifindex};
        my $if_type = $$i{ifType};
        ++$iftype{$if_type};
   }
}
if ($iftype{81} +$iftype{102} > 0) {
   my $maxcalls = $iftype{81}+$iftype{102};
   my $target_name = $router_name.".call";
   $head_lines .= <<CALLS
#.....................................................................
# Voip Concurrent Calls
#

Target[$target_name]:  CnTWaLKcvCommonDcCallActiveCoderTypeRate&PseudoZero:public:$router
SnmpOptions[$target_name]: $v3options
MaxBytes[$target_name]: $maxcalls
routers.cgi*ShortDesc[$target_name]:  Calls
bb*host[$target_name]: $router_name
bb*svc[$target_name]: call
routers.cgi*Graph[$target_name]: ALL_CALLS
bb*red[$target_name]: 90%
bb*yellow[$target_name]: 70%
Options[$target_name]:  gauge, noo
Directory[$target_name]: $directory_name
WithPeak[$target_name]: wmy
YLegend[$target_name]: calls
ShortLegend[$target_name]: calls
Legend1[$target_name]: calls
LegendI[$target_name]:  calls :
Title[$target_name]: $sysname
PageTop[$target_name]: <H1>$sysname Concurrent Calls</H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
CALLS
;
}



$head_lines .= <<ECHO
#.....................................................................
# Router processor utilization.
#
     
ECHO
;
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-SMI-V1SMI.my");
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-TC-V1SMI.my");
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-PROCESS-MIB.my");

my %cpu;
my (@temp) = snmpwalk($router,$v3opt,'cpmCPUTotal5secRev');
foreach my $tempi(@temp) {
   $tempi =~ /(\d+):\d/;
   my $instance=$1;
   my $target_name=$router_name.".cpu".$instance;
   $cpu{$instance}++;
   $target_lines .= <<CPU
Target[$target_name]: cpmCPUTotal5secRev.$instance&cpmCPUTotal1minRev.$instance:$router
SnmpOptions[$target_name]: $v3options
MaxBytes[$target_name]: 100
routers.cgi*ShortDesc[$target_name]:  CPU # $instance
routers.cgi*Options[$target_name]: nototal
bb*host[$target_name]: $router_name
bb*svc[$target_name]: cpu
bb*red[$target_name]: 90
bb*yellow[$target_name]: 80
Options[$target_name]:  gauge
Directory[$target_name]: $directory_name
WithPeak[$target_name]: wmy
YLegend[$target_name]: % Utilization
ShortLegend[$target_name]: %
Legend1[$target_name]: 5 Second Load
Legend2[$target_name]: 1 Minute Load
LegendI[$target_name]:  5sec :
LegendO[$target_name]:  1min :
Title[$target_name]: $sysname
PageTop[$target_name]: <H1>$sysname Processor Load</H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
CPU
;
}

my (@temp) = snmpwalk($router,$v3opt,'cpmCPUTotal5sec');
foreach my $tempi(@temp) {
   $tempi =~ /(\d+):\d/;
   my $instance=$1;
   next if exists $cpu{$instance};
   my $target_name=$router_name.".cpu".$instance;
   $cpu{$instance}++;
   $target_lines .= <<CPUOLD
Target[$target_name]: cpmCPUTotal5sec.$instance&cpmCPUTotal1min.$instance:$router
SnmpOptions[$target_name]: $v3options
MaxBytes[$target_name]: 100
routers.cgi*ShortDesc[$target_name]:  CPU # $instance
routers.cgi*Options[$target_name]: nototal
bb*host[$target_name]: $router_name
bb*svc[$target_name]: cpu
bb*red[$target_name]: 90
bb*yellow[$target_name]: 80
Options[$target_name]:  gauge
Directory[$target_name]: $directory_name
WithPeak[$target_name]: wmy
YLegend[$target_name]: % Utilization
ShortLegend[$target_name]: %
Legend1[$target_name]: 5 Second Load
Legend2[$target_name]: 1 Minute Load
LegendI[$target_name]:  5sec :
LegendO[$target_name]:  1min :
Title[$target_name]: $sysname
PageTop[$target_name]: <H1>$sysname Processor Load</H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
CPUOLD
;
}

snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-QOS-PIB-MIB-V1SMI.my");
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-MEMORY-POOL-MIB-V1SMI.my");
my (@temp) = snmpwalk($router,$v3opt,'ciscoMemoryPoolName');
foreach my $tempi(@temp) {
   $tempi =~ /(\d+):(.+)/;
   my $instance=$1;
   next if $2 !~ /Processor/;
   my ($used, $free) = snmpget($router,$v3opt,'ciscoMemoryPoolUsed.'.$instance, 'ciscoMemoryPoolFree.'.$instance);
   my $target_name=$router_name.".memory";
   my $maxsize = $used+$free;
   $target_lines .= <<DISK
#-------------------------------------------------------------------
# Memory Utilization
#
   
Target[$target_name]: ciscoMemoryPoolFree.$instance&ciscoMemoryPoolLargestFree.$instance:$router
SnmpOptions[$target_name]: $v3options
YLegend[$target_name]: Bytes Free
Options[$target_name]: gauge
Directory[$target_name]: $directory_name
MaxBytes[$target_name]: $maxsize
ShortLegend[$target_name]: bytes
routers.cgi*ShortDesc[$target_name]: Memory
routers.cgi*Options[$target_name]: nototal
bb*host[$target_name]: $router_name
bb*svc[$target_name]: memory
bb*red[$target_name]: 5%:99%
bb*yellow[$target_name]: 7%:98%
Legend1[$target_name]: Free Mem
Legend2[$target_name]: Largest Block
LegendI[$target_name]: Free
LegendO[$target_name]: Block
WithPeak[$target_name]: ymw
Title[$target_name]: $sysname
PageTop[$target_name]: <H1>Memory on $sysname/H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
DISK
;
}
snmpMIB_to_OID("/usr/share/snmp/mibs/CISCO-ENTITY-FRU-CONTROL-MIB.my");
   my $firstfru = 0;
     my (@fru) = snmpwalk($router,$v3opt,'cefcPowerUnits');
   foreach my $frui (@fru) {
   next if $firstfru++ >0;
   my $factor = 1;
        my ($finstance,$funits) = ($frui =~  /(\d+):(.+)$/) ;
   $factor /= 100 if $funits =~ s/^centi//;
   if ($funits =~ /AmpsAt(\d+)v/) {
      $factor *= $1;
      $funits = "VoltAmps";
   }
   my ($avail) = snmpget($router,$v3opt,'cefcTotalAvailableCurrent.'.$finstance);
   my $target_name =$router_name.".power";
   $target_lines .= <<POWER

#--------------------------------------------------------------------------------------
# Total Power Consumption
   
Target[$target_name]: cefcTotalDrawnCurrent.$finstance&cefcTotalDrawnCurrent.$finstance:$router
SnmpOptions[$target_name]: $v3options
YLegend[$target_name]: $funits used
Options[$target_name]: gauge, noi
Directory[$target_name]: $directory_name
MaxBytes[$target_name]: $avail
ShortLegend[$target_name]: $funits
Factor[$target_name]: $factor
routers.cgi*ShortDesc[$target_name]: Power
routers.cgi*Options[$target_name]: nototal
bb*host[$target_name]: $router_name
bb*svc[$target_name]: power
bb*red[$target_name]: 95%
bb*yellow[$target_name]: 90%
Legend1[$target_name]: Power used
Legend2[$target_name]:
LegendI[$target_name]: Used
LegendO[$target_name]:
WithPeak[$target_name]: ymw
Title[$target_name]: $sysname Power
PageTop[$target_name]: <H1>Power on $sysname </H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
POWER
;
}
snmpMIB_to_OID("/usr/share/snmp/mibs/POWER-ETHERNET-MIB-V1SMI.my");
     my (@pet) = snmpwalk($router,$v3opt,'pethMainPsePower');
   foreach my $peti (@pet) {
        my ($pinstance,$pmax) = ($peti =~  /(\d+):(.+)$/) ;
   if ($pmax == 0) {
      $pmax = 840;
   }
   my $factor = 1;
   my $abspmax = $pmax;
   my ($curval) = snmpget($router,$v3opt,"pethMainPseConsumptionPower.".$pinstance);
   if ($curval > $pmax) {
      $factor = .001;
      $pmax *= 1000;
      $abspmax = $pmax;
   } elsif ($curval == 0) {
      $abspmax=$pmax * 1000;
   };
   my $target_name =$router_name.".poe.".$pinstance;
   $target_lines .= <<POEMOD

#--------------------------------------------------------------------------------------
# Per Module Power Over Ethernet Consumption
   
Target[$target_name]: pethMainPseConsumptionPower.$pinstance&pethMainPseConsumptionPower.$pinstance:$router
SnmpOptions[$target_name]: $v3options
YLegend[$target_name]: watts used
Options[$target_name]: gauge, noi
Directory[$target_name]: $directory_name
AbsMax[$target_name]: $abspmax
MaxBytes[$target_name]: $pmax
Factor[$target_name]: $factor
ShortLegend[$target_name]: w
routers.cgi*ShortDesc[$target_name]: PoE Mod $pinstance
routers.cgi*Graph[$target_name]: PoE noi
bb*host[$target_name]: $router_name
bb*svc[$target_name]: power
bb*red[$target_name]: 95%
bb*yellow[$target_name]: 90%
Legend1[$target_name]: Power used
Legend2[$target_name]:
LegendI[$target_name]: Used
LegendO[$target_name]:
WithPeak[$target_name]: ymw
Title[$target_name]: $sysname Power
PageTop[$target_name]: <H1>Power on $sysname module $pinstance </H1>
<TABLE>
   <TR><TD>System:</TD><TD>$sysname  </TD></TR>
   <TR><TD>Location:</TD><TD>$syslocation </TD></TR>
</TABLE>
POEMOD
;
}

_________________
Daniel J McDonald, CCIE #2495, CISSP # 78281, CNX
Austin Energy


Top
 Profile  
 
 Post subject: Re: Host template for Cisco
PostPosted: Sun 24 Aug, 2008 5:01 pm 
Offline
Site Admin
User avatar

Joined: Mon 28 Jul, 2003 5:42 pm
Posts: 3005
Location: Auckland, New Zealand
(I've edited your posts to highlight the code only)

These are really cood - much more comprehensive than mine, which ony does CPU.

It's worth noting, though, that these load the Cisco MIB from the standard Linux location in order to get symbolic names, so if you are not using Linux with the Cisco MIB installed they will need modification. The first one, although limited, uses numeric OIDs to avoid this problem.

_________________
Steve Shipway
UNIX Systems, ITSS, University of Auckland, NZ
Woe unto them that rise up early in the morning... -- Isaiah 5:11


Top
 Profile  
 
 Post subject: Re: Host template for Cisco
PostPosted: Sun 24 Aug, 2008 5:53 pm 
Offline
Site Admin
User avatar

Joined: Mon 28 Jul, 2003 5:42 pm
Posts: 3005
Location: Auckland, New Zealand
This is Tobi's host template for Cisco. It adds Memory and CPU graphs, but does not have any Routers2-specific directives.


Attachments:
File comment: Tobi's Cisco host template
host-cisco.tmpl [2.26 KB]
Downloaded 579 times

_________________
Steve Shipway
UNIX Systems, ITSS, University of Auckland, NZ
Woe unto them that rise up early in the morning... -- Isaiah 5:11
Top
 Profile  
 
 Post subject: Re: Host template for Cisco
PostPosted: Tue 02 Dec, 2008 6:29 am 
Offline
User

Joined: Tue 25 Nov, 2008 2:17 am
Posts: 6
Dear sir ,

Thank for the reply

I am not from software background , So i dont know the coding part

Kindly let me know in which file this code has to be added ,

The routers2 application has installed in windows machine , c:\mrtg


Regards
Lalit


Top
 Profile  
 
 Post subject: Re: Host template for Cisco
PostPosted: Tue 02 Dec, 2008 4:07 pm 
Offline
Site Admin
User avatar

Joined: Mon 28 Jul, 2003 5:42 pm
Posts: 3005
Location: Auckland, New Zealand
These files are host templates for cfgmaker, which means that you need to save them into a file (eg, cisco.htp) and then reference them when you call cfgmaker by using the cfgmaker option --host-template=cisco.htp

How and where you call cfgmaker depends on your installation, and if you are using the MRTG Bundle install it may not be possible to fully automate this.

_________________
Steve Shipway
UNIX Systems, ITSS, University of Auckland, NZ
Woe unto them that rise up early in the morning... -- Isaiah 5:11


Top
 Profile  
 
 Post subject: Re: Host template for Cisco
PostPosted: Tue 20 Oct, 2009 12:36 am 
Offline
User

Joined: Tue 20 Oct, 2009 12:22 am
Posts: 3
Dear Sir ,

I am suing followin script wrote by you , but it is working on,y for Cisco 2950 switch. it is not woring for Cisco 2811 router , cisco 1841 router. I am unable to write cfgmaker for the same

you are requested to please provide the cfgmaker file for cisco Router [ 2811 , 1841 , 1721 Etc ]

Thanx in advance

Mayur Shah

======================================================================
your script

# cisco.htp
# This host template is for Cisco devices
# cfgmaker --host-template=cisco.htp
# Cisco CPU OID is 1.3.6.1.4.1.9.2.1.58.0

if( $sysdescr =~ /cisco/i ) {
$head_lines .= "#---------------------------------------------------------------------\n";
my $target_name = $router_name . ".cpu";
$target_lines .= <<ECHO;
routers.cgi*Icon: cisco-sm.gif
routers.cgi*Description: $sysname
routers.cgi*ShortDesc: $router_name
#-------------------------------------------------
Target[$target_name]: 1.3.6.1.4.1.9.2.1.58.0&1.3.6.1.4.1.9.2.1.58.0:$router_connect
Title[$target_name]: $router_name CPU load
YLegend[$target_name]: Percentage
ShortLegend[$target_name]: %
Legend1[$target_name]: CPU load in %
Legend3[$target_name]: Max Observed CPU load
LegendI[$target_name]: &nbsp;CPU Load:
MaxBytes[$target_name]: 100
UnScaled[$target_name]: dwmy
Options[$target_name]: growright, gauge, nopercent, noo
PageTop[$target_name]: <h1>$router_name CPU load</h1>
<div><table><tr>
<td>System:</td>
<td>$router_name in $html_syslocation</td>
</tr><tr>
<td>Maintainer:</td>
<td>$html_syscontact</td>
</tr><tr>
<td>Description:</td>
<td>$html_sysdescr</td>
</tr><tr>
<td>Resource:</td><td>CPU.</td>
</tr></table></div>
routers.cgi*Icon[$target_name]: chip-sm.gif
routers.cgi*InOut[$target_name]: no
routers.cgi*InSummary[$target_name]: yes
routers.cgi*ShortDesc[$target_name]: CPU
routers.cgi*InCompact[$target_name]: yes
routers.cgi*Mode[$target_name]: cpu
routers.cgi*Options[$target_name]: nototal fixunit
ECHO
}


Top
 Profile  
 
 Post subject: Re: Host template for Cisco
PostPosted: Tue 20 Oct, 2009 6:15 am 
Offline
Silver User

Joined: Fri 03 Oct, 2003 11:47 am
Posts: 28
Location: Austin, TX
Mayurshah wrote:
[b]Dear Sir ,

I am suing followin script wrote by you , but it is working on,y for Cisco 2950 switch. it is not woring for Cisco 2811 router , cisco 1841 router. I am unable to write cfgmaker for the same

you are requested to please provide the cfgmaker file for cisco Router [ 2811 , 1841 , 1721 Etc ]

Did you try the one posted on Thu Aug 21, 2008 5:38 am? It works for almost anything running IOS, since it walks the various tables to find the appropriate entities.

The issue you are running into is that the CPU instance is not constant on all Cisco platforms - you have to hunt for it. The template I wrote checks 3 different OIDs looking for the active counters, and then walks those looking for the specific instance.

Note that you will need a LoadMibs statement to use my template. LoadMibs is a funny directive, in that there can only be one, and the order is really important. Because of all of the strange things I monitor, my LoadMibs has become rather long. You might need to trim a few of these...

Code:
LoadMibs: /usr/share/snmp/mibs/CISCO-SMI-V1SMI.my /usr/share/snmp/mibs/CISCO-TC-V1SMI.my /usr/share/snmp/mibs/CISCO-PROCESS-MIB.my /usr/share/snmp/mibs/CISCO-QOS-PIB-MIB-V1SMI.my /usr/share/snmp/mibs/CISCO-MEMORY-POOL-MIB-V1SMI.my /usr/share/snmp/mibs/sa.mib /usr/share/snmp/mibs/sh2.mib /usr/share/snmp/mibs/ups.mib /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt /usr/share/snmp/mibs/CISCO-FIREWALL-MIB-V1SMI.my /usr/share/snmp/mibs/ETHERLIKE-MIB-V1SMI.my /usr/share/snmp/mibs/apent.mib /usr/share/snmp/mibs/chassismgrext.mib /usr/share/snmp/mibs/cntsvcext.mib /usr/share/snmp/mibs/stratum100.mib /usr/share/snmp/mibs/qb.mib /usr/share/snmp/mibs/OLD-CISCO-INTERFACES-MIB.my /usr/share/snmp/mibs/itw_mib.mib /usr/share/snmp/mibs/orinoco.mib /usr/share/snmp/mibs/ENTITY-MIB-V1SMI.my /usr/share/snmp/mibs/CISCO-ENHANCED-MEMPOOL-MIB-V1SMI.my /usr/share/snmp/mibs/CISCO-VOICE-COMMON-DIAL-CONTROL-MIB-V1SMI.my /usr/share/snmp/mibs/CISCO-CCM-MIB.my /usr/share/snmp/mibs/CISCO-ENTITY-FRU-CONTROL-MIB.my /usr/share/snmp/mibs/POWER-ETHERNET-MIB-V1SMI.my /usr/share/snmp/mibs/LIEBERT_GP_REG.MIB /usr/share/snmp/mibs/LIEBERT_GP_POWER.MIB /usr/share/snmp/mibs/ENTITY-SENSOR-MIB-V1SMI.my /usr/share/snmp/mibs/CISCO-ENTITY-SENSOR-MIB-V1SMI.my /usr/share/snmp/mibs/CISCO-SLB-MIB.my /usr/share/snmp/mibs/CISCO-ENHANCED-SLB-MIB.my

_________________
Daniel J McDonald, CCIE #2495, CISSP # 78281, CNX
Austin Energy


Top
 Profile  
 
 Post subject: Re: Host template for Cisco
PostPosted: Tue 27 Oct, 2009 1:58 am 
Offline
User

Joined: Tue 20 Oct, 2009 12:22 am
Posts: 3
Dear Sir,

I want to use rrdtools for host CPU monitoring , it is working well for monitoring interfaces of Cisco Routers and cisco switches , when i am using rrdtools for monitoring Host CPU followin error is appearing on screen
==================================================================
Error reading RRD database c:\mrtg/wwwroot\cpu1.rrd
opening 'c:\mrtg/wwwroot\cpu1.rrd': No such file or directory

You can visit the configuration verification page here.

File: [localhost.cfg] localhost
Target: CPU1
Target list: localhost.memoryUsed, storageUsed-C, CPU1

==================================================================

please help me in this regard

Thank you in advance

Mayur shah

India


Top
 Profile  
 
 Post subject: Re: Host template for Cisco
PostPosted: Tue 27 Oct, 2009 5:58 am 
Offline
Silver User

Joined: Fri 03 Oct, 2003 11:47 am
Posts: 28
Location: Austin, TX
Mayurshah wrote:
c:\mrtg/wwwroot\cpu1.rrd


Note your slashes - you have \ (Windows style) and / (unix style) combined in a single path. Somewhere you have the wrong slash.

_________________
Daniel J McDonald, CCIE #2495, CISSP # 78281, CNX
Austin Energy


Top
 Profile  
 
 Post subject: Re: Host template for Cisco
PostPosted: Tue 27 Oct, 2009 3:41 pm 
Offline
Site Admin
User avatar

Joined: Mon 28 Jul, 2003 5:42 pm
Posts: 3005
Location: Auckland, New Zealand
Generally speaking, it is better to use the UNIX-style of slash even under Windows, since Perl automagically translates this, and you don't get problems where \n is treated as a newline.

There's always the possibility as wel that c:\mrtg\wwwroot doesn't exist on the machine, or that it is not writeable by the MRTG process...

_________________
Steve Shipway
UNIX Systems, ITSS, University of Auckland, NZ
Woe unto them that rise up early in the morning... -- Isaiah 5:11


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 12 posts ] 

All times are UTC - 5 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group