Files
ansible/roles/munin_client/files/mikrotikmemory_
2024-07-05 11:53:32 +02:00

60 lines
2.1 KiB
Perl

#!/usr/bin/perl
###############################################################################
use diagnostics;
use Net::SNMP;
use strict;
use warnings;
###############################################################################
my $MemTotalOID = ".1.3.6.1.2.1.25.2.3.1.5.65536";
my $MemUsedOID = ".1.3.6.1.2.1.25.2.3.1.6.65536";
my $SNMPCommunity = "public";
my $SNMPPort = "161";
###############################################################################
## Determine Hostname
my $Host = undef;
$0 =~ /mikrotikmemory_(.+)*$/;
unless ($Host = $1) {
exit 2;
}
###############################################################################
## Initiate SNMP Session
my ($Session, $Error) = Net::SNMP->session (-hostname => $Host,
-community => $SNMPCommunity,
-port => $SNMPPort,
-timeout => 60,
-retries => 5,
-version => 1);
if (!defined($Session)) {
die "Croaking: $Error";
}
###############################################################################
## Configuration
if ($ARGV[0] && $ARGV[0] eq "config") {
my $Result = $Session->get_request(-varbindlist => [$MemTotalOID]);
print "host_name " . $Host . "\n";
print "graph_args --base 1024 -l 0 --vertical-label Bytes --upper-limit " . ($Result->{$MemTotalOID} * 1024) . "\n";
print "graph_title Memory usage\n";
print "graph_category system\n";
print "graph_info This graph shows the router's memory usage.\n";
print "graph_order Total Used\n";
print "graph_vlabel bytes\n";
print "Total.label Total Memory\n";
print "Total.draw AREA\n";
print "Used.label Used Memory\n";
print "Used.draw AREA\n";
$Session->close;
exit;
}
###############################################################################
## Execution
if (my $Result = $Session->get_request(-varbindlist => [$MemTotalOID, $MemUsedOID])) {
print "Total.value " . ($Result->{$MemTotalOID} * 1024) . "\n";
print "Used.value " . ($Result->{$MemUsedOID} * 1024) . "\n";
$Session->close;
exit;
}