[[ Мониторинг параметров IOSTAT в Zabbix ]]

Zabbix

Мониторинг параметров IOSTAT в Zabbix

>=app-admin/sysstat-10.*
net-analyzer/zabbix-2.0.4

Установка скрипта

Создание папки для скриптов:

mkdir /etc/zabbix/scripts/
chown root:zabbix -R /etc/zabbix/scripts/
chmod 750 /etc/zabbix/scripts/

Создадим сам скрипт:

Листинг

Скрипт поддерживает обнаружение (discovery) дисков.
Скрипт предусматривает кеш, что позволяет сократить количество реальных обращений к серверу.
Время действия кеша в секундах должно устанавливается чуть меньше чем период опроса элементов.

Установка прав

chown root:zabbix /etc/zabbix/scripts/iostat.sh
chmod 550 /etc/zabbix/scripts/iostat.sh

Проверить работу скрипта для zabbix:

sudo -u zabbix /etc/zabbix/scripts/iostat.sh none read sda

Вы должны получить данные, если этого не произошло, то конфигурация выполнена не правильно.

В Gentoo Hardened в параметрах ядра grsec может быть запрещен доступ пользователям получать данные, тогда необходимо разрешить запускать iostat через sudo для пользователя zabbix или отключить опцию

kernel

Security options  --->
    Grsecurity  --->
        Customize Configuration  --->
            Filesystem Protections  --->
                [ ] Sysfs/debugfs restriction
Если для проверки скрипт запускался с правами root, то он будет владельцем кэш файла - удалите кеш файл после проверок.

Настройка Zabbix сервера

Вызов скрипта через zabbix-agent

Настройка

/etc/zabbix/zabbix_agentd.conf

...

UserParameter=iostat[*],/etc/zabbix/scripts/iostat.sh "none" "$1" "$2"

Перезапустить

/etc/init.d/zabbix-agentd restart

Проверка

zabbix_get -s HOST -k "iostat[read,sda]"

Для контролируемых данных в Zabbix нужно создать соответствующее элементы с типом "Zabbix агент" и ключом типа:

iostat[key,dev]

где key - контролируемая метрика, dev - имя устройства.

Готовый Шаблон для мониторинга iostat (agent) с уже настроенными элементами и графиками.

Вызов скрипта внешней проверкой

Основная концепция: мониторинг iostat производиться на одном хосте с сервером zabbix, с помощью специального скрипта вызываемого внешней проверкой.
На сервере zabbix в конфиге необходимо определить место размещения скриптов для внешней проверки:

/etc/zabbix/zabbix_server.conf

...
# Location of external scripts
ExternalScripts=/etc/zabbix/scripts

Для контролируемых данных в zabbix нужно создать соответствующее элементы с типом "Внешняя проверка" и ключом типа:

iostat.sh[key,dev]

где key - контролируемая метрика, dev - имя устройства.

Результат

Пример графиков:

Обсуждение

gfif, 2014/01/17 12:56

Что-то не взлетело. После импорта появился только шаблон. ни элементов, ни графиков

Aleksey, 2014/01/17 19:04, 2014/01/17 19:06

В шаблоне нет элементов, только прототипы в "Обнаружение"

Загляните в раздел обнаружение - там обновление 3600сек. - либо ждите час либо поменяйте временно на 60, затем когда элементы появятся верните

Вы делали проверку скрипта?

Anton, 2014/01/31 12:20

Да, такая же ошибка, графиков нет, вызов zabbix_get -s host -k "iostat[read,sda]" работает. В правилах обнаружения красный крест с надписью - Value should be a JSON object, версия заббикса 2.2.1

Aleksey, 2014/01/31 14:11

:!: Исправил, должно работать

Anton, 2014/02/01 12:50

Спасибо

kyle, 2015/02/17 16:32

а зачем вообще этот скрипт если есть встроенная функция с версии 2.0

sach3000, 2016/07/07 16:14, 2016/07/08 13:40

tail -n 1 выводит последнее значение из всех найденных, что не верно.

если есть sdd sdd1 sdd2 sdd3 и указать

iostat -x | grep sdd | tail -n 1 | awk '{print $12}' - то выведется значение для sdd3.
Aleksey, 2016/07/08 13:44

У вас iostat вдруг начал выдавать данные еще и по каждому разделу диска ?

dagtk007, 2017/02/12 18:44

ошибся OS CentOS

команда

iostat -d | awk '{print $1}' | sed -e '/^\([hsv]d[a-z]\)$/!d'

нечего не выводит, хотя на ubuntu все работает !

Aleksey, 2017/02/15 14:12, 2017/02/15 14:13

сделайте такую команду - что бы выводила, и как у вас диски именуются, может там вообще рейд контроллер

Тимур, 2017/05/18 17:41

версия Zabbix 2.4.8. аналогично Anton, 2014/01/31 12:20. вызов zabbix_get -s host -k "iostat[read,sda]" работает. В правилах обнаружения красный крест с надписью - Value should be a JSON object обнаружение не работает. подскажите кто решил в чем загвоздка. заранее благодарю!

Aleksey, 2017/05/19 12:59
sudo -u zabbix /etc/zabbix/scripts/iostat.sh

что выдает

Tudor, 2018/04/18 15:15, 2018/04/18 15:45

Мне кажется что этот фрагмент не правильный

if [ ${METRIC} = "read" ]; then
  iostat -k | grep ${DISK} | head -n 1 | awk '{print $5}'
  exit 0
fi
if [ ${METRIC} = "write" ]; then
  iostat -k | grep ${DISK} | head -n 1 | awk '{print $6}'
  exit 0
fi
За read отвечает параметр номер 6 За write отвечает параметр номер 7

Должно быть

if [ ${METRIC} = "read" ]; then
  iostat -k | grep ${DISK} | head -n 1 | awk '{print $6}'
  exit 0
fi
if [ ${METRIC} = "write" ]; then
  iostat -k | grep ${DISK} | head -n 1 | awk '{print $7}'
  exit 0
fi

Aleksey, 2018/04/18 15:21

зависит от версии sysstat

Tudor, 2018/04/18 15:35, 2018/04/18 15:41

У меня sysstat version 10.1.5 и

iostat -x sda

выдает

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm    %util
sda               1.33     5.27   10.86    5.60   780.24   473.50   152.38     0.04    2.67    3.64    0.79   0.16     0.27
Aleksey, 2018/04/18 15:49, 2018/04/18 15:51

причем тут iostat -x, когда ссылаетесь на команду iostat -k
kB_read - 5 столбец
kB_wrtn - 6 столбец

iostat -V
sysstat version 10.1.5
iostat -k
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               0.24         0.03         1.06     491109   15616288
Tudor, 2018/04/18 15:51

Извините, не обратил внимание Да Вы правы

Tudor, 2018/04/26 15:10

Здраствуйте. Можно обяснить в следующем фрагменте кода if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then

sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME}))

elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then

echo "" >> "${CACHE_FILE}" # !!!
DATACACHE=`iostat -x 1 2 2>&1`
echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
chmod 640 "${CACHE_FILE}"

fi

для чего нужно if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then

sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME}))

если филтруется через elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]

может оставить только if [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then

echo "" >> "${CACHE_FILE}" # !!!
DATACACHE=`iostat -x 1 2 2>&1`
echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
chmod 640 "${CACHE_FILE}"

fi

Ваш комментарий. Вики-синтаксис разрешён:
221 +1 = 
 
howto/zabbix/zabbix_iostat_monitoring.txt · Последние изменения: 2018/07/26 16:24 (внешнее изменение)
Gentoo Linux Gentoo Linux Driven by DokuWiki