2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/other/ipmi_
2011-12-18 15:10:11 +01:00

96 lines
2.8 KiB
Python
Executable File

#!/usr/bin/env python
from commands import getstatusoutput as gso
def safe(s):
s=s.replace("-", "_")
s=s.replace(" ", "_")
s=s.replace(".", "_")
return s
def config(data,title):
for i in data:
print "%s.label %s"%(safe(i[0]), i[0])
# check for non-critical thresholds
if i[6] != 'na':
if i[7] != 'na':
warning = "%s:%s"%(i[6],i[7])
else:
warning = "%s:"%i[6]
else:
if i[7] != 'na':
warning = "%s"%i[7]
else:
warning = ""
if warning:
print "%s.warning %s"%(safe(i[0]),warning)
# check for critical thresholds
if i[5] == 'na':
i[5] == i[4] # N/A, so see if there is a non-recoverable threshold
if i[8] == 'na':
i[8] == i[9] # N/A, so see if there is a non-recoverable threshold
if i[5] != 'na':
if i[8] != 'na':
critical = "%s:%s"%(i[5],i[8])
else:
critical = "%s:"%i[5]
else:
if i[8] != 'na':
critical = "%s"%i[8]
else:
critical = ""
if critical:
print "%s.critical %s"%(safe(i[0]),critical)
print "graph_title %s"%title
if title == "Voltages":
print "graph_args -X 0 --logarithmic -l 1 -u 15"
#print "graph_args --base 1000 --logarithmic"
else:
print "graph_args -l 0"
print "graph_vlabel %s"%i[2]
print "graph_period minute"
print "graph_category IPMI"
def get_data():
import sys
category = sys.argv[0].split("_",1)[1]
data = []
if category =="Fans":
ids = ("Fan 1 Tach", "Fan 2 Tach", "Fan 3 Tach",
"Fan 4 Tach", "Fan 5 Tach", "Fan 6 Tach",)
title = "Fan Speed"
elif category == "Temperature":
ids = ("Ambient Temp", "Memory Temp",)
title = "Temperatures"
elif category == "Voltage":
ids = ("Planar 1.5V", "Planar 1.8V",
"Planar 3.3V", "Planar 5V", "Planar 12V",
"Planar VBAT", "CPU 1 VCore", "CPU 2 VCore",)
title = "Voltages"
status, output = gso("ipmitool sensor")
for row in output.split("\n"):
items = map(str.strip,row.split("|"))
field,value,units,status,lower_nonrecoverable,lower_critical,lower_non_critical,upper_non_critical,upper_critical,upper_nonrecoverable=items
if field in ids:
if value == 'na': continue
data.append(items)
return data,title
def sample(data):
for i in data:
print "%s.value %s"%(safe(i[0]),i[1])
def main():
import sys
data,title = get_data()
if 'config' in sys.argv:
return config(data,title)
sample(data)
if __name__ == '__main__':
main()