Archive for Zabbix

Опыт мониторинга SMART жёстких дисков при помощи Zabbix

Задача: мониторить критические параметры 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