Zabbix мониторинг свободного места на диске windows

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

Замечание!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

“Амбула”.

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

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

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

LogFile=c:zabbixzabbix_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:WindowsSystem32cscript.exe C:zabbixscriptsWinDriveInfo.vbs %SystemDrive% PercentFreeSpace
# Проверить
# C:zabbixzabbix_agentd.exe -c c:zabbixzabbix_agentd.win.conf -t Win_SysDrv_PercentFreeSpace

### Общий размер системного диска ###
UserParameter=Win_SysDrv_TotalSize, C:WindowsSystem32cscript.exe C:zabbixscriptsWinDriveInfo.vbs %SystemDrive% TotalSize
# Проверить
# C:zabbixzabbix_agentd.exe -c c:zabbixzabbix_agentd.win.conf -t Win_SysDrv_TotalSize

### Размер свободного пространства на системном диске ###
UserParameter=Win_SysDrv_FreeSpace, C:WindowsSystem32cscript.exe C:zabbixscriptsWinDriveInfo.vbs %SystemDrive% FreeSpace
# Проверить
# C:zabbixzabbix_agentd.exe -c c:zabbixzabbix_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:zabbixscripts простенький VBS-скрипт,

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

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

Запуск скрипта:
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 для отправки данных.

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

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

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

  • C:zabbixzabbix_agentd.exe -c c:zabbixzabbix_agentd.win.conf -t Win_SysDrv_PercentFreeSpace
  • C:zabbixzabbix_agentd.exe -c c:zabbixzabbix_agentd.win.conf -t Win_SysDrv_TotalSize
  • C:zabbixzabbix_agentd.exe -c c:zabbixzabbix_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:WindowsSystem32cscript.exe C:zabbixscriptsWinDriveInfo.vbs %SystemDrive% FreeSpace TRAP

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

C:WindowsSystem32cscript.exe C:zabbixscriptsWinDriveInfo.vbs %systemdrive% TotalSize TRAP

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

C:WindowsSystem32cscript.exe C:zabbixscriptsWinDriveInfo.vbs %SystemDrive% PercentFreeSpace TRAP

Кому лень создавать задачи самостоятельно, могут импортировать их из этих файлов: Win_SysDrv_TotalSize.xml,  Win_SysDrv_PercentFreeSpace.xml,  Win_SysDrv_FreeSpace.xml

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

ВАЖНО!!!

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

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

ТОЖЕ ВАЖНО!!!

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

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

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

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

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

УРА!!!

Всё работает!!!

Пы.Сы.

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

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

🙂

УДАЧИ!!!


Как в Zabbix 2.0 сделать мониторинг свободного места на дисках?

По сути ничего сложного нет, но поиск по интернету ничего хорошего не нашел (может быть я плохо искал), и так, как это сделал я?!

Как добавлять триггеры и шаблоны можно посмотреть в постах ранее, по этому сразу к делу.

Мне нужно было мониторить 5 дисков (кол-во не важно, но для наглядности).

1. Создаем шаблон (к примеру Windows Disk)

2. Создаем группу данных (к примеру DiskSize)

3. Далее создаем элемент данных, вот тут то самая и суть (вот так должен выглядеть «элемент данных»)

check-disk

 

— первое это ключ (vfs.fs.size[C:,free]) по которую забикс будет проверять место на диске.

C: — это имя диска, free — это свободное место (по умолчанию забикс это будет отдавать в килобайтах), это не удобно, по этому делаем пользовательский множитель 0.000000000931322574615478515625 — почему именно такой? (на сколько я понял, раз множитель, значит надо умножить и кроме как число в строчку вставить нельзя, а чтобы из КБ перевести в ГБ, надо несколько раз разделить на 1024 или умножить на вот это самое число).

В итоге получаем элемент данных в ГБ (что намного удобнее).

Далее делаем триггер который будет срабатывать когда на диске остается меньше 20 ГБ.

Сам триггер выглядит вот так (см.ниже).

trigger-disk-size

В нем добавляем выражение «{Windows Disk:vfs.fs.size[C:,free].last(0)}<20» — тут все предельно ясно, смотрим последнее значение и если оно меньше 20 (ГБ), то начинаем кричать. Удачи.

Загрузка…

This article omits the installation of zabbix server. For the installation of zabbix server, you can check the article I published earlier. Currently, zabbix4.0server is used as an example to monitor the usage of c disk separately. This article does not involve disk writing, just disk space. The usage rate is theoretically universal for all versions.

1. Download zabbix-agent

The current use of Windows2012 system as an example, theories are common to all systems, other systems please self-test!

Https://www.zabbix.com/cn/download_agents#tab:40LTS

Zabbix-agent provides windows (msi) package from 4.0, and it is more convenient to install directly with one button.

Https://assets.zabbix.com/downloads/4.0.13/zabbix_agent-4.0.13-win-amd64-openssl.msi

How To Use Zabbix Monitor Windows Disk Usage

2, install zabbix-agent

Run the zabbix_agent-4.0.*-win-amd64-openssl.msi installer on a Windows2012 server






After the default installation is complete, zabbix-agent will be automatically added to the Windows system service and automatically started. Please note that there is a firewall to open the port 10050 , otherwise zabbix-server can not get the data.

So simple zabbix-agent installation is complete, the rest of the steps are all in zabbix-server!

3, zabbix_get verification

Verify that the data can be obtained by zabbix_get command on zabbix-server

1 zabbix_get – s agent端的IP地址 – k “vfs.fs.size[c:,total]”

If the value can be returned normally, it means that the agent has no problem.

4, create a template in the zabbix-server console

Log in to the zabbix-server console, configure → template → create template

