| Current File : //proc/2/root/etc/node_exporter/scripts/adaptec_old |
#!/usr/bin/env python
import subprocess
import os
def run(command):
commands = command.split()
res = subprocess.Popen(commands, stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]
return res
def col_value(data, key, index=0):
col_index = 0
for line in data.splitlines():
columns = line.split(' : ')
col_num = len(columns)
col_key = columns[0].strip()
if col_key == key:
if col_index == index:
if col_num == 2:
return columns[1].strip()
elif col_num == 3:
return columns[1].strip() + ' ' + columns[2].strip()
col_index += 1
return False
def last_value(data, key, index=0):
col_index = 0
for line in data.splitlines():
if key in line:
if col_index == index:
return line.split()[-1]
return False
def print_formated(metric, value, index=-1, isString=False):
if index != -1:
if not isString:
print('adaptec_%s{device="%s"} %s' % (metric,index,value))
else:
if value == "Online" or value == "Optimal":
value = 1
print('adaptec_%s{device="%s"} %s' % (metric,index,value))
elif ' ' in value:
splited = value.split(" ")
print('adaptec_%s{device="%s"} %s' % (metric,index,value))
else:
value = 0
print('adaptec_%s{device="%s"} %s' % (metric,index,value))
else:
if not isString:
print('adaptec_%s %s' % (metric,value))
else:
if value == "Online" or value == "Optimal":
value = 1
print('adaptec_%s %s' % (metric,value))
elif ' ' in value:
splited = value.split(" ")
if isinstance(splited[0], int):
print('adaptec_%s %s' % (metric,splited[0]))
else:
print('adaptec_%s %s' % (metric,0))
else:
value = 0
print('adaptec_%s %s' % (metric,value))
command = '/usr/StorMan/arcconf GETCONFIG 1'
res = run(command)
controller_status = col_value(res, 'Controller Status')
print_formated('controller_status',controller_status,-1,True)
raid_status = col_value(res, 'Status of logical device')
print_formated('raid_status',raid_status,-1,True)
for pd_num in range(10): # 0-9
if col_value(res, 'State', pd_num):
state = col_value(res, 'State', pd_num)
print_formated('state',state,pd_num,True)
smart_warnings = col_value(res, 'S.M.A.R.T. warnings', pd_num)
print_formated('smart_warnings',smart_warnings,pd_num,False)