Community discussions

MikroTik App
 
LeftyTs
Frequent Visitor
Frequent Visitor
Topic Author
Posts: 88
Joined: Thu Nov 03, 2016 2:39 am
Location: Athens, Greece
Contact:

SNMP Monitoring and MRTG Templates

Tue Oct 04, 2022 3:48 am

I have been looking for a very light and simple SNMP monitor other than what ROS has to centralize and simplify monitoring of a few MT devices. Of course and there are many solutions out there and very fancy ones too but I wanted something really fast and light. I haven't used MRTG and RRDtool for over a decade ago and possibly even more but these two tools combined together can really do a very good and fast job in all this. If you combine it with The Dude you have a really very powerful and light network monitoring solution with ZERO costs. I am sharing some templates I have made that can be used to setup a really fast and simple monitoring in just about any Unix and Windows system with MRTG installed supporting experimental templates.

The configuration is really extremely simple like this: cfgmaker --if-template=if-tmpl --host-template=host-tmpl public@router.example.com public@switch.example.com ..........

The following interface template creates code only for the active and working interfaces almost identical to the default MRTG one:
if(not $problem_lines)
{
  $target_lines .= <<ECHO;

Options[$target_name]: growright,nobanner,unknaszero,bits
Target[$target_name]: .1.3.6.1.2.1.31.1.1.1.6.$ifindex&.1.3.6.1.2.1.31.1.1.1.10.$ifindex:$router_connect
SetEnv[$target_name]: MRTG_INT_IP="$if_ip" MRTG_INT_DESCR="$if_snmp_descr"
ECHO
  if ($directory_name) {
      $target_lines .= "Directory[$target_name]: $directory_name\n";
  }
  $target_lines .= <<ECHO;
MaxBytes[$target_name]: $if_speed
Title[$target_name]: $html_desc_prefix$html_if_title_desc -- $sysname
XSize[$target_name]: 600
YSize[$target_name]: 150
WithPeak[$target_name]: ymw
PageTop[$target_name]: <h1>$html_desc_prefix$html_if_snmp_name -- $router_name</h1>
               <div id="sysdetails">
                       <table>
                               <tr>
                                       <td>System:</td>
                                       <td>$sysname in $html_syslocation</td>
                               </tr>
                               <tr>
                                       <td>Maintainer:</td>
                                       <td>$html_syscontact</td>
                               </tr>
                               <tr>
                                       <td>Description:</td>
                                       <td>$html_if_description</td>
                               </tr>
                               <tr>
                                       <td>ifType:</td>
                                       <td>$html_if_type_desc ($if_type_num)</td>
                               </tr>
                               <tr>
                                       <td>ifName:</td>
                                       <td>$html_if_snmp_name</td>
                               </tr>
ECHO

  $target_lines .= <<ECHO if defined $if_port_name;
                               <tr>
                                       <td>Port Name:</td>
                                       <td>$if_port_name</td>
                               </tr>
ECHO

  $target_lines .= <<ECHO if defined $if_pp_port_name;
                               <tr>
                                       <td>Port Name:</td>
                                       <td>$if_pp_port_name</td>
                               </tr>
ECHO

  $target_lines .= <<ECHO;
                               <tr>
                                       <td>Max Speed:</td>
                                       <td>$if_speed_str</td>
                               </tr>
ECHO

  $target_lines .= <<ECHO if $if_ip;
                               <tr>
                                       <td>Ip:</td>
                                       <td>$if_ip ($if_dns_name)</td>
                               </tr>
ECHO

  $target_lines .= <<ECHO;
                       </table>
               </div>
ECHO
} else {
  $head_lines="";
  $problem_lines="";
  $target_lines="";
  $separator_lines="";
}
All in one host template to monitor CPU load, temperature as well as memory percentage and usage:
my $target_name = $router_name . "_cpuload";

$target_lines .= <<ECHO;

Options[$target_name]: growright,nobanner,unknaszero,gauge,nopercent,integer
Target[$target_name]: .1.3.6.1.4.1.2021.11.10.0&.1.3.6.1.4.1.2021.11.10.0:$router_connect
ECHO
  if ($directory_name) {
      $target_lines .= "Directory[$target_name]: $directory_name\n";
  }
  $target_lines .= <<ECHO;