5, parameter description

The vfs.fs.size[fs,<mode>] key value is required to monitor disk usage.

Fs: file system
Mode: mode
Total default all, free idle, used, pfree free percentage, used percentage

6, create a monitoring item in the zabbix-server console

Click on the created template to add monitoring items.

Name: total amount of c disk
Key value: vfs.fs.size[c:,total]

Other parameters change according to usage. If you are configuring for the first time, then I suggest you not to change it.

Next continue to create free, used, create methods and total the same as total

12 名称: c盘剩余量 键值vfs . fs . size [ c : , free ] 名称: c盘使用量 键值vfs . fs . size [ c : , used ]

Add pfree, pused, note that these two information types need to choose floating point number, unit %

12 名称: c盘剩余百分比 键值: vfs . fs . size [ c : , pfree ] 名称: c盘使用百分比 键值: vfs . fs . size [ c : , pused ]

7, create a trigger in zabbix-server (optional)

Problem representation: {windows:vfs.fs.size[c:,pfree].last()}<=5
Restore expression: {windows:vfs.fs.size[c:,pfree].last()}>5


8, create a graphic in zabbix-server

9, template associated host

In Configuration → Host → Create Host

Click on the template, link the template you just created, and click Add.

Wait patiently for a while, you can see the use of Windows 2012 c drive, note: This value is different from what you see in Windows, because of the conversion method, not too tangled!

The same method applies to d disk, e disk, etc.

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

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

Однако на серверах лучше ограничивать использование файловой системы для пользователей с помощью дисковых квот. Это предотвратит переполнение всего диска, если один из пользователей запишет на диск слишком много файлов. Такая ситуация бывает, например, на серверах хостинга интернет-магазинов, импортирующих крупные каталоги товаров.

В этой статье мы расскажем про настройку квот файловой системы Linux, а также про то, как организован мониторинг квот на хостинговых серверах SAAS-сервиса интернет-магазинов.

Настройка квот файловой системы на сервере

Проще всего настроить использование квот, если на сервере установлена какая-нибудь панель управления, например ISPmanager или Hestia Control Panel. Если же никакая панель не используется, можно настроить квоты вручную.

Настройка через панель управления ISPmanager

Если на вашем сервере установлена панель управления ISPmanager, то для включение дисковых квот достаточно установить флажок Дисковые квоты на странице Конфигурация ПО, доступную в меню Настройки (рис. 1).

Рис. 1. Включение дисковых квот в панели ISPmanager

Рис. 1. Включение дисковых квот в панели ISPmanager

Возможно, вам будет полезна документация разработчика панели по настройке квот.

Настройка через панель управления Hestia Control Panel

В бесплатной панели управления Hestia Control Panel для включения квот нужно использовать плагин File System Disk Quota. Чтобы его включить, щелкните значок шестеренки справа вверху, затем щелкните кнопку Configure и раскройте блок Plugins (рис. 2).

Рис. 2. Блок Plugins в панели Hestia Control Panel

Рис. 2. Блок Plugins в панели Hestia Control Panel

Убедитесь, что в меню File System Disk Quota выбрана строка Yes.

Чтобы задавать различные квоты для разных пользователей, нужно создать необходимое количество пакетов (Package), указав в них нужные значения квот.

Для добавления пакета откройте список пользователей при помощи кнопки USERS, щелкните кнопку Packages, а затем — кнопку Add Package.

При добавлении пакета укажите нужное значение квоты в поле Quota (рис. 3).

Рис. 3. Указание квоты в пакете панели Hestia Control Panel

Рис. 3. Указание квоты в пакете панели Hestia Control Panel

Далее щелкните кнопку Save для сохранения изменений.

Настройка вручную для Debian

Прежде всего, обновите пакеты и установите пакет quota:

# apt update
# apt install quota

Проверьте версию установленного пакета:

# quota --version
Quota utilities version 4.06.
…

Далее отредактируйте файл /etc/fstab при помощи любого текстового редактора, например vim:

# vim /etc/fstab

Найдите в этом файле строку раздела /, для которого нужно добавить квоты:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/vda3       /               ext4    errors=remount-ro 0       1
/dev/vda2       /boot           ext2    defaults        0       2

Затем добавьте «,usrquota,grpquota» без пробела, как это показано ниже: 

/dev/vda3       /               ext4    errors=remount-ro,usrquota,grpquota 0       1
/dev/vda2       /boot           ext2    defaults        0       2

Сохраните файл /etc/fstab и перемонтируйте файловую систему:

# mount -o remount /

Убедитесь, что при монтировании файловой системы добавились нужные нам опции:

~# cat /proc/mounts | grep ' / '
/dev/vda3 / ext4 rw,relatime,quota,usrquota,grpquota,errors=remount-ro 0 0

Далее запустите команду quotacheck, которая создаст файлы /aquota.user и /aquota.group, предназначенные для хранения информации об ограничениях и использовании файловой системы:

# quotacheck -ugm /

Проверьте, что файлы создались:

# ls -lh / | grep aquota
-rw-------   1 root root 6.0K Aug  4 15:12 aquota.group
-rw-------   1 root root 6.0K Aug  4 15:12 aquota.user

Если все хорошо, включите квоты:

# quotaon -v /
/dev/vda3 [/]: group quotas turned on
/dev/vda3 [/]: user quotas turned on

Чтобы установить квоты, например, для пользователя quotausr, введите такую команду:

# setquota -u quotausr 100M 120M 0 0 /

Эта команда установит для пользователя quotausr квоту 100 Мбайт и лимит 120 Мбайт.

Проверьте, что квота и лимит были установлены:

