Zabbix free disk space linux

Zabbix + Iostat: мониторинг дисковой подсистемы

Zabbix + Iostat: мониторинг дисковой подсистемы.

Зачем?
Дисковая подсистема одна из важных подсистем сервера и от уровня нагрузки на дисковую подсистему зачастую зависит очень многое, например скорость отдачи контента или то как быстро будет отвечать база данных. Это в большей степени относится к почтовым или файловым серверам, серверам БД. Вобщем, показатели дисковой производительности отслеживать нужно. На основании графиков производительности дисковой подсистемы мы можем принять решение о необходимости наращивания мощностей задолго до того как петух клюнет. Да и вобще полезно поглядывать от релиза к релизу как работа разработчиков сказывается на уровне нагрузки.

Под катом, о мониторинге и о том как настроить.

Зависимости:
Мониторинг реализован через zabbix агента и две утилиты: awk и iostat (пакет sysstat). Если awk идет в дистрибутивах по умолчанию, то iostat требуется установить с пакетом sysstat (тут отдельное спасибо Sebastien Godard и сотоварищи).

Известные ограничения:
Для мониторинга нужен sysstat начиная с версии 9.1.2, т.к. там есть очень важное изменение: «Added r_await and w_await fields to iostat’s extended statistics». Так что следует быть внимательным, в некоторых дистрибутивах, например в CentOS немного «стабильная» и менее фичастая версия sysstat.
Если же отталкиваться от версии zabbix (2.0 или 2.2) то тут вопрос не принципиален, работает на обоих версиях. На 1.8 не заработает т.к. используется Low level discovery.

Возможности (чисто субъективно, по мере убывания полезности):

  • Low level discovery (далее просто LLD) для автоматического обнаружения блочных устройств на наблюдаемом узле;
  • утилизация блочного устройства в % — удобная метрика для отслеживания общей нагрузки на устройстве;
  • latency или отзывчивость — доступна как общая отзывчивость, так и отзывчивость на операциях чтения/записи;
  • величина очереди (в запросах) и средний размер запроса (в секторах) — позволяет оценить характер нагрузки и степень загруженности устройства;
  • текущая скорость чтения/записи на устройство в человекопонятных килобайтах;
  • количество запросов чтения/записи (в секунду) объединенных при постановке в очередь на выполнение;
  • iops — величина операций чтения/записи в секунду;
  • усредненное время обслуживания запросов (svctm). Вообще она deprecated, разработчики обещают ее давно спилить, но все никак руки не доходят.

Вобщем как видно, здесь доступны все те метрики которые есть в iostat (кто незнаком с этой утилитой настоятельно рекомендую заглянуть в man iostat).

Доступные графики:
Графики рисуются per-device, LLD обнаруживает устройства которые попадают под регулярное выражение «(xvd|sd|hd|vd)[a-z]», так что если ваши диски имеют другие имена, можно легко внести соответствующие изменения. Такая регулярка сделана чтобы обнаруживать устройства которые будут родительскими по отношению к прочим разделам, LVM томам, MDRAID массивам и т.п. Вобщем чтобы не собирать лишнего. Немного отвлеклись, итак список графиков:

  • Disk await — отзывчивость устройства (r_await, w_await);
  • Disk merges — операции слияния в очереди (rrqm/s, wrqm/s);
  • Disk queue — состояние очереди (avgrq-sz, avgqu-sz);
  • Disk read and write — текущие значения чтения/записи на устройство (rkB/s, wkB/s);
  • Disk utilization — утилизация диска и значение IOPS (%util, r/s, w/s) — позволяет неплохо отслеживать скачки в утилизации и чем, чтением или записью они были вызваны.
Читайте также:  Скайп для линукс дебиан

Аналоги и отличия:
В заббиксе есть коробочные варианты для похожего мониторинга, это ключи vfs.dev.read и vfs.dev.write. Они хороши и прекрасно работают, но менее информативны чем iostat. Например в iostat есть такие метрики как latency и utilization.
Также есть аналогичный шаблон от Michael Noman на мой взгляд отличие только одно, она заточена на старые версии iostat, ну и + небольшие синтаксические изменения.

