1.Настройка скрипта на Zabbix-агенте
Создание папки для скриптов:
1 |
# mkdir /etc/zabbix/scripts/ |
1 |
# сhown root:zabbix -R /etc/zabbix/scripts/ |
1 |
# chmod 750 /etc/zabbix/scripts/ |
Создание самого скрипта
1 |
# nano /etc/zabbix/scripts/smart-stats.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#!/bin/bash export LC_ALL="" export LANG="en_US.UTF-8" ##### OPTIONS VERIFICATION ##### if [[ -z "$1" || -z "$2" || -z "$3" ]]; then ##### DISCOVERY ##### DEVICES=`ls /dev | sed -e '/^\([hs]d[a-z]\)$/!d'` if [[ -n $DEVICES ]]; then JSON="{ \"data\":[" SEP="" for DEV in $DEVICES; do JSON=$JSON"$SEP{\"{#HDNAME}\":\"$DEV\"}" SEP=", " done JSON=$JSON"]}" echo $JSON fi exit 0 fi ##### PARAMETERS ##### RESERVED="$1" DISK="$2" METRIC="$3" SMARTCTL="sudo /usr/sbin/smartctl" CACHE_TTL="55" CACHE_FILE="/tmp/zabbix.smart.${DISK}.cache" EXEC_TIMEOUT="1" NOW_TIME=`date '+%s'` ##### RUN ##### if [ -s "${CACHE_FILE}" ]; then CACHE_TIME=`stat -c"%Y" "${CACHE_FILE}"` else CACHE_TIME=0 fi DELTA_TIME=$((${NOW_TIME} - ${CACHE_TIME})) # if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME})) elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then echo "" >> "${CACHE_FILE}" # !!! DATACACHE=`${SMARTCTL} -A /dev/${DISK}` echo "${DATACACHE}" > "${CACHE_FILE}" # !!! chmod 640 "${CACHE_FILE}" fi # cat "${CACHE_FILE}" | grep -i "${METRIC}" | awk '{print $10}' | head -n1 exit 0 |
Скрипт предусматривает кеш, что позволяет сократить количество реальных обращений к серверу.
Время действия кеша в секундах должно устанавливается чуть меньше чем период опроса элементов(по умолчанию в скрипте используется кеширование на 55 секунд, а интервал обновления элементов настроен на 60 секунд)
Установка прав
1 |
# chown root:zabbix /etc/zabbix/scripts/smart-stats.sh |
1 |
# chmod 550 /etc/zabbix/scripts/smart-stats.sh |
2.Настройка прав пользователю zabbix в sudo
1 |
# visudo |
1 |
zabbix ALL=(ALL) NOPASSWD: /usr/sbin/smartctl |
Проверка локально с агента
1 |
# sudo -u zabbix /etc/zabbix/scripts/smart-stats.sh none sda Temperature_Celsius |
1 |
38 |
3.Настройка Zabbix-агента
1 |
# nano /etc/zabbix/zabbix_agentd.d/userparameter_smart.conf |
1 2 |
###SMART monitoring UserParameter=smart[*],/etc/zabbix/scripts/smart-stats.sh none "$1" "$2" |
1 |
# service zabbix-agent restart |
Проверка с Zabbix-сервера
1 |
# zabbix_get -s myservername -k 'smart[sda,Temperature_Celsius]' |
1 |
38 |
4.Настройка Zabbix-сервера
Для контролируемых данных в Zabbix нужно создать соответствующее элементы с типом «Zabbix агент» и ключом типа:
1 |
smart[dev,key] |
где dev — имя устройства, key — контролируемая метрика.
Как альетрнатива:
Скачиваем, распаковываем и импортируем шаблон:
zabbix2_smart_template.zip
Добавляем шаблон к хосту, на котором мониторим SMART-показатели.
Проверяем,что через 1-2 минуты на хосте появились Item с именем S.M.A.R.T.
Monitoring->Latest Data->фильтруем по требуемому хосту в поле Hosts-> S.M.A.R.T.
Источник:
http://wiki.enchtex.info/howto/zabbix/zabbix_smart_monitoring