# quota -vs quotausr
Disk quotas for user quotausr (uid 1000):
Filesystem   space   quota   limit   grace   files   quota   limit   grace
/dev/vda3     16K    100M    120M               4       0       0

Более подробное руководство по настройке квот вы найдете здесь.

Настройка журналируемых квот

При включении квот командой quotaon на консоли может появиться следующее сообщение:

quotaon: Your kernel probably supports ext4 quota feature but you are using external quota files. Please switch your filesystem to use ext4 quota feature as external quota files on ext4 are deprecated.

Оно говорит, что вам нужно настроить так называемые журналируемые квоты. Они хороши тем, что после аварийного завершения работы ОС не нужно запускать проверку квот вручную.

Для настройки журналируемых квот добавьте в файл /etc/fstab строку (без пробелов) «,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0»:

/dev/vda3       /               ext4    errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0       1
/dev/vda2       /boot           ext2    defaults        0       2

Если ранее были созданы файлы /aquota.user и /aquota.group, удалите их:

# rm /aquota.user
# rm /aquota.group

Перемонтируйте корневой раздел и запустите проверку квот::

# mount -o remount /
# quotacheck -avugm

При первом запуске вы получите предупреждающие сообщения, которые можно игнорировать:

quotacheck: Your kernel probably supports ext4 quota feature but you are using external quota files. Please switch your filesystem to use ext4 quota feature as external quota files on ext4 are deprecated.
quotacheck: Scanning /dev/vda3 [/] done
quotacheck: Cannot stat old user quota file //aquota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //aquota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file //aquota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //aquota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Checked 5029 directories and 42224 files
quotacheck: Old file not found.
quotacheck: Old file not found.

Далее включите квоты:

# quotaon -avug
quotaon: Your kernel probably supports ext4 quota feature but you are using external quota files. Please switch your filesystem to use ext4 quota feature as external quota files on ext4 are deprecated.

Опять игнорируйте предупреждающие сообщения, но убедитесь, что квоты включены:

/dev/vda3 [/]: group quotas turned on
/dev/vda3 [/]: user quotas turned on

Далее, как и при работе с обычными квотами, установите квоты для пользователя и проверьте, что они успешно установились:

# setquota -u quotausr 100M 120M 0 0 /
# quota -vs quotausr
Disk quotas for user quotausr (uid 1000):
Filesystem   space   quota   limit   grace   files   quota   limit   grace
/dev/vda3     16K    100M    120M               4       0       0

Вы можете также обратиться к следующей инструкции.

Однако не создавайте вручную файлы  /aquota.user и /aquota.group, как там рекомендуется. Эти файлы будут созданы автоматически командой quotacheck.

Ручная проверка использования квот

Чтобы проверить использование квот вручную, используйте команду repquota:

# repquota -s /
*** Report for user quotas on device /dev/vda3
Block grace time: 7days; Inode grace time: 7days
                        Space limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   1496M      0K      0K          44653     0     0
man       --   1688K      0K      0K            160     0     0
_apt      --     12K      0K      0K              3     0     0
ntp       --     12K      0K      0K              3     0     0
zabbix    --     72K      0K      0K              8     0     0
quotausr  --     16K    100M    120M              4     0     0

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

Обратите внимание, что здесь выводятся значения для так называемой мягкой (soft) и жесткой (hard) квот. 

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

Команда repquota с параметрами -v и -g показывают все квоты, в том числе для групп, даже если квоты не используются:

# repquota -v -g /
*** Report for group quotas on device /dev/vda3
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      -- 1493712       0       0          44605     0     0
adm       --    2600       0       0             26     0     0
tty       --      76       0       0              3     0     0
mail      --      28       0       0              2     0     0
man       --    1688       0       0            160     0     0
shadow    --     168       0       0              7     0     0
utmp      --    1828       0       0              4     0     0
staff     --       8       0       0              2     0     0
systemd-journal -- 32780   0       0              3     0     0
crontab   --      48       0       0              2     0     0
messagebus --     52       0       0              1     0     0
ssh       --     348       0       0              1     0     0
ntp       --      12       0       0              3     0     0
zabbix    --      72       0       0              8     0     0
quotausr  --      16       0       0              4     0     0

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 15
Used average: 15.000000

Если добавить параметр -p, то команда repquota будет показывать период времени grace, в течение которого система будет предупреждать пользователя о переполнении квоты, но не ограничивать его:

# repquota -c -v -p -g /
*** Report for group quotas on device /dev/vda3
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      -- 1493712       0       0      0   44605     0     0      0
adm       --    2608       0       0      0      26     0     0      0
tty       --      76       0       0      0       3     0     0      0
mail      --      28       0       0      0       2     0     0      0
man       --    1688       0       0      0     160     0     0      0
shadow    --     168       0       0      0       7     0     0      0
utmp      --    1832       0       0      0       4     0     0      0
staff     --       8       0       0      0       2     0     0      0
systemd-journal -- 32780   0       0      0       3     0     0      0
crontab   --      48       0       0      0       2     0     0      0
messagebus --     52       0       0      0       1     0     0      0
ssh       --     348       0       0      0       1     0     0      0
ntp       --      12       0       0      0       3     0     0      0
zabbix    --      72       0       0      0       8     0     0      0
quotausr  --      16       0       0      0       4     0     0      0

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 15
Used average: 15.000000

Параметр -c включит кэширование. Более подробное описание параметров программы repquota можно найти здесь.

Программа для мониторинга квот check_quota.pl с помощью Zabbix

Чтобы автоматически контролировать использование дисковых квот с помощью Zabbix, мы подготовили программу check_quota.pl.