Где взять:
Итак, мониторинг состоит из файла конфигурации для агента, двух скриптов для сбора/получения данных и шаблон для веб-интерфейса. Все это доступно в репозитории на Github, поэтому любым доступным способом (git clone, wget, curl, etc. ) скачиваем их на машины которые хотим замониторить и переходим к следующему пункту.

Как настроить:

  • iostat.conf — содержимое этого файла следует поместить в файл конфигурации zabbix агента, либо положить в каталог конфигурации который указан в Include опции основной конфигурации агента. Вобщем зависит от политики партии. Я использую второй вариант, для кастомных конфигов у меня отдельная директория.
  • scripts/iostat-collect.sh и scripts/iostat-parse.sh — эта два рабочих скрипта следует скопировать в /usr/libexec/zabbix-extensions/scripts/. Тут также можно использовать удобное вам размещение, однако в таком случае не забудьте поправить пути в параметрах определенных в iostat.conf. Не забудьте проверить что они исполняемы (mode=755).

Теперь все готово, запускаем агента и переходим на сервер мониторинга и выполняем команду (не забываем подменить agent_ip):

Таким образом, проверяем с сервера мониторинга что iostat.conf подгрузился и отдает информацию, заодно смотрим что LLD работает. В качестве ответа вернется JSON с именами обнаруженных устройств. Если ответа не пришло, значит что-то сделали не так.

Также есть такой момент, что zabbix server не дожидается выполнения некоторых item’ов со стороны агентов (iostat.collect). Для этого следует увеличить значения Timeout.

Как настроить в web интейрфейс:
Теперь остался шаблон iostat-disk-utilization-template.xml. Через веб интерфейс импортируем его в раздел шаблонов и назначем на наш хост. Тут все просто. Теперь остается ждать примерно один час, такое время установлено в LLD правиле (тоже настраивается). Или можно поглядывать в Latest Data наблюдаемого хоста, в раздел Iostat. Как только там появились значения, можно перейти в раздел графиков и понаблюдать за первыми данными.

И напоследок тройка скринов графиков c локалхоста))):
Непосредственно данные в Latest Data:

Графики отзывчивости (Latency):

График утилизации и IOPS:

Вот и собственно и все, спасибо за внимание.
Ну и по традиции, пользуясь случаем передаю привет Федорову Сергею (Алексеевичу) 🙂

Источник

Мониторинг дискового пространства активным Zabbix-агентом. OLD.

Замечание!

Это немного устаревшая статья. Описанный в ней способ сейчас мною не используется. Использую более простой способ, который описан тут: Мониторинг дискового пространства активным Zabbix-агентом

Лирическое отступление.

В Zabbix, как многие помнят, агент, устанавливаемый на подопечный компьютер, может работать в двух режимах: активном и пассивном.

При работе в активном режиме агент сам собирает какие-то данные с компьютера и затем с заданной периодичностью отсылает их на сервер. В пассивном режиме агент выдает минимальный набор данных самостоятельно, а все остальные данные исключительно по запросу с сервера.

При использовании агента в пассивном режиме прямо “из коробки” доступно много “вкусных плюшек”: слежение за нагрузкой сетевых адаптеров, наблюдение за дисковой подсистемой, слежение за свободным местом на всех дисках, слежение за системными журналами и прочее…

Читайте также:  Kudzu что это linux

А что делать, если агент находится за NAT? Понятно, что без проброса портов сервер не может отправить команду агенту напрямую, и работа агента в этом случае возможна только в активном режиме… Но при этом очень хочется иметь данные, например, о количестве свободного места на дисках!

Всё? Приплыли? Ничуть!

Лирическое наступление.

Итак, ставим задачу: следить за системным диском (%systemdrive%) подопечного компьютера, а именно за количеством свободного места на нём.

Следить можно за всеми дисками, но наиболее важно, по-моему, иметь данные о количестве свободного места как раз на системном диске. Если на каком-то другом диске закончится свободное место, пользователь сам это заметит и сообщит о такой неприятности, при этом система продолжит нормальную работу. Если же на системном диске закончится свободное пространство, стабильную работу системы гарантировать сложно.

Усложним себе задачу. 🙂

Пробрасывать порты не будем. Новомодные инструменты типа Windows PowerShell использовать не будем потому, что PowerShell на некоторых системах просто нет.

