Мониторинг на дискове ZABBIX
Рано или късно ще трябва да наблюдавате производителността на дисковата подсистема на сървърите, както виртуални, така и физически. Ако все още не правите това, то със сигурност ще ви се наложи скоро. Защо? - ако RAM, мощността на процесора и обемът на дългосрочната памет могат да се считат за константи, тогава това не може да се каже за производителността на дисковата подсистема. Първо, защото натоварването на сървърите обикновено расте с течение на времето (дори ако вземем за база постоянен брой служители на компанията), а производителността на дисковете се влошава с времето и те трябва да се променят, и второ, традиционно повечето администратори вземат предвид само мощността на процесора и обема на RAM и никой не си прави труда да изчисли необходимите iops. Ако всичко е съвсем просто с Windows системите и работи извън кутията (говоря за броячи на производителност), тогава с Unix системите всичко е по-сложно. За щастие в мрежата има доста обемни и подробни инструкции с готови скриптове за наблюдение на показателите за производителност на дисковата подсистема. Смятам да опиша използването на един от тях възможно най-подробно в тази статия.
Ако се интересувате от темите на ZABBIX, препоръчвам ви да се обърнете към основната статия – Система за наблюдение ZABBIX, където ще намерите допълнителна информация.
Първоначални данни
Zabbix агентът ще бъде конфигуриран на самия zabbix сървър, операционната система е Debian 7.7. Всички необходими скриптове и конфигурационни файлове можете да намерите тук. Малко „въведение“ може да се намери в статията „Zabbix + Iostat: наблюдение на дисковата подсистема“.
ZABBIX Дисково наблюдение - Конфигурация
Необходимо е да инсталираме пакета "sysstat", който съдържа необходимата ни програма "iostat": root@debian7:
#apt-get installsysstat
Нека си спомним къде имаме конфигурационните файлове на zabbix агента: root@debian7:
#намерете / -име "zabbix_agentd.conf" /usr/local/etc/zabbix_agentd.conf
Нека отидем в папката с конфигурационните файлове: root@debian7:
#cd /usr/local/etc/
Нека създадем папки за бъдещи скриптове и конфигурационни файлове и веднага да зададем разрешения за тях: root@debian7:/usr/local/etc#mkdir -m 755 zabbix_agent_configs root@debian7:/usr/local/etc#mkdir -m 755 zabbix_agent_scripts
Обратно към главната директория: root@debian7:/usr/local/etc#cd
Нека създадем файла iostat.conf в директорията с конфигурационните файлове на zabbix агента
#nano /usr/local/etc/zabbix_agent_configs/iostat.conf
# Дискова статистика чрез iostat (sysstat) # Внимание: Вторият параметър в iostat.collect трябва да е по-малък от опцията за изчакване в zabbix_agentd.conf UserParameter=iostat.discovery, iostat -d awk 'BEGIN if($1=="Device:")> КРАЙ ехо 0
root@debian7:/usr/local/etc#nano /usr/local/etc/zabbix_agent_scripts/iostat-parse.sh
Тук с този код:
#!/usr/bin/env bash # Описание: Скрипт за мониторинг на диска # Автор: Епихин Михаил [email protected] # Ревизия 1: Lesovsky A.V. [email protected]
NUMBER=0 FROMFILE=$1 DISK=$2 METRIC=$3
Задайте необходимите разрешения за двата скрипта: root@debian7:
#chmod 755 /usr/local/etc/zabbix_agent_scripts/iostat-collect.sh root@debian7:
#chmod 755 /usr/local/etc/zabbix_agent_scripts/iostat-parse.sh
Нека редактираме конфигурационния файл на агента: root@debian7:
#nano /usr/local/etc/zabbix_agentd.conf Нуждаем се от параметъра "Включване", задайте го на следната стойност: Include=/usr/local/etc/zabbix_agent_configs
Структурата на директорията трябва да изглежда така, ако сте конфигурирали всичко точно като мен:
Рестартирайте агент: root@debian7:
#рестартиране на услугата zabbix-agent
Проверете дали конфигурационният файл с потребителски параметри е свързан (можете да използвате всяка команда): root@debian7:
#zabbix_agentd -t iostat.discovery root@debian7:
#zabbix_get -s 127.0.0.1 -p 10050 -k iostat.discovery
Трябва да се получи нещо подобно на това:
След това трябва да добавите шаблон за наблюдение към нашия zabbix сървър чрез уеб интерфейса. За да направите това, отидете на Настройки > Шаблони, щракнете върху „Импортиране“ горе вдясно и заредете шаблона „iostat-disk-utilization-template.xml“. Закачаме шаблона към възлите за наблюдение - Мрежови възли > изберете желания възел > Раздел Шаблони > свържете се с новия шаблон > щракнете върху „Добавяне“ > щракнете върху „Актуализиране“.
Внимание: Вторият параметър в iostat.collect трябва да е по-малък от опцията Timeout в zabbix_agentd.conf
Не трябва да го пренебрегвате, в противен случай скриптовете няма да работят. За да го коригирате, отидете на конфигурационния файл на zabbix агент:
#nano /usr/local/etc/zabbix_agentd.conf
Търсим опцията „Изчакване“ и я задаваме на стойност, по-голяма от тази в скрипта, например:
Правим същото в конфигурационния файл на zabbix сървъра:
#nano /usr/local/etc/zabbix_server.conf
Това завършва настройката, данните трябва да дойдат. За да не бъда неоснователен, ще дам няколко скрийншота, показващи поне, че всичко работи за мен:
avgqu-sz - Средната дължина на опашката на заявките, които са били изпратени към устройството. avgrq-sz — Средният размер (в сектори) на заявките, които са били изпратени към устройството. await — Средното време (в милисекунди) за I/O заявки, изпратени до устройството, което трябва да бъде обслужено. Това включва времето, прекарано от заявките в опашка и времето, прекарано в обслужването им. r_await — Средното време (в милисекунди) за заявки за четене, изпратени до устройството, което трябва да бъде обслужено. Това включва времето, прекарано от заявките в опашка и времето, прекарано в обслужването им. rsec/s (rkB/s, rMB/s) — Броят сектори (килобайтове, мегабайти), прочетени от устройството за секунда. r/s — Броят (след обединяване) на заявките за четене, изпълнени за секунда за устройството. rrqm/s — Броят заявки за четене, обединени за секунда, които са поставени на опашка към устройството. %util — Процент от времето на процесора, през което I/O заявките са издадени към устройството (използване на честотната лента за устройството). Насищането на устройството възниква, когато тази стойност е близо до 100%. w_await — Средното време (в милисекунди) за заявки за запис, изпратени до устройството, което трябва да бъде обслужено. Това включва времето, прекарано от заявките в опашка и времето, прекарано в обслужването им. w/s — Броят (след обединяване) на заявките за запис, изпълнени за секунда за устройството. wrqm/s — Броят заявки за запис, обединени за секунда, които са поставени на опашка към устройството. wsec/s (wkB/s, wMB/s) — Броят сектори (килобайтове, мегабайти), записани на устройството за секунда.
За когото е интересно, можете да прочетете някои отлични варианти за реализация на мониторинга на натоварването на жестки дискове: