Vfs file size windows

Skip to content

Zabbix — Monitor File Size on Windows

Zabbix — Monitor File Size on Windows

Equipment list

Here you can find the list of equipment used to create this tutorial.

This link will also show the software list used to create this tutorial.

Zabbix Playlist:

On this page, we offer quick access to a list of videos related to Zabbix installation.

Don’t forget to subscribe to our youtube channel named FKIT.

Zabbix Related Tutorial:

On this page, we offer quick access to a list of tutorials related to Zabbix installation.

Tutorial — Zabbix Monitor Windows File Size

Now, we need to access the Zabbix server dashboard and add the Windows computer as a Host.

Open your browser and enter the IP address of your web server plus /zabbix.

In our example, the following URL was entered in the Browser:

• http://35.162.85.57/zabbix

On the login screen, use the default username and default password.

• Default Username: Admin
• Default Password: zabbix

After a successful login, you will be sent to the Zabbix Dashboard.

zabbix dashboard

On the dashboard screen, access the Configuration menu and select the Host option.

zabbix add host

On the top right of the screen, click on the Create host button.

On the Host configuration screen, you will have to enter the following information:

• Host Name — Enter a Hostname to monitor.
• Visible Hostname — Repeat the hostname.
• New group — Enter a name to identify a group of similar devices.
• Agent Interface — Enter the IP address of the Hostname.

Here is the original image, before our configuration.

zabbix linux - Antes

Here is the new image with our configuration.

Zabbix Windows host

Click on the Add button to include this host on the Zabbix database.

On the dashboard screen, access the Configuration menu and select the Host option.

zabbix add host

Locate and click on the hostname that you created before.

In our example, we selected the hostname: WINDOWS-SERVER-01

On the Host properties screen, access the Applications tab.

Zabbix Windows Service Application menu

On the top right part of the screen, click on the Create application button.

Zabbix Windows Service Application

On the Host applications screen, create a new application named: File size.

Zabbix monitor file size application

After finishing the Application creation, access the Items tab.

Zabbix Item Tab

On the top right part of the screen, click on the Create item button.

On the Item creation screen, you need to configure the following items:

• Name: Enter an identification to the Windows file.
• Type: Zabbix Agent
• Key: vfs.file.size[C:\Windows\System32\calc.exe]

• Type of Information: Numeric (float)
• Update interval: 60 Seconds
• Units: b
• Show value: As is
• Application: Directory Size

Zabbix monitor file size windows

Click on the Add button to finish the Item creation and wait 5 minutes.

In order to test your configuration, access the Monitoring menu and click on the Latest data option.

Zabbix Latest data

Use the filter configuration to select the desired hostname.

In our example, we selected the hostname WINDOWS-SERVER-01

Click on the Apply button.

Zabbix Windows service Filter

You should be able to see the results of your Windows file  monitoring using Zabbix.

Zabbix monitoring file size

In our example, the Zabbix server detected that the Calc.exe file has a size of: 933,89 Kb

Congratulations! You have configured the Zabbix file size monitoring feature on Windows.

VirtualCoin CISSP, PMP, CCNP, MCSE, LPIC22022-02-20T03:37:13-03:00

Related Posts

Page load link

This website uses cookies and third party services.

Ok

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

А теперь по порядку.

Дано.

Сферический компьютер в вакууме. Нужно следить за заполненностью системного диска Windows. Предположим, что у нас всё стандартно, поэтому в качестве буквы системного диска используется «C:».

Решение.

При помощи активного агента Zabbix будем собирать 4 параметра диска «C:»:

  • общий размер диска
  • размер занятого места
  • размер свободного места
  • процент свободного места.

На основании этих параметров создадим 4 триггера:

  • Предупреждение. Свободно менее 20%
  • Средняя важность. Свободно менее 10%
  • Высокая важность.  Свободно менее 1 Гб.
  • Чрезвычайная важность. Свободно менее 100 Мб.

И создадим 2 графика:

  • Размер свободного места
  • Размер свободного места в процентах.

Создаём шаблон.

Имя шаблона: Active Computer — SystemDrive
Группа данных: Filesystems
Элементы данных:

  • SystemDriveSizeFree — vfs.fs.size[«c:»,free]
  • SystemDriveSizePFree — vfs.fs.size[«c:»,pfree]
  • SystemDriveSizeTotal — vfs.fs.size[«c:»,total]
  • SystemDriveSizeUsed — vfs.fs.size[«c:»,used]

Триггеры:

  • Предупреждение. Меньше 20% свободно на системном диске компьютера {HOST.NAME} {Active Computer — SystemDrive:vfs.fs.size[«c:»,pfree].last()}<20
  • Средняя .Меньше 10% свободно на системном диске компьютера {HOST.NAME} {Active Computer — SystemDrive:vfs.fs.size[«c:»,pfree].last()}<10
  • Высокая. Меньше 1ГБ свободно на системном диске компьютера {HOST.NAME} {Active Computer — SystemDrive:vfs.fs.size[«c:»,free].last()}<1073741824
  • Чрезвычайная. Меньше 100 Мб свободно на системном диске компьютера {HOST.NAME} {Active Computer — SystemDrive:vfs.fs.size[«c:»,free].last()}<104857600

Теперь то же самое, но в картинках.















Файл с  экспортированным шаблоном можно скачать тут: zbx_export_templates_Active_Computer_SystemDrive.xml

Назначаем шаблон компьютеру

И начинаем получать данные… 🙂

Ура!!!

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


Шаблон с Zabbix 4.2
Проверка доступна на Linux и Windows (на узле активируется нужное правило обнаружения для той или иной ОС)

НОВАЯ ВЕРСИЯ ШАБЛОНА Обновлённая версия Обнаружение папок и запрос их размера LLD Шаблон + Скрипт

Скачать Шаблон + скрипт

Проверка только папок или папки (файлы не проверяются в данном случае если необходимо проверять еще файлы или только файлы нужно переделать скрипт запрос и ключ прототипа элемента)

Для тех у кого При запросе Элемента данных Zabbix агент и Zabbix активный агент — у нас ограничение по времени ответа, т.е. ответ должен успеть придти за указанное время в файле конфигурации сервера и агента, максимальное время 30 секунд! Не успевает придти ответ слишком долгий запрос.
Читаем тут 11 собщение для Linux через скрипт и тут 12 сообщение для Windows через скрипт
Скачать Шаблон + скрипт

Изменения в шаблоне и скрипте V1.0 до V1.3
Добавлена возможность проверять несколько папок на одном хосте прописав в макросе путь через точку с запятой;
Но при этом скрипт некорректно работал на Windows из-за слешей windows в пути \ так как считал спец символами их, а путь нужно передавать сразу готовый в отличии от v1.0 где путь поставлялся из макроса и найденная папка. Слеши прописываются обратные / в пути но проверка проходит (возможно как то сделать в элементе предобработку регулярку для изменения в пути слешей / на \)
Сделан шаблон и скрипт для работы с портом.

Алгоритм: после того как добавили шаблон к узлу в Макросах узла прописываем переменную
Например Макрос {$PATH.DIR} Значение /var/www/owncloud/data пишем путь без кавычек экранировать не нужно, закрывающий слеш так же не нужен он уже есть в скрипте!
по данному пути у нас хранятся папки пользователей будем проверять их размер
Пример нескольких путей Макрос {$PATH.DIR} Значение /var/www/owncloud/data;/root
На Windows Макрос {$PATH.DIR} Значение C:\zabbix;C:\Users;\\IP\Папка

Discovery-size-dir.jpg

Версия с Портом дополнительно в узле нужно прописать порт

Discovery-size-dir-Port.jpg

Пример Макросов на узле

Пример макросов.jpg

Более подробно о работе Команда DIR для Windows

vfs.dir.size[директория,<regex_вкл>,<regex_искл>,<режим>,<макс_глубина>]