Эта программа не пытается отслеживать квоты для каждого пользователя. Вместо этого она получает общий список квот и определяет максимальное использование квоты в процентах по всей файловой системе.

Предполагается, что если какой-либо пользователь приблизился к переполнению жесткой квоты, то системный администратор получает сообщение об этом от Zabbix. Далее он вручную с помощью панели ISPmanager проверяет «провинившегося» пользователя и увеличивает ему квоту, чтобы сайт продолжил свою работу.

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

Практика показала, что этот способ вполне себя оправдывает. Автоматическая обработка  переполнения квоты едва ли возможна, так как необходимо обсуждение возникшей ситуации с клиентом.

Инициализация программы check_quota.pl

В процессе инициализации программа check_quota.pl получает параметры командной строки, определяет версию ОС (Linux или FreeBSD), пути для запуска утилит zabbix_sender и repquota, а также задает параметры запуска для repquota:

my $zabbix_server_ip = $ARGV[0];
my $hostname = $ARGV[1];
if($ARGV[2] eq 'debug') { $debug = 1; } else { $debug = 0; }
if($^O eq 'linux')
{
  $zabbix_sender = '/usr/bin/zabbix_sender';
  $bin_repquota = '/usr/sbin/repquota';
  $cmd = "$bin_repquota -c -v -p -g /";
}
elsif($^O eq 'freebsd')
{
  $zabbix_sender = '/usr/local/bin/zabbix_sender';
  $bin_repquota = '/usr/sbin/repquota';
  $cmd = "$bin_repquota -v -g /";
}
else
{
  print "nUnsupported OS: $^O";
}

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

Для получения информации об использовании квот программа запускает утилиту repquota:

my @rqout = ();
@rqout = split /n/, `$cmd`;

Результаты обрабатываются в цикле:

