2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/netapp/netapp_if_
2012-02-13 18:24:46 +01:00

68 lines
2.3 KiB
Python
Executable File

#!/usr/bin/env python
"""Thomas R. N. Jansson (tjansson@tjansson.dk)
16-MAY-2010
"""
# The SNMP traps for the NetApp filer can be found in
# /net/netappfiler/vol0/etc/mib/traps.dat if the filer is
# NFS automounted mounted on server.
# Example: the SNMP id for cpuBusyTimePerCent is
# snmp.1.3.6.1.4.1.789.1.2.1.3.0
# and retrival of this value is done by
# snmpget -v 1 -c public netappfiler 1.3.6.1.4.1.789.1.2.1.3.0
#
# Requires snmpget and assumes public community.
import commands
import sys
import time
# Provided a servername and a snmpid it returns the value stripped of bogus information.
def snmpget(iservername,isnmpid):
runcmd = 'snmpget -v 1 -c public ' + iservername + ' ' + isnmpid
output = commands.getoutput(runcmd)
return output.split()[3]
# Calculates the bps by asking twice divided per second.
def calcbps(iservername,isnmpid):
val_first = int(snmpget(iservername,isnmpid))
time.sleep(1)
val_second = int(snmpget(iservername,isnmpid))
return str(val_second-val_first)
# The interface number corresponds to vif1 on my netapp
iface = '8'
ifEntryDescr = '1.3.6.1.2.1.2.2.1.2.'+iface
ifEntrySpeed = '1.3.6.1.2.1.2.2.1.5.'+iface
ifEntryStatus = '1.3.6.1.2.1.2.2.1.8.'+iface
ifEntryInOctets = '1.3.6.1.2.1.2.2.1.10.'+iface
ifEntryOutOctets = '1.3.6.1.2.1.2.2.1.16.'+iface
servername = sys.argv[0].split('_')[2]
ifacename = snmpget(servername,ifEntryDescr)
if len(sys.argv) == 2 and sys.argv[1] == "config":
print 'graph_title Network usage on '+servername+' inteface '+ifacename
print 'graph_order recv send'
print 'graph_args --base 1000'
print 'graph_vlabel bits in (-) / out (+) per \${graph_period}'
print 'graph_category netapp'
print 'graph_info This graph shows traffic for the '+ifacename+' network interface.'
print 'recv.label recv'
print 'recv.graph no'
print 'recv.cdef recv,8,*'
print 'recv.max 2000000000'
print 'recv.min 0'
print 'send.info Bits sent/received by the '+ifacename+' interface.'
print 'send.label bps'
print 'send.negative recv'
print 'send.cdef send,8,*'
print 'send.max 2000000000'
print 'send.min 0'
sys.exit(0)
# Gathers info from the servers and gathers data
print 'send.value '+calcbps(servername,ifEntryOutOctets)
print 'recv.value '+str(int(calcbps(servername,ifEntryInOctets))*-1)