Размер директории (в байтах). Целое число директория — абсолютный путь к директории
regex_вкл — регулярное выражение описывающее включаемые файл, директорию и символическую ссылку (если пусто, включаются все файлы, директории и символические ссылки; пустая строка является значением по умолчанию)
regex_искл — регулярное вырыжение описывающее исключаемые файл, директорию и символическую ссылку (если пусто, ничего не исключать; пустая строка является значением по умолчанию)
режим — возможные значения:
apparent (по умолчанию) — получение реальных размеров файлов вместо использования диска (работает как du -sb директория), disk — получение использования диска (работает как du -s -B1 директория). В отличии от du команды, элемент данных vfs.dir.size принимает во внимание скрытые файлы при вычислении размера директории (работает как du -sb .[^.]* * в пределах директории).
макс_глубина — максимальная глубина сканируемых поддиректорий. -1 (по умолчанию) — без ограничения, 0 — без проверки нижестоящих поддиректорий.
Подсчитываются только те директории к которым zabbix пользователь имеет по крайней мере права чтения.

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

При наличии больших директорий или медленных дисков этот элемент данных может превысить время ожидания из-за настройки Timeout в файлах конфигурации агента и сервера/прокси. При необходимости увеличьте эти значения времени ожидания.

Примеры:
⇒ vfs.dir.size[/tmp,log] — вычисление размеров всех файлов в /tmp, которые содержат в своём имени ‘log’
⇒ vfs.dir.size[/tmp,log,^.+\.old$] — вычисление размеров всех файлов в /tmp, которые содержат в своём имени ‘log’, исключая файлы содержащие в своем имени ‘.old’

Ограничение размера файлов зависит от наличия поддержки больших файлов.

Поддерживается начиная с Zabbix 3.4.0.

Другие варианты ключей
vfs.dev.read[<устройство>,<тип>,<режим>]
vfs.dev.write[<устройство>,<тип>,<режим>]
vfs.dir.count[директория,<regex_вкл>,<regex_искл>,<типы_вкл>,<типы_искл>,<макс_глубина>,<мин_размер>,<макс_размер>,<мин_возраст>,<макс_возраст>]
vfs.dir.size[директория,<regex_вкл>,<regex_искл>,<режим>,<макс_глубина>]
vfs.file.cksum[файл]
vfs.file.contents[файл,<кодировка>]
vfs.file.exists[файл]
vfs.file.md5sum[файл]
vfs.file.regexp[файл,регулярное выражение,<кодировка>,<начальная строка>,<конечная строка>,<вывод>]
vfs.file.regmatch[файл,регулярное выражение,<кодировка>,<начальная строка>,<конечная строка>]
vfs.file.size[файл]
vfs.file.time[файл,<режим>]
vfs.fs.discovery
vfs.fs.inode[fs,<режим>]
vfs.fs.size[fs,<режим>]
Более подробно об этих ключах читаем тут

Установка
На Заббикс сервер копируем скрипт size-dir.sh и size-dir-port.sh в папку /usr/local/share/zabbix/externalscripts
Даем права на выполнение скрипта chmod 777 /usr/local/share/zabbix/externalscripts/size-dir.sh
Даем права на выполнение скрипта chmod 777 /usr/local/share/zabbix/externalscripts/size-dir-port.sh
Делаем импорт Шаблона «Обнаружение папок и запрос их размера» и «Обнаружение папок и запрос их размера с Портом»
Цепляем шаблон к узлу
Прописываем путь где будем проверять, в Макрос Узла
Если вариант с портом в макросе порта в узле прописываем порт
Активируем нужное авто обнаружение linux или Windows в узле (для быстроты можно отметить галкой и нажать проверить сейчас)
Проверить на Windows в cmd кодировку командой chcp и в зависимости от кодировки активировать правило cp866 или cp1251 для поддержки Русского наименования папок!
После того как элементы создадутся будет запрошен их размер
Если размер превышает заданные в триггер он сработает
Так же если нет данных элемента более 24 часов Триггер сработает

Для Widows
Проверить на Windows в cmd кодировку командой chcp
Проверить на самом хосте команду
Локально cmd dir /A:D /B «C:\Users»
По сети cmd dir /A:D /B «\\192.168.ххх.ххх\папка» либо имя пк cmd dir /A:D /B «\\Имя-Пк\папка»

Хотя в самом скрипте есть » «при передаче в скрипт, теряется слеш \ Либо экранируем или пишем по 2шт если сеть то 3 \\\
Экранируем кавычки \» так же если нужен \ пишем их несколько \\\
discoverywin — кодировка cp866
discoverywincp — кодировка cp1251
./size-dir.sh 192.168.ХХХ.ХХХ discoverywin ‘C:\Users’ — одинарные кавычки
./size-dir.sh 192.168.ХХХ.ХХХ discoverywin «C:\Users»двойные желательно так проверять
./size-dir.sh 192.168.ХХХ.ХХХ discoverywin C:\\Users — 2 слеша пака с именем с пробелом уже не отработает в таком варианте
Несколько папок через точку с запятой
./size-dir.sh 192.168.ХХХ.ХХХ discoverywin «C:\Users;C:\zabbix»

Запрос по сети (так же если нужно через точку с запятой несколько путей, вместо IP можно использовать имя-пк)
zabbix_get -s IP -k system.run[«dir /B C:\\Users»]
zabbix_get -s IP -k system.run[«dir /A:D /B C:\\Users»]
./zabbix_get -s 192.168.ххх.ххх -k system.run[«dir /A:D /B \»\\\192.168.ххх.ххх\папка\»»]
./size-dir.sh 192.168.ххх.ххх discoverywin «\\\192.168.ххх.ххх\папка»

С портом все аналогично выбирается скрипт для работы с портом и вторая входная это порт один пример
./size-dir-port.sh 192.168.ххх.ххх 10050 discoverywin «\\\192.168.ххх.ххх\docs»

Проверить работу ключа получить размер папки
Так же проверить команду запроса размера папки должен прилететь размер
zabbix_get -s 192.168.XXX.XXX -k ‘vfs.dir.size[C:\Users\Имя-Папки]’

Для путей Linux нет проблем так как используется обратный слеш / экранировать не нужно
Для Linux
Команда bash
ls -F путь-на-папку|grep -E «*/» Показать что лежит по данному пути, найти и вывести все что заканчивается на / — т.е. это будет папка
ls -F «root»|grep -E «*/» Пример для папки root

zabbix_get -s IP -k system.run[«ls -F /var/www/owncloud/data|grep -E \»*/\»»]

Скриптом
Linux
./size-dir.sh IP discovery /var/www/owncloud/data
Если есть пробелы в папке экранируем
./size-dir.sh IP discovery «/var/www/own cloud/data»

Скрипт size-dir.sh

#!/bin/bash
#2020/12/15 v1.3
# Автор Мамзиков Артём Андреевич Описание по скрипту
# Получение списка папок в определенной директории и мониторинг их размера

