Repository
Munin (2.0)
Last change
2022-01-06
Graph Categories
Family
snmpauto
Capabilities
Language
Perl
License
GPL-2.0-only
Authors

snmp__cpuload

Name

snmp__cpuload - Munin plugin to monitor CPU usage by use of SNMP.

Applicable Systems

Any SNMP-capable device that reports the HOST-RESOURCES-MIB::hrProcessorLoad OID.

Configuration

As a rule SNMP plugins need site specific configuration. The default configuration (shown here) will only work on insecure sites/devices.

[snmp_*]
     env.version 2
     env.community public

In general SNMP is not very secure at all unless you use SNMP version 3 which supports authentication and privacy (encryption). But in any case the community string for your devices should not be “public”.

Please see ‘perldoc Munin::Plugin::SNMP’ for further configuration information.

Interpretation

The average, over the last minute, of the percentage of time that this processor was not idle.

Mib Information

This plugin requires support for the HOST-RESOURCES-MIB (RFC 2790). It reports the contents of the hrProcessorLoad OID for each entry in hrProcessorTable.

Magic Markers

#%# family=snmpauto
#%# capabilities=snmpconf

Bugs

None known.

Author

Copyright (C) 2006 Lars Strand

Documented and updated to use Munin::Plugin::SNMP by Matthew Boyle.

License

GPLv2.

#!@@PERL@@ -w
# -*- perl -*-
# vim: ft=perl

=head1 NAME

snmp__cpuload - Munin plugin to monitor CPU usage by use of SNMP.

=head1 APPLICABLE SYSTEMS

Any SNMP-capable device that reports the
HOST-RESOURCES-MIB::hrProcessorLoad OID.

=head1 CONFIGURATION

As a rule SNMP plugins need site specific configuration.  The default
configuration (shown here) will only work on insecure sites/devices.

   [snmp_*]
	env.version 2
        env.community public

In general SNMP is not very secure at all unless you use SNMP version
3 which supports authentication and privacy (encryption).  But in any
case the community string for your devices should not be "public".

Please see 'perldoc Munin::Plugin::SNMP' for further configuration
information.

=head1 INTERPRETATION

The average, over the last minute, of the percentage of time that
this processor was not idle.

=head1 MIB INFORMATION

This plugin requires support for the HOST-RESOURCES-MIB (RFC 2790).  It
reports the contents of the hrProcessorLoad OID for each entry in
hrProcessorTable.

=head1 MAGIC MARKERS

  #%# family=snmpauto
  #%# capabilities=snmpconf

=head1 BUGS

None known.

=head1 AUTHOR

Copyright (C) 2006 Lars Strand

Documented and updated to use Munin::Plugin::SNMP by Matthew Boyle.

=head1 LICENSE

GPLv2.

=cut

use strict;
use Munin::Plugin::SNMP;

my $oid = '1.3.6.1.2.1.25.3.3.1.2';

if (defined $ARGV[0] and $ARGV[0] eq 'snmpconf') {
	print "require ${oid}.\n";
	exit 0;
}

my $session = Munin::Plugin::SNMP->session();

my $result = $session->get_entries(-columns => [ $oid ]);

my %cpus;

while (my ($oid, $value) = each %$result) {
	my $index = (split /\./, $oid)[-1];
	$cpus{$index} = $value;
}

if (defined $ARGV[0] and $ARGV[0] eq "config") {
	my $host = $session->hostname;

	print "host_name $host\n" unless ($host eq 'localhost');
	print <<'EOC';
graph_title CPU usage
graph_category system
graph_args --upper-limit 100 -l 0
graph_vlabel %
graph_info This graph shows the CPU load on the system.
EOC
	foreach my $cpu (sort(keys %cpus)) {
		# CPU #1 will have $fieldname "cpu" to retain compatability with
		# old snmp_cpuload plugin.
		my $cpun = $cpu;
		$cpun = '' if $cpun == 1;
		print "cpu$cpun.label CPU $cpu\n";
		print "cpu$cpun.info CPU load on CPU $cpu\n";
	}
	exit 0;
}

# the values
while (my ($cpu, $load) = each(%cpus)) {
	$cpu = '' if $cpu == 1;
	print "cpu$cpu.value $load\n";
}