MaxBytes[$target_name]: 100
Title[$target_name]: CPU Load - $router_name
XSize[$target_name]: 600
YSize[$target_name]: 150
YLegend[$target_name]: CPU Used %
ShortLegend[$target_name]: %
Legend1[$target_name]: Average percentage of all CPUs
LegendI[$target_name]: CPU Activity:
LegendO[$target_name]:
PageTop[$target_name]: <h1>CPU Load - $router_name</h1>
               <div>
                       <table>
                               <tr>
                                       <td>System:</td>
                                       <td>$sysname 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>

ECHO


$target_name = $router_name . "_cputemp";

$target_lines .= <<ECHO;

Options[$target_name]: growright,nobanner,unknaszero,gauge,nopercent,integer
Target[$target_name]: .1.3.6.1.4.1.14988.1.1.3.100.1.3.17&.1.3.6.1.4.1.14988.1.1.3.100.1.3.17:$router_connect
ECHO
  if ($directory_name) {
      $target_lines .= "Directory[$target_name]: $directory_name\n";
  }
  $target_lines .= <<ECHO;
MaxBytes[$target_name]: 100
Title[$target_name]: CPU Temperature - $router_name
XSize[$target_name]: 600
YSize[$target_name]: 150
IPv4Only[$target_name]: Yes
YLegend[$target_name]: Degrees Celsious
ShortLegend[$target_name]: C
Legend1[$target_name]: CPU Temperature
LegendI[$target_name]: Temperature:
LegendO[$target_name]:
PageTop[$target_name]: <h1>CPU Temperature - $router_name</h1>
               <div>
                       <table>
                               <tr>
                                       <td>System:</td>
                                       <td>$sysname 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>

ECHO


$target_name = $router_name . "_memperc";

$target_lines .= <<ECHO;

Options[$target_name]: growright,nobanner,unknaszero,gauge,nopercent,integer
Target[$target_name]: ( .1.3.6.1.2.1.25.2.3.1.6.65536&.1.3.6.1.2.1.25.2.3.1.6.65536:$router_connect ) * 100 / ( .1.3.6.1.2.1.25.2.3.1.5.65536&.1.3.6.1.2.1.25.2.3.1.5.65536:$router_connect )
ECHO
  if ($directory_name) {
      $target_lines .= "Directory[$target_name]: $directory_name\n";
  }
  $target_lines .= <<ECHO;
MaxBytes[$target_name]: 100
Title[$target_name]: Memory Percentage - $router_name
XSize[$target_name]: 600
YSize[$target_name]: 150
IPv4Only[$target_name]: Yes
YLegend[$target_name]: Memory used %
ShortLegend[$target_name]: %
Legend1[$target_name]: Pergentage of all RAM used
LegendI[$target_name]: Used:
LegendO[$target_name]:
Unscaled[$target_name]: ymwd
PageTop[$target_name]: <h1>Memory Percentage - $router_name</h1>
               <div>
                       <table>
                               <tr>
                                       <td>System:</td>
                                       <td>$sysname 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>RAM</td>
                               </tr>
                       </table>
               </div>

ECHO


$target_name = $router_name . "_memused";

$target_lines .= <<ECHO;

Options[$target_name]: growright,nobanner,unknaszero,gauge,nopercent,integer
Target[$target_name]: .1.3.6.1.2.1.25.2.3.1.6.65536&.1.3.6.1.2.1.25.2.3.1.6.65536:$router_connect
ECHO
  if ($directory_name) {
      $target_lines .= "Directory[$target_name]: $directory_name\n";
  }
  $target_lines .= <<ECHO;
MaxBytes[$target_name]: 68719476736
Title[$target_name]: Memory Used - $router_name
XSize[$target_name]: 600
YSize[$target_name]: 150
IPv4Only[$target_name]: Yes
YLegend[$target_name]: Bytes used
ShortLegend[$target_name]: B
Legend1[$target_name]: Total memory bytes used
LegendI[$target_name]: Used:
LegendO[$target_name]:
kMG[$target_name]: k,M,G,T,P,X
PageTop[$target_name]: <h1>Memory Used - $router_name</h1>
               <div>
                       <table>
                               <tr>
                                       <td>System:</td>
                                       <td>$sysname 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>RAM</td>
                               </tr>
                       </table>
               </div>

ECHO

Who is online

Users browsing this forum: Ahrefs [Bot], Amazon [Bot], kolopeter, sybadi and 63 guests