IFS=$’\n’
JSON=»{\»data\»:[«
SEP=»»

if [[ $2 = «discovery» ]]
then
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=’;’ read -ra sumdir < <(echo $3)
# Печать разделенной строки
for puti in «${sumdir[@]}»
do
get=`zabbix_get -s $1 -k system.run[«ls -F «${puti}»|grep -E \»*/\»»]`
# Запрашиваем папки в owncloud/data циклом
for dirp in $get
do
JSON=$JSON»$SEP\n{\»{#DIRSIZELINUX}\»:\»»${puti}»/$dirp\»}»
SEP=», «
done
done
# Выводим результат в json data
JSON=$JSON»\n]}»
echo -e $JSON
fi

if [[ $2 = «discoverywin» ]]
then
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=’;’ read -ra sumdir < <(echo $3)
# Печать разделенной строки
for puti in «${sumdir[@]}»
do
get=`zabbix_get -s $1 -k system.run[«dir /A:D /B \»»${puti}»\»»]`
# Избавимся от CR Возврат каретки если нужно можно еще от LF Перевод строки \r \n ; главное убрать \r иначе ломает весь вывод
obr=$(echo «${get}»|tr -d ‘\r’)
# Запрашиваем папки циклом
#for dirp in «${obr}»
# Если корректно не отображается русский перекодируем из cp866 в utf8 ,кому нужно можно так же из cp1251 в utf8
for dirp in $(echo «${obr}»|iconv -f cp866 -t utf8)
do
# Ввиду сложности передачи слешей windows, преобразуем в пути \ в обратные слеши /
#put=$(echo «${puti}»|sed ‘s/\\/\//g’)
put=»${puti//\\//}»
# Объединим все в один путь, в одну выходную переменную
JSON=$JSON»$SEP\n{\»{#DIRSIZEWIN}\»:\»»${put}»/$dirp\»}»
SEP=», «
done
done
# Выводим результат в json data
JSON=$JSON»\n]}»
echo -e $JSON
fi

if [[ $2 = «discoverywincp» ]]
then
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=’;’ read -ra sumdir < <(echo $3)
# Печать разделенной строки
for puti in «${sumdir[@]}»
do
get=`zabbix_get -s $1 -k system.run[«dir /A:D /B \»»${puti}»\»»]`
# Избавимся от CR Возврат каретки если нужно можно еще от LF Перевод строки \r \n ; главное убрать \r иначе ломает весь вывод
obr=$(echo «${get}»|tr -d ‘\r’)
# Запрашиваем папки циклом
#for dirp in «${obr}»
# Если корректно не отображается русский перекодируем из cp1251 в utf8
for dirp in $(echo «${obr}»|iconv -f cp1251 -t utf8)
do
# Ввиду сложности передачи слешей windows, преобразуем в пути \ в обратные слеши /
#put=$(echo «${puti}»|sed ‘s/\\/\//g’)
put=»${puti//\\//}»
# Объединим все в один путь, в одну выходную переменную
JSON=$JSON»$SEP\n{\»{#DIRSIZEWIN}\»:\»»${put}»/$dirp\»}»
SEP=», «
done
done
# Выводим результат в json data
JSON=$JSON»\n]}»
echo -e $JSON
fi

Скрипт size-dir-port.sh

#!/bin/bash
#2020/12/15 v1.3
# Автор Мамзиков Артём Андреевич Описание по скрипту
# Получение списка папок в определенной директории и мониторинг их размера

IFS=$’\n’
JSON=»{\»data\»:[«
SEP=»»

if [[ $3 = «discovery» ]]
then
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=’;’ read -ra sumdir < <(echo $4)
# Печать разделенной строки
for puti in «${sumdir[@]}»
do
get=`zabbix_get -s $1 -p $2 -k system.run[«ls -F «${puti}»|grep -E \»*/\»»]`
# Запрашиваем папки в owncloud/data циклом
for dirp in $get
do
JSON=$JSON»$SEP\n{\»{#DIRSIZELINUX}\»:\»»${puti}»/$dirp\»}»
SEP=», «
done
done
# Выводим результат в json data
JSON=$JSON»\n]}»
echo -e $JSON
fi

if [[ $3 = «discoverywin» ]]
then
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=’;’ read -ra sumdir < <(echo $4)
# Печать разделенной строки
for puti in «${sumdir[@]}»
do
get=`zabbix_get -s $1 -p $2 -k system.run[«dir /A:D /B \»»${puti}»\»»]`
# Избавимся от CR Возврат каретки если нужно можно еще от LF Перевод строки \r \n ; главное убрать \r иначе ломает весь вывод
obr=$(echo «${get}»|tr -d ‘\r’)
# Запрашиваем папки циклом
#for dirp in «${obr}»
# Если корректно не отображается русский перекодируем из cp866 в utf8 ,кому нужно можно так же из cp1251 в utf8
for dirp in $(echo «${obr}»|iconv -f cp866 -t utf8)
do
# Ввиду сложности передачи слешей windows, преобразуем в пути \ в обратные слеши /
#put=$(echo «${puti}»|sed ‘s/\\/\//g’)
put=»${puti//\\//}»
# Объединим все в один путь, в одну выходную переменную
JSON=$JSON»$SEP\n{\»{#DIRSIZEWIN}\»:\»»${put}»/$dirp\»}»
SEP=», «
done
done
# Выводим результат в json data
JSON=$JSON»\n]}»
echo -e $JSON
fi

if [[ $3 = «discoverywincp» ]]
then
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=’;’ read -ra sumdir < <(echo $4)
# Печать разделенной строки
for puti in «${sumdir[@]}»
do
get=`zabbix_get -s $1 -p $2 -k system.run[«dir /A:D /B \»»${puti}»\»»]`
# Избавимся от CR Возврат каретки если нужно можно еще от LF Перевод строки \r \n ; главное убрать \r иначе ломает весь вывод
obr=$(echo «${get}»|tr -d ‘\r’)
# Запрашиваем папки циклом
#for dirp in «${obr}»
# Если корректно не отображается русский перекодируем из cp1251 в utf8
for dirp in $(echo «${obr}»|iconv -f cp1251 -t utf8)
do
# Ввиду сложности передачи слешей windows, преобразуем в пути \ в обратные слеши /
#put=$(echo «${puti}»|sed ‘s/\\/\//g’)
put=»${puti//\\//}»
# Объединим все в один путь, в одну выходную переменную
JSON=$JSON»$SEP\n{\»{#DIRSIZEWIN}\»:\»»${put}»/$dirp\»}»
SEP=», «
done
done
# Выводим результат в json data
JSON=$JSON»\n]}»
echo -e $JSON
fi

Группы элементов данных Size-Dir

Авто обнаружение

Авто обнаружение Discovery-size-dir.jpg

Прототип элемента аналогично для windows только другой макрос

Прототип Элемента Discovery-size-dir.jpg

Прототип триггера аналогично для windows только другой макрос

Прототип Триггера Discovery-size-dir.jpg
Пример Windows size-dir.jpg
Пример данные Windows size-dir.jpg

Алгоритм: после того как добавили шаблон к узлу в Макросах узла прописываем переменную
Например Макрос {$PATH.DIR} Значение /var/www/owncloud/data/ пишем путь без кавычек экранировать не нужно, завершающий слеш зависит от скрипта 2 версии!
по данному пути у нас хранятся папки пользователей будем проверять их размер

PATH.DIR-primer

#!/bin/bash
#2020/09/24 v1.0
# Автор Мамзиков Артём Андреевич Описание по скрипту
# Получение списка папок в определенной дириктории и мониторинг их размера

IFS=$’\n’
JSON=»{\»data\»:[«
SEP=»»

if [[ $2 = «discovery» ]]
then
get=`zabbix_get -s $1 -k system.run[«ls -F $3|grep -E \»*/\»»]`
# Запрашиваем папки циклом
for dirp in $get
do
JSON=$JSON»$SEP\n{\»{#DIRSIZELINUX}\»:\»$dirp\»}»
SEP=», «
done
# Выводим результат в json data
JSON=$JSON»\n]}»
echo -e $JSON
fi

if [[ $2 = «discoverywin» ]]
then
get=`zabbix_get -s $1 -k system.run[«dir /A:D /B \»$3\»»]`
# Избавимся от CR Возврат каретки если нужно можно еще от LF Перевод строки \r \n ; главное убрать \r иначе ломает весь вывод
obr=$(echo «${get}»|tr -d ‘\r’)
# Запрашиваем папки циклом
#for dirp in «${obr}»
# Если корректно не отображается русский перекодируем из cp866 в utf8 ,кому нужно можно так же из cp1251 в utf8
for dirp in $(echo «${obr}»|iconv -f cp866 -t utf8)
do
JSON=$JSON»$SEP\n{\»{#DIRSIZEWIN}\»:\»$dirp\»}»
SEP=», «
done
# Выводим результат в json data
JSON=$JSON»\n]}»
echo -e $JSON
fi

if [[ $2 = «discoverywincp» ]]
then
get=`zabbix_get -s $1 -k system.run[«dir /A:D /B \»$3\»»]`
# Избавимся от CR Возврат каретки если нужно можно еще от LF Перевод строки \r \n ; главное убрать \r иначе ломает весь вывод
obr=$(echo «${get}»|tr -d ‘\r’)
# Запрашиваем папки циклом
#for dirp in «${obr}»
# Если корректно не отображается русский перекодируем из cp1251 в utf8
for dirp in $(echo «${obr}»|iconv -f cp1251 -t utf8)
do
JSON=$JSON»$SEP\n{\»{#DIRSIZEWINCP}\»:\»$dirp\»}»
SEP=», «
done
# Выводим результат в json data
JSON=$JSON»\n]}»
echo -e $JSON
fi

Шаблон Discovery-size-dir Обнаружение папок и запрос их размера

Discovery-size-dir
Discovery-size-dir2
Discovery-size-dir3
Discovery-size-dir4
Discovery-size-dir5
Discovery-size-dir6
Discovery-size-dir7

Группа элементов данных Size-Dir
Правило
Имя Linux Обнаружение папок в определенной директории
Тип Внешняя проверка
Ключ size-dir.sh[{HOST.CONN},discovery,{$PATH.DIR}]
Интервал обновления 24h
Период сохранения потерянных ресурсов 30d
Описание Директория где искать задается в Макросе узла
Активировано V

Прототип элемента
Имя Size-Dir-{#DIRSIZELINUX}
Тип Zabbix agent
Ключ vfs.dir.size[{$PATH.DIR}{#DIRSIZELINUX}]
Тип информации Числовой с плавающей точкой
Единица измерения B
Интервал обновления 24h
Группы элементов данных Size-Dir
Описание
Запрос 1 раза в сутки, получаем размер директории в байтах

vfs.dir.size[директория,<regex_вкл>,<regex_искл>,<режим>,<макс_глубина>]

режим — возможные значения:
apparent (по умолчанию) — получение реальных размеров файлов вместо использования диска (работает как du -sb директория),
disk — получение использования диска (работает как du -s -B1 директория). В отличии от du команды, элемент данных vfs.dir.size принимает во внимание скрытые файлы при вычислении размера директории (работает как du -sb .[^.]* * в пределах директории).

макс_глубина — максимальная глубина сканируемых поддиректорий. -1 (по умолчанию) — без ограничения,
0 — без проверки нижестоящих поддиректорий.

пример проверки скрипта

Для Widows
Проверить на самом хосте команду cmd dir /A:D /B «C:\Users»
С Заббикс сервера отправить запрос например C:\Users\
zabbix_get -s IP-проверяемого хоста -k system.run[«dir /A:D /B \»C:\Users\»»]
Хотя в самом скрипте есть » » видимо при передаче в скрипт, теряется слеш \ Либо экранируем или пишем по 2шт если сеть то 3 \\\
./size-dir.sh 192.168.ХХХ.ХХХ discoverywin ‘C:\Users’
./size-dir.sh 192.168.ХХХ.ХХХ discoverywin «C:\Users»
./size-dir.sh 192.168.ХХХ.ХХХ discoverywin C:\\Users

Если ключ не подхватит такой путь делаем 2 макрос для ключа уже без кавычек и двойных слешей

Должный выйти чистые имена папок без пробелов

Так же проверить команду запроса размера папки должен прилететь размер
zabbix_get -s 192.168.XXX.XXX -k ‘vfs.dir.size[C:\Users\Имя-Папки]’

Экранируем кавычки \» так же если нужен \ пишем их несколько \\\

Для Linux
zabbix_get -s IP -k system.run[«ls -F /var/www/owncloud/data/|grep -E \»*/\»»]
Windows
zabbix_get -s IP -k system.run[«dir /B C:\\Users»]

Скриптом
Linux
./size-dir.sh IP discovery /var/www/owncloud/data/
Windows
./size-dir.sh IP discoverywin C:\\

./Имя скрипта $1-первыйвходной параметр переменная $2-второй переменный входной параметр

Триггер
Имя {HOST.NAME}-DIR-{#DIRSIZELINUX}-SIZE-BOLEE>9GB
Важность Средняя
Выражение {Discovery-size-dir:vfs.dir.size[{$PATH.DIR}{#DIRSIZELINUX}].last()}>9663676416 or
{Discovery-size-dir:vfs.dir.size[{$PATH.DIR}{#DIRSIZELINUX}].nodata(25h)}=1

Описание
Объем папки {#DIRSIZELINUX} на {HOST.NAME} более ГБ
Последнее значение: {ITEM.VALUE} {ITEM.LASTVALUE} ({TIME})

Если данных нет 25 часов ошибка

Правило
Имя Windows Обнаружение папок в определенной дириктории
Тип Внешняя проверка
Ключ size-dir.sh[{HOST.CONN},discoverywin,{$PATH.DIR}]
Интервал обновления 24h
Период сохранения потерянных ресурсов 30d
Описание Директория где искать задается в Макросе узла
Активировано

Прототип элемента
Имя Size-Dir-{#DIRSIZEWIN}
Тип Zabbix agent
Ключ vfs.dir.size[{$PATH.DIR}{#DIRSIZEWIN}]
Тип информации Числовой с плавающей точкой
Единица измерения B
Интервал обновления 24h
Группы элементов данных Size-Dir
Описание
Запрос 1 раза в сутки, получаем размер директории в байтах

vfs.dir.size[директория,<regex_вкл>,<regex_искл>,<режим>,<макс_глубина>]

режим — возможные значения:
apparent (по умолчанию) — получение реальных размеров файлов вместо использования диска (работает как du -sb директория),
disk — получение использования диска (работает как du -s -B1 директория). В отличии от du команды, элемент данных vfs.dir.size принимает во внимание скрытые файлы при вычислении размера директории (работает как du -sb .[^.]* * в пределах директории).

макс_глубина — максимальная глубина сканируемых поддиректорий. -1 (по умолчанию) — без ограничения,
0 — без проверки нижестоящих поддиректорий.

Триггер
Имя {HOST.NAME}-DIR-{#DIRSIZEWIN}-SIZE-BOLEE>9GB
Важность Средняя
Выражение {Discovery-size-dir:vfs.dir.size[{$PATH.DIR}{#DIRSIZEWIN}].last()}>9663676416 or
{Discovery-size-dir:vfs.dir.size[{$PATH.DIR}{#DIRSIZEWIN}].nodata(25h)}=1

Описание
Объем папки {#DIRSIZEWIN} на {HOST.NAME} более ГБ
Последнее значение: {ITEM.VALUE} {ITEM.LASTVALUE} ({TIME})

Если нет данных 25 часов ошибка

По мимо декодирования Русского на Windows , выяснилось что формируется не правильный вывод переменной оказалось что это из-за CR Возврат каретки \r пришлось сделать еще одну обработку переменной для удаления возврата каретки.

CR Возврат каретки влияние на вывод в Linux

Преобразование слешей
home_mf=»${home//\\//}»
$ t=’\a\b\c’; echo «${t//\\//}»
/a/b/c

home_mf=»${home//’\’/»/»}»

home_mf=${home//\//\\}
home_mf=${home//\\//}

home_mf=$(printf «%s» «$home» | sed ‘s/\//\\/g’) # вперед к обратной косой черте
home_mf=$(printf «%s» «$home_mf» | sed ‘s/\\/\//g’) # в обратную косую черту

printf «%s\n» «$home_mf» instead of echo «$home_mf»
sed s command, e.g. s,/,\\,g and s,\\,/,g

Попытка сделать регулярку для возврата слешей windows
Замена в MAC адресе как пример но только для точного пути если они разные не подойдет
Найти (\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+) Заменить \1:\2:\3:\4:\5:\6
Найти (\w+):(\w+):(\w+):(\w+):(\w+):(\w+) Заменить \1-\2-\3-\4-\5-\6

Нужно сделать все в шаблоне регулярки в (всю команду тут) и вывести в \1 для всего пути

включает inline модификатор (?i) для поиска соответствия символов “error”:
(?i)error

включает несколько inline модификаторов для поиска соответствия символов после указанной строки
(?<=match (?i)everything(?-i) after this line\n)(?sx).*# мы добавили s модификатор, чтобы разрешить . соответствие символам перехода на новую строку

. Точка. Обозначает любой символ
\ Экранирующий символ. Символы которые экранируются: ^, [, ., $, {, *, (, ), \, +, |, ?, <, >
^ Крышка. Начало строки
$ Конец строки
\d Любая цифра
\D Не цифра
\s Пробел, табуляция, перенос строки
\S Не пробел
\w Любая буква латиницы, цифра, или знак подчёркивания
\W Не латиница, не цифра, не подчёркивание
| Или. Соединяет несколько вариантов
\b Граница слова. Применяется когда нужно выделить, что искомые символы являются словом, а не частью другого слова
\B Не граница слова
\< Начало слова
\> Конец слова
\A Начало текста
\Z Конец текста
* Повторитель. Означает что предшествующий символ может работать 0 и более раз
+ Количество предшествующего не менее 1-го.
? Ограничитель. Не более одного раза
[ ] В квадратных скобках задаются символы к поиску, например [a-яА-Я], или [0-9]
[^ ] Исключает из поиска символы указанные в квадратных скобках
() В круглые скобки заключаются все комбинации с «или» и поиск начала и конца строк
{ } В фигурных скобках указывается точное количество вхождений, например если надо две цифры, то \d{2}, если две или четыре, то \d{2,4}, если четыре и более, то {4,}
\n Новая строка

Заменить точку
Пример. Пример. Пример.
(?:.*?\K symblo ){N}
(?:.*?\K\.){1}
((?:.*?\.){0}.*?)\. замена $1 (на что заменить)
(?:.*?\.)

все комбинации с «или» и поиск начала и конца строк, Не более одного раза
((?:\G(?!\A)|copy\s+»(?=[^»]\.cpy»))[^\\»]*)\\

Если при проверке Элемент данных выдает нет доступа к директории permission denied или путь не найден NOT_FOUND

Тут несколько вариантов:
1. Проверить путь и наличие файла возможно экранирование пути и \

2. Не хватает прав на папки (путь) на сам файл.
Решение: Выдать необходимые права или Сменить пользователя от которого работает Заббикс Агент
Windows в Службе заббикс агента
в Linux пример Запуск Zabbix Agent от Root

3. В конфигурации Заббикс Агента начиная с Zabbix 5.0 system.run
Удаленные команды по-прежнему отключены по умолчанию, но в новых конфигурационных файлах, которые выражаются с помощью нового параметра DenyKey (DenyKey=system.run[*]) черный список, разрешить все AllowKey=system.run[*].

Удаленные команды можно включить, удалив (или закомментировав) ключ DenyKey=system.run[*]
Ранее этот параметр был EnableRemoteCommands = 1, иначе агент не сможет принимать команды.
Параметр EnableRemoteCommands теперь устарел.
Более подробно Поддержка черных и белых списков для метрик на стороне агента

Ключ
Описание Возвращаемое
значение
Параметры Комментарии
agent.hostname
Возвращает имя хоста агента. Строка Возвращает действительное значение hostname агента из файла конфигурации.
Этот элемент данных поддерживается начиная с версии 1.8.13.
agent.ping
Проверка доступности агента. Возвращает ‘1’, если доступен и ничего не возвращает, если недоступен. Может быть использовано как TCP ping. Используйте функцию nodata() для проверки недоступности хоста.
agent.version
Версия Zabbix агента. Строка Пример возвращаемого значения: 1.8.2
kernel.maxfiles
Максимальное количество открытых файлов поддерживаемое ОС. Количество файлов. Целочисленное.
kernel.maxproc
Максимальное количество процессов поддерживаемое ОС. Количество процессов. Целочисленное.
log[файл,<regexp>,<кодировка>,<макс кол-во строк>]
Мониторинг файлов журналов (логов). Журнал файл – полное имя файла
regexp – регулярное выражение для шаблона
кодировка – Идентификатор кодовой страницы
максимальное количество строк – Максимальное количество новых строк в секунду, которое может отправить агент Zabbix серверу или Прокси. Этот параметр заменяет опцию ‘MaxLinesPerSecond’ в zabbix_agentd.conf
Должен быть настроен как Активная проверка.
Например:
log[/home/zabbix/logs/logfile,,,100]
Более подробную информацию смотрите здесь
logrt[имя файла в формате,<regexp>,<кодировка>,<макс кол-во строк>]
Мониторинг файлов журналов (логов) с поддержкой ротации логов. Журнал имя файла в формате – имя файла в формате [абсолютный путь][имя файла в формате регулярного выражения]
regexp – регулярное выражения для шаблона
кодировка – Идентификатор кодовой страницы
максимальное количество строк – Максимальное количество новых строк в секунду, которое может отправить агент Zabbix серверу или Прокси. Этот параметр заменяет опцию ‘MaxLinesPerSecond’ в zabbix_agentd.conf
Должен быть настроен как Активная проверка.
Например:
logrt[“\home\zabbix\logs\^logfile[0-9]{1,3}$”,,,100]
Ротация логов базируется на времени последнего изменения файлов.
Более подробную информацию смотрите здесь
eventlog[имя,<regexp>,<важность>,<источник>,<eventid>,<макс. кол-во строк>]
Мониторинг журналов событий. Log. имя – имя журнала событий
regexp – регулярное выражение
важность – важность события
Параметр может принимать следующие значения: “Information”, “Warning”, “Error”, “Failure Audit”, “Success Audit”
источник – Имя источника
eventid – регулярное выражение
максимальное количество строк – Максимальное количество новых строк в секунду, которое агент может отправить Zabbix Серверу или Прокси. Этот параметр заменяет опцию ‘MaxLinesPerSecond’ в zabbix_agentd.conf
Должен быть настроен как Активная проверка.
Например:
eventlog[Application]

eventlog[Security,,»Failure Audit»,,529|680]

eventlog[System,,»Warning|Error»]

eventlog[System,,,,^1$]

eventlog[System,,,,@TWOSHORT] – здесь регулярное выражение с именем TWOSHORT, определено в веб-интерфейсе с типом результата Результат TRUE и самим выражением ^1$|^70$.

net.if.collisions[if]
Коллизии Out-of-window. Количество коллизий. Целочисленное. if – интерфейс
net.if.in[if,<режим>]
Входящая статистика по сетевому интерфейсу. Целочисленное. if – интерфейс
режим
bytes количество байт (по умолчанию)
packets количество пакетов
errors количество ошибок
dropped количество отброшенных пакетов
Начиная с версии 1.8.6 Zabbix агента поддерживаются мултибайтные имена интерфейса.
\\Примеры:
net.if.in[eth0,errors]
net.if.in[eth0]
Вы должны использовать для этого ключа Дельта (изменение в секунду), чтобы получить статистику по байтам в секунду.
net.if.list
Список сетевых интерфейсов: Тип Состояние IPv4 Описание Строковое Поддерживается Zabbix агентом начиная с версии 1.8.1. Начиная с версии 1.8.6 Zabbix агента поддерживаются мултибайтные имена интерфейса. Отключенные интерфесы не добавляются в список.

Обратите внимание, что включение/отключение некоторых компонентов Windows могут изменить порядок имени интерфейса в Windows.

net.if.out[if,<режим>]
Исходящая статистика по сетевому интерфейсу. Целочисленное. if – интерфейс
режим
bytes количество байт (по умолчанию)
packets количество пакетов
errors количество ошибок
dropped количество отброшенных пакетов
Начиная с версии 1.8.6 Zabbix агента поддерживаются мултибайтные имена интерфейса.
\\Примеры:
net.if.out[eth0,errors]
net.if.out[eth0]
Вы должны использовать для этого ключа Дельта (изменение в секунду), чтобы получить статистику по байтам в секунду.
net.if.total[if,<режим>]
Суммарная входящая и исходящая статистика на сетевом интерфейсе. Целочисленное. if – интерфейс
режим
bytes количество байт (по умолчанию)
packets количество пакетов
errors количество ошибок
dropped количество отброшенных пакетов
Примеры:
net.if.total[eth0,errors]
net.if.total[eth0]
Вы должны использовать для этого ключа Дельта (изменение в секунду), чтобы получить статистику по байтам в секунду.
Обратите внимание отброшенные пакеты поддердивабтся только если both net.if.in и net.if.out работают для отброшенных пакетов на вашей платформе.
net.tcp.dns[<ip>,зона]
Проверяется работает ли сервис DNS. 0 – DNS недоступен
1 – DNS работает
ip – IP адрес DNS сервера (игнорируется)
зона – зона для тестирования DNS
Пример:
net.tcp.dns[127.0.0.1,zabbix.com]

Интернациональные доменные имена не поддерживаются вместо них, пожалуйста, используйте имена IDNA.

net.tcp.dns.query[<ip>,зона,<тип>]
Выполняет запрос на указанный тип записи DNS. В случае успеха возвращает строку символов с типом требуемой информации. ip – IP адрес DNS сервера (игнорируется)
зона – зона для тестирования DNS
тип – Тип записи запроса (по умолчанию SOA)
Пример:
net.tcp.dns.query[127.0.0.1, zabbix.com, MX]
тип может быть одним из:
A, NS, CNAME, MB, MG, MR, PTR, MD, MF, MX, SOA, NULL, WKS, HINFO, MINFO, TXT, SRV

Тип записи SRV поддерживается Zabbix агентом начиная с версии 1.8.6.

Интернациональные доменные имена не поддерживаются вместо них, пожалуйста, используйте имена IDNA.

net.tcp.listen[порт]
Проверяется находится ли указанный TCP порт в состоянии LISTEN. 0 – не находится
1 – находится в состоянии LISTEN
порт – номер порта TCP Пример:
net.tcp.listen[80]

В Linux поддерживается начиная с версии Zabbix агента 1.8.4

net.tcp.port[<ip>,порт]
Проверяет, возможно ли создать TCP подключение на указанный номер порта. 0 – не удалось подключиться
1 – подключение возможно
ip – IP адрес(по умолчанию 127.0.0.1)
порт – номер порта
Пример:
net.tcp.port[,80]может быть использовано для тестирования доступности Веб сервера, запущенного на 80 порту.
Старое название: check_port[*]
Для простого тестирования производительности TCP используйте net.tcp.service.perf[tcp,<ip>,<порт>]
Заметьте, что эти проверки могут привести к возникновению дополнительных сообщений в файлах журналов системных демонов (сессии SMTP и SSH обычно журналируются).
net.tcp.service[сервис,<ip>,<порт>]
Проверяется запущен ли сервис принимает ли он TCP подключения. 0 – сервис недоступен
1 – сервис работает
сервис – один из: ssh, service.ntp, ldap, smtp, ftp, http, pop, nntp, imap, tcp
ip – IP адрес (по умолчанию 127.0.0.1)
порт – номер порта (по умолчанию используется стандартный номер порта для указанного сервиса)
Например:
net.tcp.service[ftp,,45] может быть использовано для проверки доступности FTP сервера на порту 45.
Старое название: check_service[*]
Обратите внимание, что в версиях Zabbix до 1.8.3 следует использовать service.ntp вместо ntp.
Заметьте, что эти проверки могут привести к возникновению дополнительных сообщений в файлах журналов системных демонов (сессии SMTP и SSH обычно журналируются).
Проверки зашифрованных протоколов (таких как IMAP на порту 993 или POP на порту 995) в настоящее время не поддерживаются. В качестве альтернативного способа, пожалуйста, используйте net.tcp.port для этих проверок.
Проверка LDAP через Windows агента в настоящее время не поддерживается.
net.tcp.service.perf[сервис,<ip>,<порт>]
Проверяется производительность сервиса 0 – сервис недоступен
секунды – количество секунд потребовавшихся для подключения к сервису
сервис -один из: ssh, service.ntp, ldap, smtp, ftp, http, pop, nntp, imap, tcp
ip – IP адрес (по умолчанию 127.0.0.1)
порт – номер порта (по умолчанию используется стандартный номер порта для указанного сервиса)
Пример:
net.tcp.service.perf[ssh] может быть использован для проверки скорости ответа SSH сервера.
Старое название: check_service_perf[*]
Обратите внимание, что в версиях Zabbix до 1.8.3 следует использовать service.ntp вместо ntp.
Проверки зашифрованных протоколов (таких как IMAP на порту 993 или POP на порту 995) в настоящее время не поддерживаются. В качестве альтернативного способа, пожалуйста, используйте net.tcp.port для этих проверок.
Проверка LDAP через Windows агента в настоящее время не поддерживается.
net.udp.listen[порт]
Проверяется находится ли указанный UDP порт в состоянии LISTEN. 0 – не находится
1 – находится в состоянии LISTEN
порт – номер порта UDP Пример:
net.udp.listen[68]

В Linux поддерживается начиная с версии Zabbix агента 1.8.4

proc.mem[<имя>,<пользователь>,<режим>,<cmdline>]
Количество выделенной памяти под процесс с указанным именем запущенным под указанным пользователем Использование памяти процессом. имя – имя процесса
пользователь – имя пользователя (по умолчанию все пользователи)
режим – один из: avg, max, min, sum (по умолчанию)
cmdline – фильтр по командной строке
Пример:
proc.mem[,root] – использованная память для всех процессов работающих под пользователем “root”.
proc.mem[zabbix_server,zabbix] – использованная память для всех процессов zabbix_server запущенных под пользователем zabbix
proc.mem[,oracle,max,oracleZABBIX] – максимальное значение использованной памяти процессами запущенными под пользователем oracle и имеющими oracleZABBIX в содержимом командной строки
proc.num[<имя>,<пользователь>,<состояние>,<cmdline>]
Количество процессов с указанным именем имеющим указанное состояние и запущенными под указанным пользователем Количество процессов. имя – имя процесса
пользователь – имя пользователя (по умолчанию все пользователи)
состояние – одно из: all (по умолчанию), run, sleep, zomb
cmdline – фильтр по командной строке
Пример:
proc.num[,mysql] – количество процессов запущенных под пользователем mysql
proc.num[apache2,www-data] – количество процессов apache2 запущенных под пользователем www-data
proc.num[,oracle,sleep,oracleZABBIX] – количество процессов в режиме sleep запущенных под пользователем oracle и имеющими oracleZABBIX в содержимом командной строки
В Windows в качестве аргументов поддерживаются только имя и пользователь.
sensor[устройство,датчик,<режим>]
Чтение аппаратного датчика. устройство – имя устройства (если указывается <режим>, то в этом поле нужно вводить регулярное выражение)
датчик – имя датчика (если указывается <режим>, то в этом поле нужно вводить регулярное выражение)
режим – один из avg, max, min (если этот ключ не указан, устройство и датчик указываются дословно).
Для Linux 2.4 читает /proc/sys/dev/sensors. Например:
sensor[w83781d-i2c-0-2d,temp1]
До версии Zabbix 1.8.4 использовался формат датчика sensor[temp1].

Для OpenBSD читает hw.sensors MIB. Например:
sensor[cpu0,temp0] – температура одного из ЦПУ
sensor[cpu[0-2]$,temp,avg] – средняя температура первого из трех ЦПУ
Поддерживается в OpenBSD начиная с Zabbix 1.8.4.

system.boottime
Штамп времени (timestamp) времени загрузки системы. Целочисленное. Время в секундах.
system.cpu.intr
Ошибки устройства. Целочисленное.
system.cpu.load[<цпу>,<режим>]
Загрузка ЦПУ. Загрузка процессора(ов).
Число с плавающей точкой.
cpu – номер CPU (по умолчанию все ЦПУ, поддерживается только “all”)
режим – один из: avg1 (по умолчанию),avg5 (среднее за последние 5 минут), avg15
Пример:
system.cpu.load[]
Обратите внимание, возвращаемое значение не процентное отношение.
Старое название: system.cpu.loadX
system.cpu.num[<тип>]
Количество ЦПУ. Количество доступных процессоров. тип – один из: online (по умолчанию), max Пример:
system.cpu.num
system.cpu.switches
Переключение контекста. Счетчик переключений контекста. Старое название: system[switches]
system.cpu.util[<cpu>,<тип>,<режим>]
Утилизация ЦПУ. Утилизация процессора в процентном отношении cpu – номер ЦПУ (по умолчанию все ЦПУ)
тип – один из: idle, nice, user (по умолчанию), system, kernel, iowait, interrupt, softirq, steal
режим – один из: avg1 (по умолчанию),avg5 (среднее значение за последние 5 минут), avg15
Старое название: system.cpu.idleX, system.cpu.niceX, system.cpu.systemX, system.cpu.userX
Пример:
system.cpu.util[0,user,avg5]
system.run[команда,<режим>]
Запускает указанную команду на удаленном хосте. Текстовый результат выполнения команды команда – команда для выполнения
режим – один из: wait (по умолчанию ожидание завершения), nowait (без ожидания)
Пример:
system.run[ls -l /] – подробный список файлов в корневой папке.
Примечание:
Для включения этой функциональности, в настройках агента должна быть опция EnableRemoteCommands=1.
system.hostname[<тип>]
Возвращается имя хоста. Строковое значение тип (только для Windows, игнорируется остальными системами) – netbios (по умолчанию) или host В Windows значение получается из функции GetComputerName() (для netbios) или функции gethostname() (для host) и из команды “hostname” в других системах.

Пример возвращаемого значения
www.zabbix.com

Параметр для этого элемента данных поддерживается начиная с версии 1.8.6.

system.localtime
Локальное системное время. Численное или строковое значение. utc – (по умолчанию) время начиная с начала Эпохи (00:00:00 UTC, Январь 1, 1970), измеряется в секундах.
local – время в формате ‘гггг-мм-дд,чч:мм:сс.нн,+чч:мм’
system.stat[ресурс,<тип>]
Статистика виртуальной памяти Целочисленное ent – количество процессорных единиц выделенных на ресурс (дробное)
kthr,<тип> – информация о состояниях потоков ядра:
r – среднее количество запускаемых потоков ядра (дробное)
b – среднее количество потоков ядра помещенных в очередь ожидания Менеджера Виртуальный Памяти (дробное)
memory,<тип> – информация о использовании виртуальной и реальной памяти:
avm – активные виртуальные страницы (целое)
fre – размер свободного списка (целое)
page,<тип> – информация об ошибках страниц и активности страниц:
fi – операции страничного ввода файлов в секунду (дробное)
fo – операции страничного вывода файлов в секунду (дробное)
pi – pages paged in from paging space (дробное)
po – pages paged out to paging space (дробное)
fr – pages freed (page replacement) (дробное)
sr – количество сканированных страниц алгоритмом замещения страниц (дробное)
faults,<тип> – соотношение ловушек и прервываний:
in – прерывания устройства (float)
sy – системные вызовы (float)
cs – переключения контекста потока ядра (дробное)
cpu,<тип> – разделеное использование процессорного времени в процентах:
us – пользовательское время (дробное)
sy – системное время (дробное)
id – время простоя (дробное)
wa – время простоя в ходе которого система обрабатывала запросы I/O диска/NFS (дробное)
pc – количество использованных физических процессоров (дробное)
ec – процентное соотношение размеченного занятого пространства (дробное)
lbusy – indicates the percentage of logical processor(s) utilization that occurred while executing at the user and system level (дробное)
app – отображает количество доступных физических процессоров в распределенном пуле (дробное)
disk,<тип> – статистика о дисках:
bps – отображает суммарное количество данных переданных (чтением или записью) на диск в байтах в секунду (целое)
tps – indicates the number of transfers per second that were issued to the physical disk/tape (дробное)
Этот элемент данных поддерживается начиная с версии 1.8.1.
system.swap.in[<устройство>,<тип>]
Операции ввода в файл подкачки (с устройства в память). Числовое значение устройство – устройство файла подкачки (по умолчанию все устройства), тип – один из: count (по умолчанию, количество операций ввода в файл подкачки), sectors (количество секторов ввода в файл подкачки), pages (страниц ввода в файл подкачки). Смотрите поддержку по платформам для получения подробностей по умолчаниям. Пример:
system.swap.in[,bytes]
Старое название: swap[in]
system.swap.out[<устройство>,<тип>]
Операции вывода из файла подкачки (с устройства в память). Числовое значение устройство – устройство файла подкачки (по умолчанию все устройства), тип – один из: count (по умолчанию, количество операций вывода из файла подкачки), sectors (количество секторов вывода из файла подкачки), pages (страниц вывода из файла подкачки). Смотрите поддержку по платформам для получения подробностей по умолчаниям. Пример: system.swap.out[,pages]
Старое название: swap[out]
system.swap.size[<устройство>,<режим>]
Размер swap. Количество байт или процентное отношение устройство – устройство swap (по умолчанию все устройства), режим – один из: free (по умолчанию, свободное пространство в swap), total (весь размер swap), pfree (свободное просмотранство в swap, в процентном отношении), pused (занятое просмотранство в swap, в процентном отношении) Пример: system.swap.size[,pfree] – процентное отношение свободного места в swap
Старое название: system.swap.free, system.swap.total
system.uname
Возвращается подробная информация о хосте. Строковое значение Пример возвращаемого значения:
FreeBSD localhost 4.4-RELEASE FreeBSD 4.4-RELEASE #0: Tue Sep 18 11:57:08 PDT 2001 [email protected]: /usr/src/sys/compile/GENERIC i386
system.uptime
Время работы системы в секундах (uptime) Количество секунд Используйте Формат отображения s или uptime для того чтобы увидеть читаемые значения.
system.users.num
Количество подключенных пользователей. Количество пользователей Используется команда who на стороне агента.
vfs.dev.read[<устройство>,<тип>,<режим>]
Статистика чтения с диска. Целочисленное значение для тип в: sectors, operations, bytes
Дробное для тип в: sps, ops, bps
устройство – дисковое устройство (по умолчанию все;1; диски),
тип – один из: sectors, operations, bytes, sps, ops, bps (необходимо указывать, какие именно параметры требуется использовать, т.к. они являются разными для различных ОС).
состояния sps, ops, bps равны: сектора, операции, байт в секунду соответственно
режим – один из: avg1 (по умолчанию),avg5 (среднее за последние 5 минут), avg15.
Совместимо только в тип в: sps, ops, bps
Пример: vfs.dev.read[,operations] Старое название: io[*]

Параметр тип со значениями ops, bps и sps лимитирован 8 устройствами на поддерживаемых платформах (7 устройств +1 для “all” устройств).

Поддерживается LVM начиная с Zabbix 1.8.6.

До Zabbix 1.8.6, можно было использовать только относительные имена устройств (например, sda), начиная с 1.8.6 опциональный префикс /dev/ может использоваться (например, /dev/sda)

vfs.dev.write[< устройство>,<тип>,<режим>]
Статистика записи на диск. Целочисленное значение для тип в: sectors, operations, bytes
Дробное для тип в: sps, ops, bps
устройство – дисковое устройство (по умолчанию все;1; диски),
тип – один из: sectors, operations, bytes, sps, ops, bps (необходимо указывать, какие именно параметры требуется использовать, т.к. они являются разными для различных ОС).
состояния sps, ops, bps равны: сектора, операции, байт в секунду соответственно
режим – один из: avg1 (по умолчанию),avg5 (среднее за последние 5 минут), avg15.
Совместимо только в тип в: sps, ops, bps
Пример: vfs.dev.write[,operations] Старое название: io[*]

Параметр тип со значениями ops, bps и sps лимитирован 8 устройствами на поддерживаемых платформах (7 устройств +1 для “all” устройств).

Поддерживается LVM начиная с Zabbix 1.8.6.

До Zabbix 1.8.6, можно было использовать только относительные имена устройств (например, sda), начиная с 1.8.6 опциональный префикс /dev/ может использоваться (например, /dev/sda)

vfs.file.cksum[файл]
Подсчитывает контрольную сумму для файла Подсчет контрольной суммы использует алгоритм UNIX cksum. файл – полный путь к файлу Пример возвращаемого значения:
1938292000
Пример:
vfs.file.cksum[/etc/passwd]

Старое название: cksum

vfs.file.exists[файл]
Проверяется существует ли файл 0 – файл не существует
1 – файл существует
файл – полный путь к файлу Пример: vfs.file.exists[/tmp/application.pid]
vfs.file.md5sum[файл]
Контрольная сумма MD5 для файла MD5 хэш для файла. Пример возвращаемого значения:
b5052decb577e0fffd622d6ddc017e82

Пример:
vfs.file.md5sum[/etc/zabbix/zabbix_agentd.conf]

Лимит в 64МБ для размера файла у этого элемента данных был удален в версии 1.8.6.

vfs.file.regexp[файл,regexp,<кодировка>]
Поиск строки в файле Найденная строка или EOF если выражение не найдено файл – полный путь к файлу
regexp – Регулярное выражение GNU
кодировка – Идентификатор страницы кодировки
Пример: vfs.file.regexp[/etc/passwd,zabbix]
vfs.file.regmatch[файл,regexp,<кодировка>]
Поиск строки в файле 0 – выражение не найдено \\1 – найдено файл – полный путь к файлу
regexp – Регулярное выражение GNU
кодировка – Идентификатор страницы кодировки
Пример: vfs.file.regmatch[/var/log/app.log,error]
vfs.file.size[файл]
Размер файла Размер в байтах. файл – полный путь к файлу Файл должен иметь права чтения для пользователя zabbix

Пример: vfs.file.size[/var/log/syslog]

vfs.file.time[файл,<режим>]
Информация о времени файла. Unix timestamp. файл – полный путь к файлу
режим – один из: modify (по умолчанию, время изменения), access – время последнего доступа, change – время последнего изменения
Пример: vfs.file.time[/etc/passwd,modify]
vfs.fs.inode[fs,<режим>]
Количество inodes Строковое значение fs – файловая система
режим – один из: total (по умолчанию), free, used, pfree (свободно в процентном отношении), pused (занято в процентном отношении)
Пример: vfs.fs.inode[/,pfree] Старое название: vfs.fs.inode.free[*], vfs.fs.inode.pfree[*], vfs.fs.inode.total[*]
vfs.fs.size[fs,<режим>]
Размер диска Размер диска в байтах fs – файловая система
режим – один из: total (по умолчанию), free, used, pfree (свободно в процентном отношении), pused (занято в процентном отношении)
В случае смонтированного диска, возвращает размер диска локальной файловой системы. Пример: vfs.fs.size[/tmp,free] Старые названия: vfs.fs.free[*], vfs.fs.total[*], vfs.fs.used[*], vfs.fs.pfree[*], vfs.fs.pused[*]
vm.memory.size[<режим>]
Размер памяти Размер памяти в байтах режим – один из: total (по умолчанию), shared, free, buffers, cached, pfree, available Старые названия: vm.memory.buffers, vm.memory.cached, vm.memory.free, vm.memory.shared, vm.memory.total
web.page.get[хост,<путь>,<порт>]
Получает содержимое Веб страницы Веб страницы в виде текста хост – имя хоста
пусть – путь к HTML документу (по умолчанию /)
порт – номер порта (по умолчанию 80)
Возвращает EOF при ошибке. Пример:
web.page.get[www.zabbix.com,index.php,80]
web.page.perf[хост,<путь>,<порт>]
Получение времени полной загрузки Веб страницы Время в секундах хост – имя хоста
пусть – путь к HTML документу (по умолчанию /)
порт – номер порта (по умолчанию 80)
Возвращает 0 при ошибке. Пример:
web.page.perf[www.zabbix.com,index.php,80]
web.page.regexp[хост,<путь>,<порт>,<regexp>,<длина>]
Получает первое вхождение регулярного выражения в Веб странице Совпадающая строка хост – имя хоста
путь – путь к HTML документу (по умолчанию /)
порт – номер порта (по умолчанию 80)
regexp – регулярное выражение GNU,
длина – максимальное количество возвращаемых символов
Возвращает EOF в случае несовпадения или других неудачах (превышено время ожидания, ошибка подключения и т.п.). Пример:
web.page.regexp[www.zabbix.com,index.php,80,OK,2]

Смотрите этот раздел для понимания различий между элементами данных в пассивном и активном режиме.

[1] По умолчанию используется “all” первым параметром для ключей vfs.dev.* и возвращает суммарную статистику, включая: все блочные устройства такие как sda, sbd и их разделы sda1, sda2, sdb3 … и несколько устройств (MD raid) на основе этих блочных устройств/разделов и логические разделы (LVM) на основе этих блочных устройств/разделов.

В некоторых случаях возвращаемые значения следует рассматривать как относительные значения (изменяемые во времени), но не как абсолютные значения.

Заметка специфики для Linux. Zabbix агент должен иметь только права чтения файловой системы /proc. Патчи к ядру для ограничения прав непривилегированных пользователей вы можете найти на странице www.grsecurity.org.

Introduction

Like many people I use Zabbix for monitoring. I love the web GUI to configure stuff and the API to automate its configuration when I need to.

And although Zabbix comes packed with a lot of usable templates, they are more a starting point for your own infrastructure than a 100% ready solution.

Recently I had the need to start monitoring filesystem usage growth so I would get warned in time when a system was nearing its boundaries. It turns that for a really long time Zabbix has a timeleft function just for this occasion. But how, and where to use it?

Well, usually there is already a template available that does filesystem usage numbers. Those keep track on used space and used inodes. Within the template is a LLD, a Low Level Discovery rule. The result of that rule is a list of stuff found. And, together with ‘prototype’ items and triggers it can automatically add items and triggers to your host.

My setup

If you search in the available templates for ‘Linux filesystems’ you will easily find it. One is called ‘linux filesystems by Zabbix agent’ and the other one is ‘linux filesystems by Zabbix agent active’ (for if you are using active instead of passive checks). In the ‘Discovery’ column you can see that it has (in my case) 1 LLD.

If you click on the ‘Discovery’ you will see the list of LLD’s (in my case a single rule) with the following info:

List of discovery rules

Usually you will see four (4) item and trigger prototypes but my list shows 5 of each. Let’s start with the list if item prototypes:

List of item prototypes

As you can probably guess, the first one is the subject of this blog post. Let’s have a close look at it:

My item definition

Item definition to get timeleft information

If we analyse this item we see the following settings:

  • Name: Since this item will expand (because it is part of a LLD!) it is important to add a macro (#FSNAME) to the name. This allows you to distinguish what filesystem this item is talking about later. Also, without it you would try to create multiple items with the same name and Zabbix would raise an error.
  • Type: We are going to perform a calculation, so the item type is ‘calculated’
  • Key: Since we are performing a calculation, this means there is an input variable. That is what is meant here. We are using the input value of vfs.fs.size.timeleft[{#FSNAME},pused]. This is one of the items already gathered in this LLD.
  • Type of information: Since we are performing a calculation the result will be a number. That is why we select ‘Numeric (float) here.
  • Formula: this is where it’s all about. ((((timeleft(//vfs.fs.size[{#FSNAME},pused],7d,95)/60)/60)/24)/30). This means: Calculate how much time is left for this filesystem to become 95% full, based on the last seven days of data. Since the result is in seconds we have to do some divisions to get to a number of month.

My trigger definition

Nice, but does this give us an alert when it becomes time to have a look at it? No, it doesn’t. For that we have to define a trigger. So we create a trigger prototype in the trigger section of the LLD. Mine looks like this:

My trigger prototype definition

Again, let’s take a closer look at the individual settings:

  • Name: Like with the item name we need to add the #FSNAME macro in our descriptive text
  • Severity: For me, I set the severity to high because an alert like this definitely deserves attention!
  • Expression. This is the expression for when to trigger an alert: last(/Linux filesystems by Zabbix agent/vfs.fs.size.timeleft[{#FSNAME},pused])<3. This means: As soon as the last measured value of the item for this host with key vfs.fs.size.timeleft[{#FSNAME},pused] becomes below three (month) I get an alert.

After having configured this all correctly I head over to the ‘lastes data’ section of Zabbix to see how I’m doing:

Listing with latest timeleft data

Few! As you can see I am in the clear for now but one system will need disc size usage growth attention in one and a half (21-3=18 month) time.

If you found this helpfull please reward my work of researching and writing this. Please go to GitHub or Patreon and show your appreciation.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Recovery dvd asus n53sv windows 7
  • Nokia lumia 1020 windows 10
  • User configuration preferences windows settings folders
  • Windows server port 443
  • Windows login unlocker описание