Расскажу про очень простой и быстрый способ мониторить размер какой-нибудь директории или файла на сервере с помощью Zabbix. Способов реализации может быть очень много. Предлагаю наиболее простой, который подойдёт для директорий, где проверку надо делать не часто, и она относительно быстро выполнится. В пределах настроенных таймаутов для агента.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Смотрим размер директории в килобайтах:
# du -s /mnt/backup | awk '{print $1}' 57004
Эту цифру надо передать на Zabbix Server. Для этого открываем конфиг zabbix_agentd.conf и добавляем туда:
UserParameter=backup.size, du -s /mnt/backup | awk '{print $1}'
Перезапускаем агента и проверяем работу метрики:
# systemctl restart zabbix-agent # zabbix_agentd -t backup.size backup.size [t|57004]
Отлично, метрика работает. Идём на Zabbix Server, создаём новый шаблон или добавляем айтем напрямую в нужный хост (лучше всегда делать шаблоны). Указываем:
- Имя: DIR Size /mnt/backup (указываете любое)
- Тип: Zabbix agent
- Ключ: backup.size
- Тип информации: целое положительное
- Единицы измерения: B (латинская B - байты)
Единица измерения байты указана для того, чтобы Zabbix понимал, что речь идёт о размере данных. Тогда он будет автоматически их переводить на графиках в килобайты, мегабайты, гигабайты, что удобно. Единственный нюанс, у нас данные приходят не в байтах, а килобайтах, поэтому нам нужно добавить множитель 1024. Для этого переходим в настройках айтема на вкладку Предобработка и добавляем шаг:
- Пользовательский множитель: 1024
Сохраняем айтем. Теперь шаблон можно прикрепить к хосту, где настраивали агента и проверить, как работает. При необходимости можно сделать триггер на этот размер. Не знаю, за чем конкретно вам нужно будет следить, за превышением или наоборот за уменьшением размера, или за изменениями в день. В зависимости от этого настраивается триггер. Там всё интуитивно и по-русски, не трудно разобраться.
По аналогии можно следить за размером отдельного файла. Для этого достаточно указать именно его, а не директорию:
# du -s /mnt/backup/daily/mysql/daily_mysql_2024-03-01_16h13m_Friday.sql.gz 530004
Ну и точно так же добавляем потом в UserParameter новый айтем, настраиваем его на сервере.
Если в UserParameter написать примерно так:
UserParameter=file.size[*], du -s $1 | awk '{print $1}'
То в качестве имени файла можно передавать значения из ключа айтема, который настраивается на сервере. Примерно так будет выглядеть ключ:
file.size[/mnt/backup/daily/mysql/daily_mysql_2024-03-01_16h13m_Friday.sql.gz]
Вот это значение из квадратных скобок приедет на агента вместо * в квадратные скобки, и вместо $1 в консольную команду.. То есть не придётся для каждого файла настраивать UserParameter. Звёздочка будет разворачиваться в переданное значение.
Такой простой механизм передачи в Zabbix любых значений с сервера. Это открывает безграничные возможности для мониторинга всего, что только можно придумать.
Отдельно отмечу, что если директорий у вас много, там много файлов, и частота проверок приличная, то сажайте эти подсчёты на cron, записывайте результаты в файл, а в Zabbix забирайте уже из файла. Так будет надёжнее и проще для сервера мониторинга. Не будет его нагружать лишними соединениями и ожиданиями результата.
Если у кого-то есть вопросы по Zabbix, можете позадавать. Если что, подскажу. Особенно если надо придумать мониторинг какой-нибудь нестандартной метрики. Я чего только не мониторил с ним. От давления жидкости в контуре с контроллера по Modbus протоколу до числа подписчиков в Telegram группе.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Доброго времени суток.
В конфиге Zabbix-agent пишу строчку:
UserParameter=backupstatus[*],type $1
В триггере:
{Template_backup_status:backupstatus["d:\backup\error.log"]} > 0
Ключ источника данных:
backupstatus["d:\backup\error.log"]
Выдает:
Некорректное выражение триггера. Проверьте часть выражения начиная с "{Template_backup_status:backupstatus["d:\backup\error.log"]}>0".
Как быть, если размер папки не меняется за определенное время?
Правильно ли такой expression для триггера?
{hostname:vfs.dir.size[\\172.16.0.1\DATA].last(,1m)}=0
Не очень понял вопрос. Триггер должен сработать, если размер вообще не изменился?
Да, так.
Подскажите пож-та как buntu 24 поставить zabbix-agent ?
в репах нет
apt search zabbix-agent не дает результат
Нужно подключить репозиторий Zabbix:
# wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu24.04_all.deb
# dpkg -i zabbix-release_6.4-1+ubuntu24.04_all.deb
# apt update
Я немного затупил, написав эту статью. В Zabbix с версии 3.4 есть готовые проверки vfs.dir.size и vfs.file.size. Для проверки размера можно использовать их, так что не нужна настройка в агенте. Документация: https://www.zabbix.com/documentation/current/ru/manual/config/items/itemtypes/zabbix_agent
Спасибо. А есть стандартный шаблон по мониторингу размера папок и файлов под Windows?
Шаблона нет, но как я написал в соседнем комментарии, есть готовые проверки для этого. Я про них просто забыл. Так что эту статью стоит рассматривать только как заготовку под любые другие проверки с сервера, которые не поддерживаются стандартными проверками. Конкретно для проверки файлов и директорий можно использовать встроенные средства.