my $max_quota_use=0;
foreach my $line (@rqout)
{
   my @dat = split /s+/, $line;
   next if (($#dat < 9) or ($dat[4] !~ /^d+/));
   my ($quotaname, $quota_status, $quota_inuse, $quota_softlimit, $quota_hardlimit,$quota_grace) = ( $dat[0], $dat[1], $dat[2], $dat[3], $dat[4], $dat[5] );
   if ($quotaname =~ /#/)
   {
     $quotaname =~ s/#//g;
     $quotaname = "${quotaname}";
   }
   my $quotaname_perfdata = $quotaname; $quotaname_perfdata =~ s/^uid /uid/g;
   my $percent;
   if ($quota_hardlimit != 0)
   {
      $percent = int(($quota_inuse * 100) / $quota_hardlimit);
   }
   else
   {
     $percent=0;
   }
   if($percent != 0)
   {
     if($max_quota_use < $percent) { $max_quota_use = $percent; }
   }
}

Максимальное значение использованной квоты, выраженной в процентах, сохраняется в переменной max_quota_use.

Отправка результатов на серверы Zabbix

Чтобы отправить результат, а именно максимальное значение использованной квоты на серверы Zabbix, программа запускает в цикле утилиту zabbix_sender:

my $zabbix_item_key = 'quota.key';
my @zabbix_server_ip_array = split(',', $zabbix_server_ip);
foreach my $server_ip (@zabbix_server_ip_array)
{
  my $trap_cmd = $zabbix_sender.' -vv -z '.$server_ip.' -s "'.$hostname.'" -k '.$zabbix_item_key.' -o '.$max_quota_use;
  my @trapout = ();
  @trapout = split /n/, `$trap_cmd`;
}

Отправка выполняется на серверы, адреса IP которых были заданы в командной строке при запуске программы.

Задание crontab для запуска программы check_quota.pl

Программу check_quota.pl нужно запускать периодически как задание crontab с правами пользователя root:

*/11 * * * *    /usr/bin/perl /home/frolov/zabbix_quota/check_quota.pl [Zabbix_IP_1], [Zabbix_IP_2] [Hostname

Здесь программа запускается каждые 11 минут. Вы, конечно, можете задать другой график запуска программы в зависимости от ваших потребностей.

В качестве параметров программе передается список адресов IP серверов Zabbix, разделенных запятой, а также имя хоста, как оно определено на серверах Zabbix.

Шаблон для Zabbix

Для программы check_quota.pl мы подготовили шаблон, который можно загрузить по этому адресу.

В шаблоне определен один ключ quota.key (рис. 4).

Рис. 4. Ключ quota.key

Рис. 4. Ключ quota.key

Также в этом шаблоне определены два триггера (рис. 5).

Рис. 5. Триггеры в шаблоне программы check_quota.pl

Рис. 5. Триггеры в шаблоне программы check_quota.pl

Первый из этих триггеров срабатывает, когда максимальное использование квоты достигло 90% или более. Этот триггер отмечен как серьезный (High), так как переполнение квоты требует срочного вмешательства системного администратора.

Второй триггер срабатывает, если данные о текущем использовании квот не поступают полтора часа или дольше. Как правило, такое бывает при неправильной настройке задания crontab или при наличии других ошибок в настройке сервера. Здесь важность не так велика (Warning), и системный администратор может действовать в плановом, а не срочном порядке. 

Автор: Александр Фролов.


НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

A few years ago we moved from Nagios to Zabbix for our server monitoring needs. I wasn’t a big fan of Nagios, finding it a pain to manage with its myriad configuration files. It’s probably gotten better since I last toyed with it but since we moved to Zabbix I haven’t had much reason to look at Nagios again.

I also try to use SNMP monitoring for everything. SNMP is widely supported – all sorts of hardware has SNMP support, and with the net-snmp package you can pretty easily create your own SNMP-monitorable stuff on Linux. Since almost all of our stuff runs on Linux this has worked out pretty well, but our Exchange server is probably going to be running on Windows for the foreseeable future. Windows has SNMP support, it’s just not on by default. However, even when it’s enabled it doesn’t have the simple “dskPercent” monitoring I’ve come to know and love with net-snmp on Linux, which simply tells you how full a given disk is as a percent. This makes it easy to set alerts when a disk reaches 80% full.

On Windows I found these objects that can be used to get something similar:

[evan@monitoring02 14:41:24 ~]$ snmpwalk -v 2c -c community 192.168.1.20 | grep -i storage
HOST-RESOURCES-MIB::hrStorageIndex.1 = INTEGER: 1
HOST-RESOURCES-MIB::hrStorageIndex.2 = INTEGER: 2
HOST-RESOURCES-MIB::hrStorageIndex.3 = INTEGER: 3
HOST-RESOURCES-MIB::hrStorageIndex.4 = INTEGER: 4
HOST-RESOURCES-MIB::hrStorageIndex.5 = INTEGER: 5
HOST-RESOURCES-MIB::hrStorageIndex.6 = INTEGER: 6
HOST-RESOURCES-MIB::hrStorageType.1 = OID: HOST-RESOURCES-TYPES::hrStorageRemovableDisk
HOST-RESOURCES-MIB::hrStorageType.2 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.3 = OID: HOST-RESOURCES-TYPES::hrStorageCompactDisc
HOST-RESOURCES-MIB::hrStorageType.4 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.5 = OID: HOST-RESOURCES-TYPES::hrStorageVirtualMemory
HOST-RESOURCES-MIB::hrStorageType.6 = OID: HOST-RESOURCES-TYPES::hrStorageRam
HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: A:
HOST-RESOURCES-MIB::hrStorageDescr.2 = STRING: C: Label:  Serial Number b78d19
HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: D: Label:EXCH201064  Serial Number xxxxxxxx
HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: E: Label:Exchange2010  Serial Number xxxxxxxx
HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: Virtual Memory
HOST-RESOURCES-MIB::hrStorageDescr.6 = STRING: Physical Memory
HOST-RESOURCES-MIB::hrStorageAllocationUnits.1 = INTEGER: 0 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.2 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.3 = INTEGER: 2048 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.4 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.5 = INTEGER: 65536 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.6 = INTEGER: 65536 Bytes
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageSize.2 = INTEGER: 10459647
HOST-RESOURCES-MIB::hrStorageSize.3 = INTEGER: 546570
HOST-RESOURCES-MIB::hrStorageSize.4 = INTEGER: 104824319
HOST-RESOURCES-MIB::hrStorageSize.5 = INTEGER: 393172
HOST-RESOURCES-MIB::hrStorageSize.6 = INTEGER: 196600
HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageUsed.2 = INTEGER: 5885720
HOST-RESOURCES-MIB::hrStorageUsed.3 = INTEGER: 546570
HOST-RESOURCES-MIB::hrStorageUsed.4 = INTEGER: 44650892
HOST-RESOURCES-MIB::hrStorageUsed.5 = INTEGER: 166057
HOST-RESOURCES-MIB::hrStorageUsed.6 = INTEGER: 152902

I thought initially that the hrStorageUsed and hrStorageSize values were being reported in bytes, but according to this MSDN article, the units are reported in “allocation units,” which I assume are being reported under hrStorageAllocationUnits, so you just need to multiply the values by the allocation units.

In Zabbix, I check hrStorageUsed every 15 minutes as “disk_1_used”. I check hrStorageSize every 2 hours (since the actual size of the disk/partition isn’t likely to change that often) as “disk_1_size”. To calculate the percentage, I created a “Calculated” item with this formula:

100*(last("disk_1_used") / last("disk_1_size"))

Windows disk usage percent

Windows disk usage percent

The values for disk_1_used and disk_1_size are in Storage Allocation Units, but since this is a percentage that doesn’t matter. However, I do also like to get an idea of the actual disk space being consumed; luckily this is also relatively easy to obtain in Zabbix using Calculated items. I monitor hrStorageAllocationUnits as “disk_1_allocunit” (every 7200 seconds since this too is unlikely to change much) and then the formula for the calculated used disk space is simply:

last("disk_1_used") * last("disk_1_allocunit")

Windows disk used (bytes)

Windows disk used (bytes)

Once all the work is done, here’s what the result looks like:

Zabbix SNMP monitored Windows disk items

Zabbix SNMP monitored Windows disk items

When I log in to the actual machine (my vCenter VM in this case) and check disk usage, the numbers match what Zabbix’s calculated values show, though Zabbix seems to be reporting values in “mebibytes” rather than “megabytes”:

Actual Windows disk usage

Actual Windows disk usage

I created a template in Zabbix which monitors these data for disks 1-5 and then applied it to all Windows servers; now I just need to apply some alert triggers and mission accomplished.

Срабатывает тригер в Zabbix:

Решение: Если у вас старые диски, то вполне возможно, что это у них данное значение может считаться нормальным, поэтому его можно увеличить путем изменения макроса для конкретного диска:

{$VFS.DEV.READ.AWAIT.WARN:«sdс»}

и

{$VFS.DEV.WRITE.AWAIT.WARN:«sdс»}

Но что бы убедиться, что триггер появляется не случайно можно запустить команду указанную ниже и посмотреть параметр tps:

Изменение настройки оповещений о нехватке свободного места на диске при мониторинге Windows.

Проблема: Есть VPS сервер, у которого диск забит уже давненько больше 80% и пока этого хватает, но заббикс, со стандартным шаблоном, присылает уведомление когда видит, что свободного места осталось 20%.

Решение:

Макросы которые отвечают за данное оповещение:

{$VFS.FS.PUSED.MAX.WARN}

{$VFS.FS.PUSED.MAX.CRIT}

  • zabbix1

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

{$VFS.FS.PUSED.MAX.CRIT:«C:»}

и

{$VFS.FS.PUSED.MAX.WARN:«C:»}

Содержание

  1. ZABBIX – Мониторинг Windows Filesystem через FSNAME и FSTYPE
  2. Как настроить мониторинг Windows FileSystem через FSNAME в ZABBIX?
  3. Мониторинг дискового пространства активным Zabbix-агентом. OLD.
  4. Замечание!
  5. Лирическое отступление.
  6. Лирическое наступление.
  7. “Амбула”.
  8. 1. Устанавливаем на подопечный компьютер Zabbix-агента:
  9. 2. Размещаем в папке C:zabbixscripts простенький VBS-скрипт,
  10. 3. Перезапускаем службу zabbix-агента и проверяем, что наши пользовательские параметры работают правильно.
  11. 4. Теперь идём в web-интерфейс вашего Zabbix-сервера и создаём новый шаблон с именем Win_SysDrv_Monitoring.
  12. 5. Назначаем подопечному компьютеру созданный нами шаблон и нажимаем кнопку “обновить”.
  13. 6. Проверяем работу на текущем этапе.
  14. 7. Настраиваем отправку данных по расписанию.
  15. 8. Окончательная проверка.
  16. Аренда серверов.
  17. 1С:Предприятие “в облаке”.
  18. IP-телефония в офис.
  19. Zabbix + Iostat: мониторинг дисковой подсистемы
  20. Мониторинг производительности дисковой подсистемы при помощи zabbix и block stat
  21. Небольшое отступление
  22. Мониторинг дисков в zabbix
  23. Утилизация дисковой подсистемы
  24. Время обработки запроса
  25. Пропускная способность
  26. Количество операций ввода-вывода в секунду
  27. Заключение
  28. Zabbix: LLD-мониторинг дисков без UserParameter и скриптов на агентах
  29. Настройка агента
  30. Smartmontools
  31. Скрипт
  32. Шаблон
  33. Видео

ZABBIX – Мониторинг Windows Filesystem через FSNAME и FSTYPE

Zabbix мониторинг свободного места на диске windowsДолгое время мы не публиковали статей по Zabbix-у и не делали ничего по мониторингу через FSNAME и FSTYPE. Связано это с тем, что у нас было много еще задумок, которые мы смогли реализовать. Но теперь у нас есть время, и мы готовы подарить вам целый гайд на тему – Как мониторить Windows FileSystem через FSNAME.

Как настроить мониторинг Windows FileSystem через FSNAME в ZABBIX?

Для начала небольшой обзор: этот тип мониторинга относится к низкоуровневому обнаружению. Оно позволяет автоматически создавать элементы данных, триггеры и графики для различных объектов. Например необходимо мониторить Windows FileSystem и свободное место на дисках. Чтобы использовать #FSNAME нам необходимо проделать ряд действий. Давайте начнем.

Zabbix мониторинг свободного места на диске windows

Zabbix мониторинг свободного места на диске windows

На данной странице нажимаем кнопку: Создать правило обнаружения

На появившейся странице заполняем поля по стандарту. Особое внимание необходимо уделить полю “Ключ”. В него обязательно нужно вписать vfs.fs.discovery. Так мы указываем, что ключу необходимо опрашивать файловые системы узла сети.

Переходим на вкладку “Фильтры”, и здесь уже находим то, что нам необходимо. Нам необходим макрос <#FSNAME>. В первую строчку пишем следующие значения(фигурные скобки тоже копируем, кому необходимо):
<#FSNAME>совпадает/matshec ^C|^D|^E

Данный способ позволяет нам мониторить диски C;D;E; и сразу же к ним обращаться, если точнее, то значения описанные в поле напротив макроса это регулярные выражения. Подробнее о них вы можете узнать из гугла.

Фильтрация возможна по типам файловой системы через макрос <#FSTYPE>например, “^ext|^reiserfs”. Помимо этого есть специально разработанный под Windows макрос, позволяющий фильтровать тип самого диска <#FSDRIVETYPE>например, “fixed”.

Нажимаем кнопку Добавит. Далее нас переносит обратно на страницу настройки правил обнаружения. Как только правило будет создано, нам необходимо создать прототип элемента данных этого правила со следующими параметрами:

Zabbix мониторинг свободного места на диске windows

Zabbix мониторинг свободного места на диске windows

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

Источник

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

Замечание!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

“Амбула”.

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

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

LogFile=c:zabbixzabbix_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

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

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

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

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

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

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

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

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

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

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

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

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

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

Zabbix мониторинг свободного места на диске windows

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

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

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

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

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

Zabbix мониторинг свободного места на диске windows

Zabbix мониторинг свободного места на диске windows

Zabbix мониторинг свободного места на диске windows

Zabbix мониторинг свободного места на диске windows

Zabbix мониторинг свободного места на диске windows

Zabbix мониторинг свободного места на диске windows

Zabbix мониторинг свободного места на диске windows

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

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

Zabbix мониторинг свободного места на диске windows

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

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

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

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

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

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

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

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

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

C:WindowsSystem32cscript.exe C:zabbixscriptsWinDriveInfo.vbs %SystemDrive% FreeSpace TRAP

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

C:WindowsSystem32cscript.exe C:zabbixscriptsWinDriveInfo.vbs %systemdrive% TotalSize TRAP

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

C:WindowsSystem32cscript.exe C:zabbixscriptsWinDriveInfo.vbs %SystemDrive% PercentFreeSpace TRAP

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

Zabbix мониторинг свободного места на диске windows

ВАЖНО.

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

ТОЖЕ ВАЖНО.

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

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

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

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

Zabbix мониторинг свободного места на диске windows

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

Zabbix мониторинг свободного места на диске windows

Пы.Сы.

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

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

УДАЧИ.

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

Zabbix мониторинг свободного места на диске windows

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

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

Zabbix мониторинг свободного места на диске windows

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

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

Zabbix мониторинг свободного места на диске windows

Источник

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

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

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

Зависимости:
Мониторинг реализован через 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.

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

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

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

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

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

Графики отзывчивости (Latency):
Zabbix мониторинг свободного места на диске windows

График утилизации и IOPS:
Zabbix мониторинг свободного места на диске windows

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

Источник

Мониторинг производительности дисковой подсистемы при помощи zabbix и block stat

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

Сегодня хочу поделиться с сообществом своим текущим опытом на реальном примере zabbix и его связке с block stat.

Zabbix мониторинг свободного места на диске windows

Небольшое отступление

Я являюсь архитектором баз данных и систем хранения очень высокой производительности и больших объемов. Поэтому часто сталкиваюсь с задачами оценки, как те или иные параметры настройки системы влияют на работу СХД, какие железные конфигурации СХД лучше.

Да есть куча утилит, которая позволит протестировать диски, например тот же fio. Но ничто не сравнится с тестированием реальной нагрузкой.

Когда то давным-давно для этих целей использовал iostat, лютый парсер к нему и gnuplot, и даже написал статейку habr.com/post/165855. Скажу я вам – это жутко неудобно.

Куда как удобнее натравить на систему zabbix и мониторить. А к zabbix можно прикрутить модную Grafana и мониторить красиво. Сразу скажу – выбор zabbix скорее исторический: «потому что он уже был».

Мониторинг дисков в zabbix

Справедливости ради скажу, что в zabbix уже есть встроенные ключи vfs.dev.*, но увы очень мало: скорость чтения и записи, объем.

Практика показывает что ключевые метрики по которым можно оценивать дисковую подсистему это:

Все эти метрики есть в iostat. Но как их положить в zabbix?

Легкое гугление приводит нас к различным парсерам iostat, в том числе и здесь.

Но мне по душе другой вариант, а именно парсинг вывода /sys/class/block/*/stat

Данные в zabbix мы будем собирать при помощи zabbix-agent, создав пользовательские ключи. Для этого в /etc/zabbix/zabbix_agentd.d нужно создать файлик userparameter_custom.vfs.conf примерно со следующим содержимым:

В этом файлике статистики всего 11 колонок, посмотреть их описание можно вот тут.

Колонка №10 это io_tics — количество миллисекунд затраченным устройством на ввод вывод. Как почти все параметры — эта цифра является аккумулятором и постоянно возрастает. Как же получить из них привычные метрики.

Утилизация дисковой подсистемы

Чтобы получить эту цифру — надо взять значение 10 колонки файла статистики и запомнить его в zabbix как скорость изменения в секунду, не забыв умножить на 0.1 так как значение в статистике в миллисекундах, а нам нужны проценты.

Zabbix мониторинг свободного места на диске windows

Zabbix мониторинг свободного места на диске windows

Аналогичным образом можно посчитать нагрузку записью/чтением (колонки write_ticks / read_ticks).

Время обработки запроса

Эта метрика аналогична r_svctime и w_svctime для записи и чтения соответственно. По сути это усредненное время обработки запросов за интервал между опросами.

Данная метрика чуть посложнее. Рассмотрим на примере запросов на запись.

Для этого нам понадобится создать три ключа:

Пропускная способность

Метрика показывающая с какой скоростью данные были записаны или прочитаны

Для этой метрики используются колонки №3 read sectors и №5 write sectors. Значение сколько было прочитано или записано «секторов». Точно так же в zabbix сохраняем как изменение за секунду.

Количество операций ввода-вывода в секунду

Эта метрика — те самые пресловутые IOPS

Самая простая метрика — мы ее уже записывали для подсчета svc time это значение колонок №5 write I/Os и №1 read I/Os также сохраненные как скорость в секунду.

Заключение

Этих метрик мне как правило достаточно для того чтобы я мог делать обоснованные выводы. Конечно это не все цифры которые можно получить из файла статистики. Например там есть и число текущих обрабатываемых запросов, и количество запросов которые были объеденены. Но полагаю при необходимости вам не составит труда добавить их по аналогии с описанным.
И да не претендую на авторство — сам метод был когда-то давно загуглен, но за давностью лет ссылки конечно затерялись.

Увы NDA заставляет кое-что подчистить из них, но надеюсь на работоспособность шаблона это не повлияет.

А в шапке скриншот из Grafana прикрученной поверх zabbix — демонстрирующий реальные цифры с одной из тестовых инсталляций.

Источник

Zabbix: LLD-мониторинг дисков без UserParameter и скриптов на агентах

В предыдущей статье я описал низкоуровневый мониторинг дисков для Windows-машин. Считаю, что статья получилась достаточно успешная. Поэтому пришло время ее фактически уничтожить. Ниже будет описан универсальный прием для Windows- и Linux-машин, для которых вообще не нужны скрипты и UserParameter’ы.

Идея простая: все необходимое от smartmontools Zabbix-сервер будет получать через внешнюю обработку и zabbix_get, парсить и передавать далее в зависимые элементы (появились в Zabbix 3.4). Такие образом не только сокращается количество обращений к наблюдаемому серверу, но и не расходуются его ресурсы, так как парсинг происходит на стороне Zabbix-сервера.

Одно ограничение на данный момент: мониторинг дисков только формата /dev/sd*. Формат /dev/csmi*,* (Intel Matrix RAID) не поддерживается ввиду того, что zabbix_get считает запятую вторым аргументом. Поправьте меня, если я ошибаюсь.

Что понадобится для реализации:

Настройка агента

Единственное, что заслуживает здесь внимания, это необходимость раскомментировать строку EnableRemoteCommands = 1, иначе агент не сможет принимать команды.

Smartmontools

Установка тривиальна и рассматриваться не будет, однако для Linux есть одна необходимость: для того, чтобы запуск проходил без sudo, необходимо установить бит SUID на файл smartctl. Для Ubuntu это — sudo chmod u+s /usr/sbin/smartctl.

Скрипт

В зависимости от вашего файла конфигурации zabbix_server.conf этот скрипт нужно положить в соответствующую директорию на Zabbix-сервер. По умолчанию для Ubuntu это — /usr/lib/zabbix/externalscripts. Не забывайте дать на файл права на выполнение — sudo chmod 775 /usr/lib/zabbix/externalscripts/smartctl.sh.

Шаблон

Ниже я постараюсь подробно описать что же происходит на каждом этапе.
Первый этап: обнаружение доступных дисков sd* с помощью внешней проверки smartctl.sh с ключами и discovery. В ответ сервер получает JSON с дисками, на которых активирована функция SMART. Диски без SMART’а или не sd* не выводятся.

Третий этап: Info и Attr разбираются на зависимые элементы с помощью предобработки регулярными выражениями. Это самая простая часть. Собственно, вам только останется подогнать под себя «регулярку».

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

В итоге хотелось бы просто сказать спасибо Алексею alexvl и его команде за качественный продукт, который не перестает радовать новым функционалом. Особенно за предобработку. Жизнь с ней администратору станет гораздо легче.

Источник

Видео

ZABBIX — Мониторинг Windows FileSystem через FSNAME и FSTYPE

ZABBIX - Мониторинг Windows FileSystem через FSNAME и FSTYPE

️Мониторинг Windows в Zabbix.

️Мониторинг Windows в Zabbix.

Zabbix — оповещения через сторонний SMTP

Zabbix - оповещения через сторонний SMTP

Zabbix — мониторинг: установка, настройка и первое использование

Zabbix - мониторинг: установка, настройка и первое использование

BASH-скрипт мониторинга свободного места на диске

BASH-скрипт мониторинга свободного места на диске

7. Как мониторить VMware Esxi c Zabbix-Server ? / VMware ESXI / Zabbix / Monitoring

7.  Как мониторить VMware Esxi c Zabbix-Server ?  /  VMware ESXI / Zabbix / Monitoring

6. Как мониторить Windows в Zabbix 6.0 ? / Windows Server / Zabbix 6

6.  Как мониторить Windows в Zabbix 6.0 ?  / Windows Server / Zabbix 6

Установка zabbix Agent на Windows Server

Установка zabbix Agent на Windows Server

Zabbix — настройка мониторинга сервера

Zabbix - настройка мониторинга сервера

Создании шаблонов для мониторинг SNMP устройств

Создании шаблонов для мониторинг SNMP устройств

zabbix-disk-performance

Zabbix template for collecting IO statistics

With this template you can collect different disk statistics.

Bytes/Sec
Merged
Ops/Sec
Overview

Installation

To install, copy userparameter_diskstats.conf to /etc/zabbix/zabbix_agentd.d/userparameter_diskstats.conf and lld-disks.py to /usr/local/bin/lld-disks.py.
Do not forget to mark it executable.

# diskstats user parameters config
sudo mkdir -p /etc/zabbix/zabbix_agentd.d/
sudo wget https://raw.githubusercontent.com/grundic/zabbix-disk-performance/master/userparameter_diskstats.conf -O /etc/zabbix/zabbix_agentd.d/userparameter_diskstats.conf

# low level discovery script
sudo wget https://raw.githubusercontent.com/grundic/zabbix-disk-performance/master/lld-disks.py -O /usr/local/bin/lld-disks.py
sudo chmod +x /usr/local/bin/lld-disks.py

userparameter_diskstats.conf is user parameters for Zabbix.
lld-disks.py is low level discovery script for enumerating disks of your system.

After that restart zabbix-agent
sudo service zabbix-agent restart

Go to Zabbix’s web interface, Configuration->Templates and import Template Disk Performance.xml.
After that you should be able to monitor disk activity for all your disks.

Please note, that items and graphs are created for each disk/partition individually using discovery script, so do not expect to
find them under usual configuration — they would be in Discovery rules section:

Discovery Rules

Low level discovery will list your RAID devices, and LVM volumes, but LVM
volumes will be mapped with their device-mapper ID, not the pretty names.

Using without User Parameters

Zabbix have standard parameters for monitoring disk io: vfs.dev.read and vfs.dev.write with several types:

  • sectors
  • operations
  • sps
  • ops

Template have this values configured, but disabled by default.

Testing

To test that everything work use zabbix_get (from some time this is in it’s own package, so do apt-get/yum install zabbix-get):

# view result of low level discovery
zabbix_get -s 127.0.0.1 -k "custom.vfs.discover_disks"
# view statistics for 'sda' disk
zabbix_get -s 127.0.0.1 -k "custom.vfs.dev.write.sectors[sda]"

Понравилась статья? Поделить с друзьями:
  • Zabbix агент для windows server 2016
  • Zabbix windows service names for discovery
  • Zabbix windows cannot connect to service manager
  • Zabbix trustedinstaller установщик модулей windows is not running startup type automatic
  • Zabbix server не видит zabbix agent windows