Ребята, я не абы какой крутой админ, но юзая zabbix делаю так. Добавляю скрипты необходимые для авто-обнаружения массивов и элементы данных для их мониторинга на хост, который будем мониторить. Со стороны заббикса имею шаблон и прототипами элементов данных и триггирами.Может кому-то пригодится, а может кто-то даст дельный совет, буду рад в любом случае.
Сами скрипты:
1. /etc/zabbix/zabbix_agentd.conf.d/md.conf
#Старый-добрый алерт выдающий количество массивов со сбойными дисками
UserParameter=system.md.state,egrep "\[.*_.*\]" /proc/mdstat | wc -l
#Тут мы добавляем элементы данных для обнаружения устройств входящих в программные массивы и мониторинга их состояния
UserParameter=system.md.device.discovery,/usr/local/sbin/discovery_md_devices.py
UserParameter=system.md.device.state[*],cat /sys/block/md*/md/dev-$1/state
#А здесь скрипт для обнаружения самих массивов и элементы данных для их мониторинга
UserParameter=system.md.array.discovery,/usr/local/sbin/discovery_md_arrays.py
UserParameter=system.md.array.state[*],cat /sys/block/$1/md/array_state
UserParameter=system.md.sync.state[*],cat /sys/block/$1/md/sync_action
Далее оба скрипта, мне было проще написать их на питоне
2. /usr/local/sbin/discovery_md_arrays.py
#!/usr/bin/python
import os,sys
first_out = True
f = os.popen( 'ls /sys/block | grep md' )
lines = f.readlines();
sys.stdout.write( '{\n\t "data":\n\t[\n' )
for line in lines:
t = line.split()
md_array = t[0]
if not first_out:
sys.stdout.write( ',\n' )
first_out = False
sys.stdout.write( '\t\t{{ "{{#MD_ARRAY}}": "{0}" }}'.format(md_array) )
sys.stdout.write( '\n\t]\n}' )
sys.stdout.write( '\n' )
3. /usr/local/sbin/discovery_md_devices.py
#!/usr/bin/python
import os,sys
first_out = True
f = os.popen( 'ls /sys/block/md*/md/ | grep dev-' )
lines = f.readlines();
sys.stdout.write( '{\n\t "data":\n\t[\n' )
for line in lines:
t = line.split()
md_disk = t[0]
md_disk = md_disk.replace( 'dev-', '' )
if not first_out:
sys.stdout.write( ',\n' )
first_out = False
sys.stdout.write( '\t\t{{ "{{#MD_DEVICE}}": "{0}" }}'.format(md_disk) )
sys.stdout.write( '\n\t]\n}' )
sys.stdout.write( '\n' )
P.S. За сумбурность простите, через 20 мин сына будить и в садик везти, zabbix-шаблон сюда не выкладываю, там много букв, xml как ни как.