Будем использовать командную строку, встроенный планировщик заданий и немного VBS-скриптов.

Ну… Это всё была преамбула, теперь наступил черёд “амбулы”.

“Амбула”.

1. Устанавливаем на подопечный компьютер Zabbix-агента:

  • Путь установки программы: C:\zabbix
  • Папку с самописными скриптами располагаем тут: C:\zabbix\scripts
  • Файл с настройками тут: C:\zabbix\zabbix_agentd.win.conf

Т.к. этот агент будет располагаться за NAT и не будет иметь возможности получать команды от сервера, то одержимое файла с настройками будет примерно таким:

LogFile=c:\zabbix\zabbix_agentd.log
Server=xx.yy.zz.yy
ServerActive=xx.yy.zz.yy
Hostname=hostname.mihanik.net
StartAgents=0
RefreshActiveChecks=120
EnableRemoteCommands=1

####### USER-DEFINED MONITORED PARAMETERS #######

####### Слежение за свойствами диска #######
# Для Windows

### Процент свободного места на системном диске ###
UserParameter=Win_SysDrv_PercentFreeSpace, C:\Windows\System32\cscript.exe C:\zabbix\scripts\WinDriveInfo.vbs %SystemDrive% PercentFreeSpace
# Проверить
# C:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t Win_SysDrv_PercentFreeSpace

### Общий размер системного диска ###
UserParameter=Win_SysDrv_TotalSize, C:\Windows\System32\cscript.exe C:\zabbix\scripts\WinDriveInfo.vbs %SystemDrive% TotalSize
# Проверить
# C:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t Win_SysDrv_TotalSize

### Размер свободного пространства на системном диске ###
UserParameter=Win_SysDrv_FreeSpace, C:\Windows\System32\cscript.exe C:\zabbix\scripts\WinDriveInfo.vbs %SystemDrive% FreeSpace
# Проверить
# C:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t Win_SysDrv_FreeSpace

В самом конце я описал 3 (три) пользовательских параметра, которые мне хотелось бы отсылать на сервер:

  • UserParameter=Win_SysDrv_PercentFreeSpace
  • UserParameter=Win_SysDrv_TotalSize
  • UserParameter=Win_SysDrv_FreeSpace

%SystemDrive% – это, как вы догадались, имя системного диска Windows. 🙂

Чтобы автоматизировать процесс установки использую простенький скриптик: Zabbix_Install.bat

2. Размещаем в папке C:\zabbix\scripts простенький VBS-скрипт,

Он, собственно, и будет собирать нужные нам данные. Назвал я его так: c:\zabbix\scripts\WinDriveInfo.vbs

Вот небольшая инструкция по использованию скриптика:

– имя диска, свойства которого нужно получить

– свойство, которое нужно получить

VolumeName — Название тома(не C:\, именно название)
TotalSize — Полный размер диска В БАЙТАХ
FreeSpace — Свободное место на диске В БАЙТАХ
SerialNumber — c серийный номер жёсткого диска
DriveLetter — буква, назначенная диску (без всяких : и :\)
DriveType — тип диска(съёмный, не съёмный, сетевой, CD-ROM или RAM-диск)
FileSystem — файловая система диска(FAT32, NTFS и т.д.)
RootFolder — путь к корневой папке(для диска С — C:\)
Path — то же, что и RootFolder, но вернёт он C: , без \
IsReady — доступность диска в данный момент(True или False)
PercentFreeSpace – процент свободного места на диске с точностью до сотых

trap – использовать zabbix_sender для отправки данных на zabbix-сервер,
notrap (по умолчанию) – не использовать zabbix_sender для отправки данных.

Важно. Т.к. скрипт я писал для себя, то в нём нет защиты от дурака и особо нет контроля передаваемых скрипту параметров. Кому нужно, можете сами дописать. 🙂

Читайте также:  Лучшие дистрибутивы arch linux

3. Перезапускаем службу zabbix-агента и проверяем, что наши пользовательские параметры работают правильно.

Т.е. последовательно выполняем 3 команды:

  • C:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t Win_SysDrv_PercentFreeSpace
  • C:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t Win_SysDrv_TotalSize
  • C:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t Win_SysDrv_FreeSpace

