Делюсь полезным шаблоном для мониторинга размера папок в Windows. Мониторим с помощью утилиты du (Disk Usage) от Sysinternals. Шаблон делал сам.
Мониторятся:
- количество файлов
- количество директорий
- размер
- размер на диске
Disk Usage (du) — Sysinternals
Вы сами можете отредактировать список директорий и условия срабатывания триггеров.
Установка шаблона
Качаем архив: zabbix_du.zip.
Импортируем шаблон zbx_du.xml.
В макросах шаблона можно отредактировать периодичность опроса данных:
- {$DU_DISCOVERY_PERIOD} — 6h. Периодичность автообнаружения папок.
- {$DU_HISTORY_PERIOD} — 180d. Срок хранения истории.
- {$DU_REQUEST_PERIOD} — 10m. Периодичность опроса данных.
- {$DU_TREND_PERIOD} — 180d. Срок хранения трендов.
Копируем папку со скриптами в C:\zabbix\scripts. В ней у нас утилита du (Disk Usage):
- C:\zabbix\scripts\du64.exe — утилита по умолчанию
- C:\zabbix\scripts\du.exe — не используется, 32 бит
- C:\zabbix\scripts\du64a — не используется, ARM
Копируем du.conf в папку с пользовательскими переменными, у меня это C:\zabbix\zabbix_agent.conf.d\du.conf. В конфигурации агента этот файл должен быть подключен.
Поскольку мы будем передавать на сервер пути к папкам, в которых есть символ слеша, то мы получим ошибку:
Special characters ", ', ", `, *, ?, [, ], {, }, ~, $, !, &, ;, (, ), <, >, |, #, @, 0x0a" are not allowed in the parameters.
Zabbix — special characters are not allowed in the parameters
Для решения проблемы нужно в конфиге агента включить параметр UnsafeUserParameters=1.
### Option: UnsafeUserParameters
# Allow all characters to be passed in arguments to user-defined parameters.
# 0 - do not allow
# 1 - allow
#
# Mandatory: no
# Range: 0-1
# Default:
# UnsafeUserParameters=0
UnsafeUserParameters=1
Перезапускаем агент:
net stop "Zabbix Agent" && net start "Zabbix Agent"
Подключаем шаблон к хосту, на котором создавали структуру.
Настройка списка папок
Переходим в раздел Items шаблона. Редактируем элемент данных DU directory list, он там один. Переключаемся на вкладку Preprocessing.
Редактируем код JavaScript в Parameters.
Здесь в формате JSON указывается список директорий, которые следует мониторить. И граничные условия срабатывания триггеров, при превышении которых триггер и сработает.
Для примера в шаблоне указаны две папки:
- C:\Windows
- C:\zabbix\scripts
var DirList = {
"data": [
{
"{#DIR}": "C:\\Windows",
"{#MAXSIZE}": "2147483648",
"{#MAXSIZEONDISK}": "2147483648",
"{#MAXFILES}": "1",
"{#MAXDIRECTORIES}": "1"
},
{
"{#DIR}": "C:\\zabbix\\scripts",
"{#MAXSIZE}": "0",
"{#MAXSIZEONDISK}": "0",
"{#MAXFILES}": "0",
"{#MAXDIRECTORIES}": "0"
}
] };
return JSON.stringify(DirList)
- {#DIR} — путь к папке
- Левый слеш нужно дублировать
- В конце левый слеш не ставится
- Допустимы пробелы
- Поддерживается кириллица
- {#MAXSIZE} — максимальный размер, указываются в байтах. 0 — триггер отключён.
- {#MAXSIZEONDISK} — максимальный размер на диске, указываются в байтах. 0 — триггер отключён.
- {#MAXFILES} — максимальное количество файлов. 0 — триггер отключён.
- {#MAXDIRECTORIES} — максимальное количество папок. 0 — триггер отключён.
Меняем список на свой и радуемся. Если нужно для разных серверов мониторить разные папки, то создаём новый шаблон.