mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Initial version
This commit is contained in:
parent
93b0f4f382
commit
fd049b4947
95
plugins/other/ipmi_
Executable file
95
plugins/other/ipmi_
Executable file
@ -0,0 +1,95 @@
|
||||
#!/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()
|
||||
|
Loading…
Reference in New Issue
Block a user