Вот пример корректной работы первой команды:

Видно, что у меня на диске 75,12% свободного места. 🙂

Если ошибок нет, продолжаем дальше…

4. Теперь идём в web-интерфейс вашего Zabbix-сервера и создаём новый шаблон с именем Win_SysDrv_Monitoring.

При создании элементов данных указываем, что получать мы их будем при помощи Zabbix траппера.

Приведу скриншоты уже настроенного шаблона.

Особо ленивые могут скачать готовый шаблон тут: Win_SysDrv_Monitoring.xml

5. Назначаем подопечному компьютеру созданный нами шаблон и нажимаем кнопку “обновить”.

6. Проверяем работу на текущем этапе.

Идём в Мониторинг, заходим в последние данные, выбираем нужный нам подопечный компьютер и видим… Ничего мы не видим. Данные не попадают на сервер.

Потому, что пользовательские параметры, описанные нами в конце конфигурационного файла, Zabbix-агент отправляет на сервер только по прямому запросу с этого самого сервера. А агент-то находится за NAT, т.е. сервер отдать команду агенту не может, ведь порт с сервера на агента мы тоже не пробросили…

Получается, что агент про параметры знает, но отправлять их на сервер не будет: “Команды не было!”. 🙂

Получается, что нам нужно как-то самим отправлять данные на сервер по расписанию.

7. Настраиваем отправку данных по расписанию.

Идём в управление подопечным компьютером и в планировщике заданий создаём новую папку с именем Zabbix.

В этой папке создаём три простых задачи, которые будут работать от имени пользователя “система”, и по нужному вам расписанию выполнять сбор данных, а потом эти данные будут отправлять на сервер

Задача Win_SysDrv_FreeSpace должна выполнять команду

C:\Windows\System32\cscript.exe C:\zabbix\scripts\WinDriveInfo.vbs %SystemDrive% FreeSpace TRAP

Задача Win_SysDrv_TotalSize должна выполнять команду

C:\Windows\System32\cscript.exe C:\zabbix\scripts\WinDriveInfo.vbs %systemdrive% TotalSize TRAP

Задача Win_SysDrv_PercentFreeSpace должна выполнять команду

C:\Windows\System32\cscript.exe C:\zabbix\scripts\WinDriveInfo.vbs %SystemDrive% PercentFreeSpace TRAP

Смысл каждой команды следующий: мы просим интерпретатор cscript запустить на выполнение скрипт WinDriveInfo.vbs с нужными нам параметрами.

ВАЖНО.

Если вы в качестве “Программы или сценария” укажете не интерпретатор cscript, а выберете непосредственно сам скрипт, то ваша задача стартует, но НЕ ЗАВЕРШИТСЯ!!

Причина очень проста: по умолчанию в Windows используется интерпретатор wscript. а он команду .Echo выводит не в консоль, как нам нужно, а выбрасывает MsgBox c кнопкой, которую, конечно же, будет некому нажать…

ТОЖЕ ВАЖНО.

Обязательно используйте 3 (третий) параметр скрипта TRAP. Именно благодаря этому параметру скрипт будет понимать, что полученные данные нужно не передавать Zabbix-агенту, а отправлять их сразу непосредственно на ваш Zabbix-сервер.

8. Окончательная проверка.

Идём в Мониторинг, заходим в последние данные, выбираем нужный нам подопечный компьютер и видим, что данные потекли…

Я взял данные с реального компьютера клиента:

Видно, что на системном диске мало места… И, да. На панели тут же отобразилось предупреждение.

Пы.Сы.

Я описал реальный работающий способ в виде “как есть”.

В нём есть некоторые недочёты, которые потом будут исправляться, но этот пример может кому-то помочь решать свои задачи.

УДАЧИ.

Аренда серверов.

Надёжные сервера с Pro-бегом
У ВАС В ОФИСЕ
!

1С:Предприятие “в облаке”.

Безопасный доступ к своей 1С из офиса, командировки и т.п.!

IP-телефония в офис.

IP-телефония давно перестала быть роскошью в офисах.
Хотите себе в офис цифровую АТС — обращайтесь.
!

Источник

Оцените статью