- Repository
- Munin (contrib)
- Last change
- 2020-08-25
- Graph Categories
- Family
- snmpauto contrib
- Capabilities
- Keywords
- Language
- Ruby
snmp__linksys_poe
Name
snmp__linksys_poe - Munin plugin to monitor the current supplied by Linksys PoE switches.
Requires ruby and the ruby SNMP library.
Applicable Systems
I wrote this to query SRW2008MP switches and determined the OIDs by trial and error. There may be other Linksys devices that this will also work for.
Configuration
This plugin defaults to SNMP version 2c and a community string of ‘public’. The defaults can be overridden in the usual way:
[snmp_*]
env.version 1
env.community private
SNMP version 3 is not supported.
Interpretation
The plugin simply reports the current being supplied on each of the device’s PoE ports.
Mib Information
Information is gathered from Linksys' private MIB space, so it’s probably only applicable to Linksys devices. I have been unable to get an actual copy of the appropriate MIB, so I don’t know the actual names of the values I’m retrieving.
Magic Markers
#%# family=snmpauto contrib
#%# capabilities=snmpconf
Version
1.0
Bugs
None known.
Author
Written by Phil Gold <phil_g@pobox.com>.
License
CC0 <http://creativecommons.org/publicdomain/zero/1.0/>
To the extent possible under law, all copyright and related or neighboring rights to this plugin are waived. Do with it as you wish.
#!/usr/bin/env ruby
"
=head1 NAME
snmp__linksys_poe - Munin plugin to monitor the current supplied by Linksys PoE
switches.
Requires ruby and the ruby SNMP library.
=head1 APPLICABLE SYSTEMS
I wrote this to query SRW2008MP switches and determined the OIDs by trial and
error. There may be other Linksys devices that this will also work for.
=head1 CONFIGURATION
This plugin defaults to SNMP version 2c and a community string of 'public'. The
defaults can be overridden in the usual way:
[snmp_*]
env.version 1
env.community private
SNMP version 3 is not supported.
=head1 INTERPRETATION
The plugin simply reports the current being supplied on each of the device's
PoE ports.
=head1 MIB INFORMATION
Information is gathered from Linksys' private MIB space, so it's probably only
applicable to Linksys devices. I have been unable to get an actual copy of
the appropriate MIB, so I don't know the actual names of the values I'm
retrieving.
=head1 MAGIC MARKERS
#%# family=snmpauto contrib
#%# capabilities=snmpconf
=head1 VERSION
1.0
=head1 BUGS
None known.
=head1 AUTHOR
Written by Phil Gold <phil_g@pobox.com>.
=head1 LICENSE
CC0 <http://creativecommons.org/publicdomain/zero/1.0/>
To the extent possible under law, all copyright and related or neighboring
rights to this plugin are waived. Do with it as you wish.
=cut
"
require 'snmp'
idx_oid = 'enterprises.3955.89.108.1.1.2'
max_oid = 'enterprises.3955.89.108.1.1.6'
cur_oid = 'enterprises.3955.89.108.1.1.5'
community = ENV['community'] || 'public'
version = ENV['version'] == '1' ? :SNMPv1 : :SNMPv2c
case ARGV[0]
when 'snmpconf'
puts 'require 1.3.6.1.4.1.3955.89.108.1.1.2.1. [0-9]'
puts 'require 1.3.6.1.4.1.3955.89.108.1.1.5.1. [0-9]'
puts 'require 1.3.6.1.4.1.3955.89.108.1.1.6.1. [0-9]'
exit 0
when 'config'
host = $0.match('^(?:|.*\/)snmp_([^_]+)')[1]
puts "host_name #{host}"
puts 'graph_title PoE Power Usage'
puts 'graph_vlabel Watts'
puts 'graph_category sensors'
max_current = 0
SNMP::Manager.open(Host: host,
Community: community,
Version: version) do |manager|
manager.walk([idx_oid, max_oid]) do |row|
puts "iface_#{row[0].value}.label Port #{row[0].value}"
puts "iface_#{row[0].value}.cdef iface_#{row[0].value},1000,/"
puts "iface_#{row[0].value}.line #{row[1].value.to_f / 1000}"
max_current = row[1].value if row[1].value > max_current
end
end
puts "graph_args --upper-limit #{max_current.to_f / 1000}"
exit 0
else
host = $0.match('^(?:|.*\/)snmp_([^_]+)')[1]
SNMP::Manager.open(Host: host,
Community: community,
Version: version) do |manager|
manager.walk([idx_oid, cur_oid]) do |row|
puts "iface_#{row[0].value}.value #{row[1].value}"
end
end
end