Задача: мониторить критические параметры SMART жёстких дисков с автообнаружением самих дисков.
Системные требования: наличие sg модуля ядра Linux, интерпретатор python.
Для Debian: apt-get install sg3-utils python3
Сначала сам скрипт автообнаружения /etc/zabbix/scripts/sg_discovery.py:
#!/usr/bin/python3 import os disks = os.popen("sg_map |awk '{print $1'}").read() disks = disks.split('\n') devtypes=('sat','scsi','ata') k=0 print('{\n\t\"data\":[') for i in disks: for j in devtypes: if (i and j): line='smartctl -d {0} -a {1} > /dev/null'.format(j,i) exit_code=os.system(line) if not exit_code: if k: print(',') newline='\t\t{ "{#DEVNAME}":"%s", "{#DEVTYPE}":"%s" }' print(newline %(i,j)) k=k+1 print("\n\t]\n}")
Теперь конфиг Zabbix агента /etc/zabbix/zabbix-agent.conf:
UserParameter=sg.discovery,sudo /etc/zabbix/scripts/sg_discovery.py
UserParameter=sg.get[*],sudo /usr/sbin/smartctl -a -d $1 $2 |grep $3 | awk ‘{ print $ 10; }’
UserParameter=sg.model[*],sudo /usr/sbin/smartctl -a -d $1 $2 |grep «Device Model» | awk ‘{ print $ 3; }’
UserParameter=sg.serial[*],sudo /usr/sbin/smartctl -a -d $1 $2 |grep «Serial Number» | awk ‘{ print $ 3; }’
И наконец шаблон для Zabbix:sg_stat
В sudoers должно быть:
zabbix ALL = NOPASSWD: /usr/sbin/smartctl
zabbix ALL = NOPASSWD: /etc/zabbix/scripts/sg_discovery.py
Добавить комментарий