Иногда возникает задача осуществлять мониторинг времени изменения какого-то файла или каталога. Например, если есть лог-файл, в который что-то постоянно пишется, или каталог, в который валится почта, результаты работы скриптов и тому подобное. Мы на работе, например, отслеживаем приход новостей от разных агентств.
В любом случае, нам может захотеться отслеживать и получать оповещения про любой случай прекращения изменений фала/каталога. Сделать это средствами zabbix довольно легко:
- создаём айтем vfs.file.time[/path/to/our_file]
- создаём триггер с выражением {flycat.info:vfs.file.time[/path/to/our_file]. fuzzytime(600) }=0 (сигнализировать, если время модификации файла больше 10 минут)
- наслаждаемся результатом: в случае, если время модификации нашего файла или каталога становится больше 600 секунд, нам приходит оповещение
Хороший способ? Хороший! Но не очень 🙂 Какие есть у него недостатки:
- Время модификации файла считается на клиентской машине исходя из показаний её часов, а текущее время для fuzzytime берётся с zabbix-сервера. Нужно ли объяснять, что произойдёт, если часы на этих машинах “разбегутся”?
- Вычисление разницы времени происходит на zabbix-сервере. Естественно, что это его, хоть и незначительно, но нагружает. А если таких параметров у вас много, нагрузка может стать довольно значительной
- Ну и ещё один фактор: низкая наглядность. Посмотрите на график айтема. По нему невозможно определить, превысило ли ожидаемое время модификации предельный срок.
Давайте теперь сделаем тоже самое, но другим способом. Пишем (на клиенте) такой скрипт под названием modtime:
#!/bin/bash s=`ls -d -l --full-time $1|awk '{print $6" "$7}'` a=`date +%s` b=`date --date="$s" +%s` echo $(( ($a - $b)/60 ))
и кладём его в каталог zabbix-плагинов. В случае, если вы не знаете, где этот каталог, можно положить его куда заблагорассудится (не забывая, конечно, о разрешениях для zabbix), но тогда нужно будет прописать в строке конфигурации zabbix-агента следующую строчку:
UserParameter=modtime[*],/opt/zabbix/plugins/modtime $1
Теперь создаём следующий айтем: modtime[/path/to/our_file] и триггер с выражением: {flycat.info:modtime[/path/to/our_file].last(0) }>10. Обратите внимание, что в этом варианте скрипта идёт учёт времени не в секундах, а в минутах.
Что мы теперь видим на графике?
По-моему, всё стало гораздо более наглядным и понятным. Пожалуй, единственный недостаток второго способа — работает он только под unix / linux, где есть bash. На Windows такие трюки не пройдут.
Привет!
Заббиксом раньше не приходилось пользоваться, поставили передо мной задачу настроить мониторинг изменения содержимого файла. Есть файл, содержащий число, которое постоянно меняется. Нужно это вывести в виде графика через заббикс.
Мои действия:
— Создаю узел сети и группу для него. Указываю IP того сервера, на котором стоИт заббикс-агент и хранится сам файл, который нужно мониторить. После создания узла, заббикс успешно соединяется с агентом и горит зеленый огонёк, всё ок.
— Создаю элемент данных. На хабре нашел статью о настройке мониторинга температуры процессора. Решил сделать по аналогии:
1) В конфигурационном файле заббикс-агента я добавил строчку
UserParameter=count[*], «cat /home/user/file.log»
2) В веб-интерфейсе заббикса добавляю элемент данных: Тип — Zabbix-агент, Ключ: UserParameter=count[0], Тип данных: цифровой (десятичный).
И, собственно, после создания элемента данных его статус становится Не поддерживается (Zabbix agent not support).
В чем может быть дело, как это исправить и в том ли направлении я вообще работаю? Подскажите, пожалуйста.
Спасибо!
Аналог с доработками шаблона Обнаружение папок и запрос их размера LLD Шаблон + Скрипт только для файлов.
LLD — Обнаружение файлов и их мониторинг Linux и Windows
Проверяются следующие параметры:
1.Наличие файла
2.Размер файла
3.Время изменения файла
4.Время изменения свойств файла
5.Время последнего доступа
Можно дополнить своими проверками.
Подходит для проверки файлов резервного копирования или важных файлов где их не так мало и дабы не прописывать все вручную используем авто обнаружение в указанной директории.
Более подробно:
Может ли проверять на одном узле несколько каталогов с файлами? Да может.
Указываем макросе {$PUTFILE} узла пути через точку с запятой завершающий слеш не нужен
Пример для Windows:
{$PUTFILE} C:\zabbix;C:\Users
Для сети вначале проставить 3 слеша
\\\192.168.ххх.ххх\папка
Пример для Linux:
{$PUTFILE} /root;/home/user
Могу ли я задать порт для подключения? Да.
Указываем в макросе Узла
{$HOST.PORTS} порт по умолчанию в шаблоне указан 10050
Так же есть активный порт, для отправки trappetom и ошибок.
{$HOST.PORTSACTIV} порт по умолчанию в шаблоне указан 10051
Можно ли скрыть или отобразить конкретные файлы ? Да можно.
Для этого можно воспользоваться фильтром в правиле обнаружения или макросами в узле.
{$FILTRFILE} по умолчанию в шаблоне задано отображать все .*
{$HIDEFILE} по умолчанию в шаблоне задано отображать все ^$
Для указания нескольких файлов (перечисления) вид следующий
Файл1\|Файл2\|Файл3 и так далее
* учитывать пробел если он есть иначе короткое слово может попасть под регулярку!
Так же данные фильтра используется в trapper.
Можно использовать фильтра заббикс в правиле обнаружения, тогда они будут работать только для обнаружения, а способ trapper будет запрашивать данные и отправлять данные для всего что найдет просто в никуда для тех элементов которых не будет в заббикс.
Что делать если за время timeout 15-30 секунд не успевает прилететь ответ? На это случае есть дополнительные правила и скрипты работающие через trapper.
Макрос для указания пути где лежит скрипт trapper.
{$SCRIPT.TRAPFILE}
Пример Windows:
C:\zabbix\Scripts\dir-file-trapper-win-cp866-File.bat
Пример Linux:
/etc/zabbix/scripts/dir-file-trappet.sh
Для Windows скриптов trapper есть макрос для указания текущей кодировки узла
{$KODR} по умолчанию в шаблоне указана cp866 (не используется на данный момент)
Так же в скриптах trappet указать IP в переменой IPZBXSERVER=192.168.XXX.XXX
Есть какие то ограничения?
Для Windows trapper (не путать trapper Лог там все ок) где запросы напрямую отправляются с батника для каждого элемента в заббикс не поддерживается русский язык так как не перекодируется в utf-8.
Так же если имя файла начинается на &36.txt то на windows при работе скрипта когда строка не экранирована это вызывает ошибку.
vfs.file.time[«/root/test/?34.txt»,change] — Cannot obtain file information: [2] No such file or directory
vfs.file.time[«/root/test/???? ???????.txt»,change] — Cannot obtain file information: [2] No such file or directory
«/home/user/ls: невозможно получить доступ к ‘/home/user’: Нет такого файла или каталога»
34 траппер ошибка
34 работает виде лога траппер
Обычный траппер ошибки
[«D:\test\!32.txt»]
[«D:\test\№34.txt»]
[«D:\test\^35.txt»]
Траппер Лог ошибки
[«D:\test\^35.txt»] ошибка на регулярку
[«D:\test\!32.txt»] ошибка на регулярку
[«D:\test\Тест русский.txt»]
Не работают кривые имена с windows
Преобразует не правильно проверка не проходит
Оригинал
РЎРїРёСЃРєРё РњРќРЎ.xls
Стало
РЎРїРёС?РєРё Р?Р?РЎ.xls
Если файл начинается на ‘ (одинарную кавычку он скроется из вывода) для windows работающий через скрипт trappet, так как данная кавычка указана как полмолчания ничего не скрывать можно заменить на другой символ.
Дата через trappet приходит в обычном формате как текст, для некоторых функций триггера нужно ее перевести в unixtime. (возможно реализую позже)
Файлы с датой в имени, не совсем подходят сюда так как
Сделать авто обнаружение файла так же не вариант так как:
Файл будет каждый день новый сравнить размер не получится, после удаления предыдущих файлов сработает триггер на старые файлы что нет данных, можно конечно выставить удаление через 0 дней если не обнаруживается сразу удалился, если файла нет то и проверка не создастся и мы ничего не узнаем.
Для этого у нас есть другой шаблон Шаблон проверки файлов
Другие нюансы по факту их обнаружения.
Цепляем шаблон «Обнаружение файлов и запрос их размера» к Узлу
В узле указываем макросы
{$PUTFILE} тут указываем путь или пути через точку с запятой где сканировать наличие файлов
Например:
/home/user;/root/bak — находим файлы в 2х папках
C:\zabbix;C:\Users — находим файлы в 2х папках
Завершающий слеш в конце пути не нужен, так же должен быть доступ на проверяемую папку.
При необходимости задаем свой порт
{$HOST.PORTS} по умолчанию 10050
{$HOST.PORTSACTIV} порт по умолчанию в шаблоне указан 10051
Можно задать конкретные имена файлов которые нам необходимы
{$FILTRFILE} по умолчанию все .* несколько файлов: Имя файла1\|Имя файла2\|имя файла3
Можно наоборот скрыть из вывода не нужные файлы
{$HIDEFILE} по умолчанию все показывать все ^$ аналогично несколько файлов: Имя файла1\|Имя файла2\|имя файла3
Аналогично настройки Фильтра в правиле обнаружения можно пользоваться стандартным фильтром
Кодировка задается для Windows Русских названий файлов и дальнейшая перекодировка в UTF-8
{$KODR} по умолчанию cp866 при не об ходимости в узле задайте 1251
Макрос для указания пути где лежит скрипт trapper.
{$SCRIPT.TRAPFILE}
Пример Windows:
C:\zabbix\Scripts\dir-file-trapper-win-cp866-File.bat
Пример Linux:
/etc/zabbix/scripts/dir-file-trappet.sh
Далее все данные поступаю в скрипт size-file.sh при обнаружении файлов.
СКАЧАТЬ
Windows для большого кол-ва файлов скрипт 6.2
Установка делаем импорт шаблона на заббикс сервер, копируем скрипт size-file.sh на заббикс сервер в моем случае путь такой
/usr/local/share/zabbix/externalscripts/
Цепляем шаблон к узлу, указываем необходимые макросы в узле и активируем нужное правило обнаружения.
- Обнаружение файлов и запрос их размера
Скрипт обнаружения работает на командах, должен быть доступ заббикс агенту от имени которого он запущен до данных каталогов.
Вывод Обнаружение файлов в указанной папке
ls -aF путь до файлов и исключить из вывода каталоги |grep -av «/»
dir /a-d /B \ путь до файлов
Проверка со стороны заббикс сервера
Linux
zabbix_get -s 192.168.XXX.XXX -p 10050 -k system.run[«ls -aF «путь до файлов»|grep -av «/»»]
Windows
zabbix_get -s 192.168.XXX.XXX -p 10050 -k system.run[«dir /a-d /B \»»путь до файлов»\»»]
Команда Ключ Linux
size-file.sh[{HOST.CONN},{$HOST.PORTS},discovery,{$PUTFILE},{$FILTRFILE},{$HIDEFILE},{$KODR},{HOST.HOST},{$HOST.PORTSACTIV}]
/usr/local/share/zabbix/externalscripts/size-file.sh 192.168.xxx.xxx 10050 discovery «/home/user;/root/test» «.*» «^$» «» «HOSTNAME» «10051»
[
{«{#FILESIZELINUX}»:»/root/test/-27.txt», «{#NAMEFILELINUX}»:»-27.txt»},
{«{#FILESIZELINUX}»:»/root/test/.28.txt», «{#NAMEFILELINUX}»:».28.txt»},
{«{#FILESIZELINUX}»:»/root/test/,29.txt», «{#NAMEFILELINUX}»:»,29.txt»},
{«{#FILESIZELINUX}»:»/root/test/$30.txt», «{#NAMEFILELINUX}»:»$30.txt»},
{«{#FILESIZELINUX}»:»/root/test/@31.txt», «{#NAMEFILELINUX}»:»@31.txt»},
{«{#FILESIZELINUX}»:»/root/test/!32.txt», «{#NAMEFILELINUX}»:»!32.txt»},
{«{#FILESIZELINUX}»:»/root/test/#33.txt», «{#NAMEFILELINUX}»:»#33.txt»},
{«{#FILESIZELINUX}»:»/root/test/-34.txt», «{#NAMEFILELINUX}»:»-34.txt»},
{«{#FILESIZELINUX}»:»/root/test/^35.txt», «{#NAMEFILELINUX}»:»^35.txt»},
{«{#FILESIZELINUX}»:»/root/test/(37.txt», «{#NAMEFILELINUX}»:»(37.txt»},
{«{#FILESIZELINUX}»:»/root/test/)38.txt», «{#NAMEFILELINUX}»:»)38.txt»},
{«{#FILESIZELINUX}»:»/root/test/-39.txt», «{#NAMEFILELINUX}»:»-39.txt»},
{«{#FILESIZELINUX}»:»/root/test/_40.txt», «{#NAMEFILELINUX}»:»_40.txt»},
{«{#FILESIZELINUX}»:»/root/test/+41.txt», «{#NAMEFILELINUX}»:»+41.txt»},
{«{#FILESIZELINUX}»:»/root/test/{42.txt», «{#NAMEFILELINUX}»:»{42.txt»},
{«{#FILESIZELINUX}»:»/root/test/[43.txt», «{#NAMEFILELINUX}»:»[43.txt»},
{«{#FILESIZELINUX}»:»/root/test/a1.txt», «{#NAMEFILELINUX}»:»a1.txt»},
{«{#FILESIZELINUX}»:»/root/test/b2.txt», «{#NAMEFILELINUX}»:»b2.txt»},
{«{#FILESIZELINUX}»:»/root/test/c3.txt», «{#NAMEFILELINUX}»:»c3.txt»},
{«{#FILESIZELINUX}»:»/root/test/d4.txt», «{#NAMEFILELINUX}»:»d4.txt»},
{«{#FILESIZELINUX}»:»/root/test/e5.txt», «{#NAMEFILELINUX}»:»e5.txt»},
{«{#FILESIZELINUX}»:»/root/test/f6.txt», «{#NAMEFILELINUX}»:»f6.txt»},
{«{#FILESIZELINUX}»:»/root/test/g7.txt», «{#NAMEFILELINUX}»:»g7.txt»},
{«{#FILESIZELINUX}»:»/root/test/h8.txt», «{#NAMEFILELINUX}»:»h8.txt»},
{«{#FILESIZELINUX}»:»/root/test/i9.txt», «{#NAMEFILELINUX}»:»i9.txt»},
{«{#FILESIZELINUX}»:»/root/test/j10.txt», «{#NAMEFILELINUX}»:»j10.txt»},
{«{#FILESIZELINUX}»:»/root/test/k11.txt», «{#NAMEFILELINUX}»:»k11.txt»},
{«{#FILESIZELINUX}»:»/root/test/l12.txt», «{#NAMEFILELINUX}»:»l12.txt»},
{«{#FILESIZELINUX}»:»/root/test/m13.txt», «{#NAMEFILELINUX}»:»m13.txt»},
{«{#FILESIZELINUX}»:»/root/test/n14.txt», «{#NAMEFILELINUX}»:»n14.txt»},
{«{#FILESIZELINUX}»:»/root/test/o15.txt», «{#NAMEFILELINUX}»:»o15.txt»},
{«{#FILESIZELINUX}»:»/root/test/p16.txt», «{#NAMEFILELINUX}»:»p16.txt»},
{«{#FILESIZELINUX}»:»/root/test/pro bel d», «{#NAMEFILELINUX}»:»pro bel d»},
{«{#FILESIZELINUX}»:»/root/test/q17.txt», «{#NAMEFILELINUX}»:»q17.txt»},
{«{#FILESIZELINUX}»:»/root/test/r18.txt», «{#NAMEFILELINUX}»:»r18.txt»},
{«{#FILESIZELINUX}»:»/root/test/s19.txt», «{#NAMEFILELINUX}»:»s19.txt»},
{«{#FILESIZELINUX}»:»/root/test/t20.txt», «{#NAMEFILELINUX}»:»t20.txt»},
{«{#FILESIZELINUX}»:»/root/test/—- ——-.txt», «{#NAMEFILELINUX}»:»—- ——-.txt»},
{«{#FILESIZELINUX}»:»/root/test/u21.txt», «{#NAMEFILELINUX}»:»u21.txt»},
{«{#FILESIZELINUX}»:»/root/test/v22.txt», «{#NAMEFILELINUX}»:»v22.txt»},
{«{#FILESIZELINUX}»:»/root/test/w23.txt», «{#NAMEFILELINUX}»:»w23.txt»},
{«{#FILESIZELINUX}»:»/root/test/x24.txt», «{#NAMEFILELINUX}»:»x24.txt»},
{«{#FILESIZELINUX}»:»/root/test/y25.txt», «{#NAMEFILELINUX}»:»y25.txt»},
{«{#FILESIZELINUX}»:»/root/test/z26.txt», «{#NAMEFILELINUX}»:»z26.txt»}
]
—- ——- тут было слово на русском написанное на Windows b скопировано в Linux
После создают Элементы данных
{#NAMEFILELINUX} — Имя файла
Время изменения свойств файла {#FILESIZELINUX} vfs.file.time[{#FILESIZELINUX},change]
Время изменения файла {#FILESIZELINUX} vfs.file.time[{#FILESIZELINUX},modify]
Время последнего доступа {#FILESIZELINUX} vfs.file.time[{#FILESIZELINUX},access]
Наличие файла {#FILESIZELINUX} vfs.file.exists[{#FILESIZELINUX}]
Размер файла {#FILESIZELINUX} vfs.file.size[{#FILESIZELINUX}]
Команда Ключ Windows
size-file.sh[{HOST.CONN},{$HOST.PORTS},discoverywin,{$PUTFILE},{$FILTRFILE},{$HIDEFILE},{$KODR},{HOST.HOST},{$HOST.PORTSACTIV}]
/usr/local/share/zabbix/externalscripts/size-file.sh 192.168.xxx.xxx 10050 discoverywin «C:\Users\Public;D:\test» «.*» «^$» «cp866» «HOSTNAME» «10051»
[
{«{#FILESIZEWIN}»:»C:\\Users\\Public\\desktop.ini», «{#NAMEFILEWIN}»:»desktop.ini»},
{«{#FILESIZEWIN}»:»D:\\test\\!32.txt», «{#NAMEFILEWIN}»:»!32.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\#33.txt», «{#NAMEFILEWIN}»:»#33.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\$30.txt», «{#NAMEFILEWIN}»:»$30.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\(37.txt», «{#NAMEFILEWIN}»:»(37.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\)38.txt», «{#NAMEFILEWIN}»:»)38.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\+41.txt», «{#NAMEFILEWIN}»:»+41.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\,29.txt», «{#NAMEFILEWIN}»:»,29.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\-27.txt», «{#NAMEFILEWIN}»:»-27.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\-39.txt», «{#NAMEFILEWIN}»:»-39.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\.28.txt», «{#NAMEFILEWIN}»:».28.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\@31.txt», «{#NAMEFILEWIN}»:»@31.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\a1.txt», «{#NAMEFILEWIN}»:»a1.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\b2.txt», «{#NAMEFILEWIN}»:»b2.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\c3.txt», «{#NAMEFILEWIN}»:»c3.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\d4.txt», «{#NAMEFILEWIN}»:»d4.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\e5.txt», «{#NAMEFILEWIN}»:»e5.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\f6.txt», «{#NAMEFILEWIN}»:»f6.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\g7.txt», «{#NAMEFILEWIN}»:»g7.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\h8.txt», «{#NAMEFILEWIN}»:»h8.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\i9.txt», «{#NAMEFILEWIN}»:»i9.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\j10.txt», «{#NAMEFILEWIN}»:»j10.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\k11.txt», «{#NAMEFILEWIN}»:»k11.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\l12.txt», «{#NAMEFILEWIN}»:»l12.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\m13.txt», «{#NAMEFILEWIN}»:»m13.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\n14.txt», «{#NAMEFILEWIN}»:»n14.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\o15.txt», «{#NAMEFILEWIN}»:»o15.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\p16.txt», «{#NAMEFILEWIN}»:»p16.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\pro bel d.txt», «{#NAMEFILEWIN}»:»pro bel d.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\q17.txt», «{#NAMEFILEWIN}»:»q17.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\r18.txt», «{#NAMEFILEWIN}»:»r18.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\s19.txt», «{#NAMEFILEWIN}»:»s19.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\t20.txt», «{#NAMEFILEWIN}»:»t20.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\u21.txt», «{#NAMEFILEWIN}»:»u21.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\v22.txt», «{#NAMEFILEWIN}»:»v22.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\w23.txt», «{#NAMEFILEWIN}»:»w23.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\x24.txt», «{#NAMEFILEWIN}»:»x24.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\y25.txt», «{#NAMEFILEWIN}»:»y25.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\z26.txt», «{#NAMEFILEWIN}»:»z26.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\[43.txt», «{#NAMEFILEWIN}»:»[43.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\^35.txt», «{#NAMEFILEWIN}»:»^35.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\_40.txt», «{#NAMEFILEWIN}»:»_40.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\{42.txt», «{#NAMEFILEWIN}»:»{42.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\Тест русский.txt», «{#NAMEFILEWIN}»:»Тест русский.txt»},
{«{#FILESIZEWIN}»:»D:\\test\\№34.txt», «{#NAMEFILEWIN}»:»№34.txt»}
]
Что бы оставить правильные слеши и не разворачивать их в lld нужно передавать в 2 раза больше их чем нужно нам если нам нужен \ то передаем \\
После создают Элементы данных
{#NAMEFILEWIN} — Имя файла
Время изменения свойств файла {#FILESIZEWIN} vfs.file.time[{#FILESIZEWIN},change]
Время изменения файла {#FILESIZEWIN} vfs.file.time[{#FILESIZEWIN},modify]
Время последнего доступа {#FILESIZEWIN} vfs.file.time[{#FILESIZEWIN},access]
Наличие файла {#FILESIZEWIN} vfs.file.exists[{#FILESIZEWIN}]
Размер файла {#FILESIZEWIN} vfs.file.size[{#FILESIZEWIN}]
Далее у нас идут команды для zabbix trapper
Скрипт для Linux dir-file-trappet.sh
ls -aF путь до файлов|grep -av «/» — отобразить содержимое кроме папок
du -sb —time путь до файлов — размера в байтах и даты изменения разбор по столбцам
du -sb —time=ctime путь до файлов| awk ‘{print $2, $3}’ -Время изменения свойств файла в формате ГГГГ.ММ.ДД ЧЧ:ММ
du -sb —time=atime путь до файлов| awk ‘{print $2, $3}’ -Время последнего доступа в формате ГГГГ.ММ.ДД ЧЧ:ММ
Локальная проверка
/etc/zabbix/scripts/dir-file-trappet.sh «ИмяХоста» «10051» «/путь» «.*» «^$»
Запуск удаленного скрипта обнаружение файлов, через заббикс агент Linux
system.run[‘{$SCRIPT.TRAPFILE}’ «{HOST.HOST}» «{$HOST.PORTSACTIV}» «{$PUTFILE}» «{$FILTRFILE}» «{$HIDEFILE}»,nowait]
zabbix_get -s 192.168.XXX.XXX -k system.run[»/etc/zabbix/scripts/dir-file-trappet.sh’ ‘ИмяХоста’ ‘10051’ ‘/путь’ ‘.*’ ‘^$»,nowait]
zabbix_get -s 192.168.XXX.XXX -k system.run[»/etc/zabbix/scripts/dir-file-trappet.sh’ «ИмяХоста» «10051» «/путь» «.*» «^$»‘]
zabbix_get -s 192.168.XXX.XXX -k system.run[»/etc/zabbix/scripts/dir-file-trappet.sh’ «ИмяХоста» «10051» «/путь» «.*» «^$»‘,nowait]
zabbix_get -s 192.168.XXX.XXX -k system.run[«‘/etc/zabbix/scripts/dir-file-trappet.sh’ ‘ИмяХоста’ ‘10051’ ‘/путь’ ‘.*’ ‘^$'»,nowait]
zabbix_get -s 192.168.XXX.XXX -k system.run[»/etc/zabbix/scripts/dir-file-trappet.sh’ ‘agentzabbixserver’ ‘10051’ ‘/root’ ‘.*’ ‘^$»]
/etc/zabbix/scripts/dir-file-trappet.sh: 24: /etc/zabbix/scripts/dir-file-trappet.sh: Syntax error: redirection unexpected
Ошибка так как в скрипте сместилась первая строка #!/bin/bash , первая была пустая вторя содержала #!/bin/bash
Запускается через sh изначально с команды system.run
zabbix_get -s 192.168.XXX.XXX -k system.run[»/etc/zabbix/scripts/dir-file-trappet.sh’ «agentzabbixserver» «10051» «/root» «.*» «^$»‘]
zabbix_get -s 192.168.XXX.XXX -k system.run[»/etc/zabbix/scripts/dir-file-trappet.sh’ ‘agentzabbixserver’ ‘10051’ ‘/root’ ‘.*’ ‘^$»]
zabbix_get -s 192.168.XXX.XXX -k system.run[‘»/etc/zabbix/scripts/dir-file-trappet.sh» ‘agentzabbixserver’ ‘10051’ ‘/root’ ‘.*’ ‘^$»]
ZBX_NOTSUPPORTED: Invalid item key format.
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(«/etc/zabbix/scripts/dir-file-trappet.sh» «agentzabbixserver» «10051» «/root» «.*» «^$»),nowait’]
1
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(«/etc/zabbix/scripts/dir-file-trappet.sh» «agentzabbixserver» «10051» «/root» «.*» «^$»),nowait’]
1
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(«/etc/zabbix/scripts/dir-file-trappet.sh» «agentzabbixserver» «10051» «/root» «.*» «^$»),nowait’]
1
zabbix_get -s 192.168.XXX.XXX -k system.run[‘`»/etc/zabbix/scripts/dir-file-trappet.sh» «agentzabbixserver» «10051» «/root» «.*» «^$»`,nowait’]
1
zabbix_get -s 192.168.XXX.XXX -k system.run[‘`»/etc/zabbix/scripts/dir-file-trappet.sh» «agentzabbixserver» «10051» «/root» «.*» «^$»`’,nowait]
1
zabbix_get -s 192.168.XXX.XXX -k system.run[`»/etc/zabbix/scripts/dir-file-trappet.sh» «agentzabbixserver» «10051» «/root» «.*» «^$»`,nowai
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(«/etc/zabbix/scripts/dir-file-trappet.sh» «agentzabbixserver» «10051» «/root» «.*» «^$»),nowait’]
1
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(«/etc/zabbix/scripts/dir-file-trappet.sh» «agentzabbixserver» «10051» «/root» «.*» «^$»)’]
/etc/zabbix/scripts/dir-file-trappet.sh: 24: /etc/zabbix/scripts/dir-file-trappet.sh: Syntax error: redirection unexpected
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(«/etc/zabbix/scripts/dir-file-trappet.sh» «agentzabbixserver» «10051» «/root» «.*» «^$»)’]
/etc/zabbix/scripts/dir-file-trappet.sh: 24: /etc/zabbix/scripts/dir-file-trappet.sh: Syntax error: redirection unexpected
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(/etc/zabbix/scripts/dir-file-trappet.sh «agentzabbixserver» «10051» «/root» «.*» «^$»)’]
/etc/zabbix/scripts/dir-file-trappet.sh: 24: /etc/zabbix/scripts/dir-file-trappet.sh: Syntax error: redirection unexpected
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(/etc/zabbix/scripts/dir-file-trappet.sh «‘agentzabbixserver'» «‘10051′» «‘/root'» «‘.*'» «‘^$'»)’]
/etc/zabbix/scripts/dir-file-trappet.sh: 24: /etc/zabbix/scripts/dir-file-trappet.sh: Syntax error: redirection unexpected
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(/etc/zabbix/scripts/dir-file-trappet.sh ‘»agentzabbixserver»‘ ‘»10051″‘ ‘»/root»‘)’]
/etc/zabbix/scripts/dir-file-trappet.sh: 24: /etc/zabbix/scripts/dir-file-trappet.sh: Syntax error: redirection unexpected
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(/etc/zabbix/scripts/dir-file-trappet.sh ‘agentzabbixserver’ ‘10051’ ‘/root’)’]
/etc/zabbix/scripts/dir-file-trappet.sh: 24: /etc/zabbix/scripts/dir-file-trappet.sh: Syntax error: redirection unexpected
zabbix_get -s 192.168.XXX.XXX -k system.run[‘$(‘/etc/zabbix/scripts/dir-file-trappet.sh’ ‘agentzabbixserver’ ‘10051’ ‘/root’)’]
/etc/zabbix/scripts/dir-file-trappet.sh: 24: /etc/zabbix/scripts/dir-file-trappet.sh: Syntax error: redirection unexpected
zabbix_get -s 192.168.XXX.XXX -k system.run[‘/etc/zabbix/scripts/dir-file-trappet.sh’ ‘agentzabbixserver’ ‘10051’ ‘/root’]
zabbix_get [12244]: invalid parameter «agentzabbixserver»
zabbix_get [12244]: invalid parameter «10051»
zabbix_get [12244]: invalid parameter «/etc]»
Try ‘zabbix_get —help’ for more information.
zabbix_get -s 192.168.XXX.XXX -k system.run[/etc/zabbix/scripts/dir-file-trappet.sh ‘agentzabbixserver’ ‘10051’ ‘/root’]
zabbix_get [12540]: invalid parameter «agentzabbixserver»
zabbix_get [12540]: invalid parameter «10051»
zabbix_get [12540]: invalid parameter «/etc]»
Try ‘zabbix_get —help’ for more information.
zabbix_get -s 192.168.XXX.XXX -k system.run[/etc/zabbix/scripts/dir-file-trappet.sh «agentzabbixserver» «10051» «/root»]
zabbix_get [13012]: invalid parameter «agentzabbixserver»
zabbix_get [13012]: invalid parameter «10051»
zabbix_get [13012]: invalid parameter «/etc]»
Try ‘zabbix_get —help’ for more information.
zabbix_get -s 192.168.XXX.XXX -k system.run[»/etc/zabbix/scripts/dir-file-trappet.sh’ ‘agentzabbixserver’ ‘10051’ ‘/root»]
/etc/zabbix/scripts/dir-file-trappet.sh: 24: /etc/zabbix/scripts/dir-file-trappet.sh: Syntax error: redirection unexpected
zabbix_get -s 192.168.XXX.XXX -k system.run[»/etc/zabbix/scripts/dir-file-trappet.sh’ ‘agentzabbixserver’ ‘10051’ ‘/root’ ‘.*’ ‘^$»]
/etc/zabbix/scripts/dir-file-trappet.sh: 24: /etc/zabbix/scripts/dir-file-trappet.sh: Syntax error: redirection unexpected
Ошибка так как в скрипте сместилась первая строка #!/bin/bash , первая была пустая вторя содержала #!/bin/bash
Запускается через sh изначально с команды system.run
zabbix_get -s 192.168.XXX.XXX -k system.run[»/etc/zabbix/scripts/dir-file-trappet.sh’ «agentzabbixserver» «10051» «/root» «.*» «^$»‘]
Response from «192.168.XXX.XXX:10051»: «processed: 1; failed: 0; total: 1; seconds spent: 0.000141»
sent: 1; skipped: 0; total: 1
zabbix_get -s 192.168.XXX.XXX -k system.run[»/etc/zabbix/scripts/dir-file-trappet.sh’ «agentzabbixserver» «10051» «/root» «.*» «^$»‘,nowait]
1
Запуск удаленного скрипта обнаружение файлов, через основной Linux
size-file.sh[{HOST.CONN},{$HOST.PORTS},runscript,'{$SCRIPT.TRAPFILE}’,»‘{HOST.HOST}'»,»‘{$HOST.PORTSACTIV}'»,»‘{$PUTFILE}'»,»‘{$FILTRFILE}'»,»‘{$HIDEFILE}'»]
/size-file.sh 192.168.XXX.XXX 10050 runscript «‘/etc/zabbix/scripts/dir-file-trappet.sh'» «‘ИмяХоста'» «‘10051′» «‘/путь'» «‘.*'» «‘^$'»
Запрос через скрипт Windows
C:\zabbix\Scripts\dir-file-trapper-win-cp866-File.bat «ИмяХоста» «10051» «D:\test» «26.txt» «^$» «cp866»
C:\zabbix\Scripts\dir-file-trapper-win-cp866-File.bat «ИмяХоста» «10051» «D:\test» «26.txt» «^$» «cp866»
C:\zabbix\Scripts\dir-file-trapper-win-cp866-File.bat «ИмяХоста» 10051 «C:\Users\Public;D:\test» «.*» «^$» «cp866»
Запуск удаленного скрипта обнаружение файлов, через заббикс агент Windows
system.run[{$SCRIPT.TRAPFILE} «{HOST.HOST}» «{$HOST.PORTSACTIV}» «{$PUTFILE}» «{$FILTRFILE}» «{$HIDEFILE}» «{$KODR}»,nowait]
zabbix_get -s 192.168.XXX.XXX -p 10050 -k system.run[‘C:\zabbix\Scripts\dir-size-trapper-win-cp866-File.bat «ИмяХоста» «10051» «C:\Users\Public;D:\test» «.*» «^$» «cp866»,nowait’]
zabbix_get -s 192.168.XXX.XXX -p 10050 -k system.run'[C:\zabbix\Scripts\dir-size-trapper-win-cp866-File.bat «ИмяХоста» «10051» «C:\Users\Public;D:\test» «.*» «^$» «cp866»,nowait]’
zabbix_get -s 192.168.XXX.XXX -p 10050 -k system.run[‘C:\zabbix\Scripts\dir-size-trapper-win-cp866-File.bat «ИмяХоста» «10051» «C:\Users\Public;D:\test» «.*» «^$» «cp866″‘,nowait]
Вид команды прилетает в лог заббикс агента:
‘C:\zabbix\Scripts\dir-size-trapper-win-cp866-File.bat «ИмяХоста» «10051» «C:\Users\Public;D:\test» «.*» «^$» «cp866″‘
выполняется уже без одинарных кавычек, первое значение путь до скрипта нельзя включить в кавычки не будет запускаться, если только прописать первую команду на запуск скрипта!
Ошибка:
zabbix_get -s 192.168.ХХХ.ХХХ -p 10050 -k system.run'[«C:\zabbix\Scripts\dir-size-trapper-win-cp866-File.bat» «ИмяХоста» «10051» «C:\Users\Public;D:\test» «.*» «^$» «cp866»,nowait]’
ZBX_NOTSUPPORTED: Invalid item key format.
Linux экранирование идет сперва двойные кавычки, после одинарные. можно начинать с самого первого элемента
Windows экранирование сперва одинарные кавычки, после двойные. первый элемент экранировать нельзя
Запуск удаленного скрипта обнаружение файлов, через основной Windows
size-file.sh[{HOST.CONN},{$HOST.PORTS},runscriptwin,'{$SCRIPT.TRAPFILE}’,'»{HOST.HOST}»‘,'»{$HOST.PORTSACTIV}»‘,'»{$PUTFILE}»‘,'»{$FILTRFILE}»‘,'»{$HIDEFILE}»‘,'»{$KODR}»‘]
/usr/local/share/zabbix/externalscripts/size-file.sh 192.168.XXX.XXX 10050 runscriptwin «C:\zabbix\Scripts\dir-file-trapper-win-cp866-File.bat» ‘»ИмяХоста»‘ ‘»10051″‘ ‘»C:\Users\Public;D:\test»‘ ‘».*»‘ ‘»^$»‘ ‘»cp866″‘
Тесты слов с пробелами и экранированием
Для ключа в кавычках: traptest[«6»]
zabbix_sender -z 192.168.XXX.XXX -p 10051 -s «Имя хоста» -k traptest[\»6\»] -o «4096»
Для ключа в кавычках и с пробелом: traptest[«test top»]
zabbix_sender -z 192.168.XXX.XXX -p 10051 -s «Имя хоста» -k traptest[\»»test top»\»] -o «40999996»
Для ключа без кавычек с пробелом: traptest[test top] (На выходе с траппера кавычки нужны в элементе нет)
zabbix_sender -z 192.168.XXX.XXX -p 10051 -s «Имя хоста» -k traptest[«test top»] -o «409554jjj44556»
Без кавычек не создается элемент со спец символами например: folder[«/root/test/,29»]
Первый способ самый простой обнаружение элементов и работа через zabbix agent если ответ будет успевать приходить за 15-30 секунд, используем следующие правила обнаружения в зависимости от OS:
Linux Обнаружение файлов в определенной директории
Windows Обнаружение файлов в определенной директории
- LLD обнаружение файлов Linux Windows Работа через Zabbix Agent
Правило обнаружения: Linux Обнаружение файлов в определенной директории
- Linux Обнаружение файлов в определенной директории
Имя: Linux Обнаружение файлов в определенной директории
Тип: Внешняя проверка
Ключ: size-file.sh[{HOST.CONN},{$HOST.PORTS},discovery,{$PUTFILE},{$FILTRFILE},{$HIDEFILE},{$KODR},{HOST.HOST},{$HOST.PORTSACTIV}]
Интервал обновления: 24h
Период сохранения потерянных ресурсов: 7d
Описание:
Директория где искать задается в Макросе узла
Так же указать порт если он отличается от 10050
- Linux Прототипы элементов данных свойств файлов
- Прототип элемента Время изменения свойств файла
Имя: Время изменения свойств файла {#NAMEFILELINUX}
Тип: Zabbix Агент
Ключ: vfs.file.time[«{#FILESIZELINUX}»,change]
Тип информации: Числовой (с плавающей точкой)
Единица измерения: unixtime
Интервал обновления: 6h
Группы элементов данных: Проверка файлов
Описание: в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС
Создать активированным: V
- Прототип элемента Время изменения файла
Имя: Время изменения файла {#NAMEFILELINUX}
Тип: Zabbix Агент
Ключ: vfs.file.time[«{#FILESIZELINUX}»,modify]
Тип информации: Числовой (с плавающей точкой)
Единица измерения: unixtime
Интервал обновления: 6h
Группы элементов данных: Проверка файлов
Описание: в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС
Создать активированным: V
- Прототип элемента Время последнего доступа
Имя: Время последнего доступа {#NAMEFILELINUX}
Тип: Zabbix Агент
Ключ: vfs.file.time[«{#FILESIZELINUX}»,access]
Тип информации: Числовой (с плавающей точкой)
Единица измерения: unixtime
Интервал обновления: 6h
Группы элементов данных: Проверка файлов
Описание: в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС
Создать активированным:
- Прототип элемента Наличие файла
Имя: Наличие файла {#NAMEFILELINUX}
Тип: Zabbix Агент
Ключ: vfs.file.exists[«{#FILESIZELINUX}»]
Тип информации: Числовой (целое положительное)
Единица измерения:
Интервал обновления: 6h
Группы элементов данных: Проверка файлов
Описание:
1 — файл найден
0 — файл не найден
Создать активированным: V
- Прототип элемента Размер файла
Имя: Размер файла {#NAMEFILELINUX}
Тип: Zabbix Агент
Ключ: vfs.file.size[«{#FILESIZELINUX}»]
Тип информации: Числовой (с плавающей точкой)
Единица измерения: B
Интервал обновления: 6h
Группы элементов данных: Проверка файлов
Описание: Запрос 4 раза в сутки, получаем размер файла в байтах
Создать активированным: V
Прототипы триггеров
- Linux Обнаружение файлов Прототипы триггеров
- Linux Обнаружение файлов Прототип триггера Размер файла Более
Имя: {HOST.NAME}-Размер-файла-{#NAMEFILELINUX}-Более>9GB
Важность: Средняя
Выражение:
{Discovery-size-file:vfs.file.size[«{#FILESIZELINUX}»].last()}>9663676416 or
{Discovery-size-file:vfs.file.size[«{#FILESIZELINUX}»].nodata(25h)}=1
Разрешить закрывать вручную: V
Описание:
Размер файла {#FILESIZELINUX} на {HOST.NAME} более ГБ
Последнее значение: {ITEM.VALUE} {ITEM.LASTVALUE} ({TIME})
Если данных нет 25 часов ошибка
Создать активированным: V
- Linux Обнаружение файлов Прототип триггера Файл старый или отсутствует либо битый
Имя: Файл старый или отсутствует либо битый {#NAMEFILELINUX}
Важность: Средняя
Выражение:
{Discovery-size-file:vfs.file.exists[«{#FILESIZELINUX}»].max(25h)}=0 or
{Discovery-size-file:vfs.file.time[«{#FILESIZELINUX}»,modify].fuzzytime(25h)}=0 or
{Discovery-size-file:vfs.file.size[«{#FILESIZELINUX}»].last(#2)}/{Discovery-size-file:vfs.file.size[«{#FILESIZELINUX}»].last()}<0.9 or
{Discovery-size-file:vfs.file.size[«{#FILESIZELINUX}»].last()}/{Discovery-size-file:vfs.file.size[«{#FILESIZELINUX}»].last(#2)}>1.1
Разрешить закрывать вручную: V
Описание:
Проверки:
1.Наличие файла
2.Дата изменения файла не более 25 часов
3.Проверяем что файл не битый и увеличения размера происходит нормально.
Старый размер делим на новый должно быть не меньше <0.9 или
новый размер файла делить на старый значение должно быть не больше>1.1
Значение должно быть в районе 1
Путь {#FILESIZELINUX}
Создать активированным: V
Windows Обнаружение файлов в определенной директории
- Windows Обнаружение файлов в определенной директории
Прототипы Элементов Windows Обнаружение файлов
- Прототипы Элементов Windows Обнаружение файлов
Windows Обнаружение файлов Прототипы триггеров
- Windows Обнаружение файлов Прототипы триггеров
Прототипы элемента данных Windows, все аналогично прототипам Элементов данных Linux
Прототипы триггеров так же аналогичны Linux прототипам
Отличие в макросах:
{#NAMEFILEWIN} — Имя файла
{#FILESIZEWIN} — путь и имя файла
При возникновении ошибки в правиле обнаружения ошибка прилетает в элемент данных
Имя: Ошибки Правила Обнаружения Файлов
Тип: Zabbix траппер
Ключ: errordiscoveryfile
Тип информации: Текст
Период хранения истории: 90d
Группы элементов данных: Проверка файлов
Активировано: V
- Ошибки Правила Обнаружения Файлов
Скрипт size-file.sh
Код: Выделить всё
#!/bin/bash
#2021/09/01 v1
# Автор Мамзиков Артём Андреевич Описание по скрипту
# Получение списка файлов в папке в определенной директории и мониторинг их размера
# Объявим входные переменные(variable) и если входная переменная пустая задаем дефолтные настройки для некоторых переменных
IP=$1
PORT=${2:-10050}
BLOCSCRIPT=$3
DIRPUT=$4
FILTR=${5:-.*}
HIDE=${6:-^$}
KODR="${7:-cp866}"
HOSTNAME=$8
ACTIVPORT=${9:-10051}
# Для теста просмотр входных переменных
STV=$(date "+%F %T")
#echo "${STV}" "${IP}" "${PORT}" "${BLOCSCRIPT}" "${DIRPUT}" "${FILTR}" "${HIDE}" "${HOSTNAME}" "${ACTIVPORT}" >> /tmp/log
IFS=$'\n'
SEP=""
if [[ $BLOCSCRIPT = "discovery" ]]
then
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=';' read -ra sumdir < <(echo $DIRPUT)
# Печать разделенной строки
for puti in "${sumdir[@]}"
do
# ls -aF a -отобразить все содержимое, параметр F -Добавить специальные символы к именам файлов, которые показывают, что это за файл, -v "/" не отображать директории(папки)
get=`zabbix_get -s $IP -p $PORT -k system.run["ls -aF "${puti}"|grep -av "/""]`
# Запрашиваем файлы в папке циклом, так же можем задать соответствие имен через |
#for filep in $(echo "${get}" 2>/dev/null| grep -i -E -a -w "$5")
# убрать спец символы в конце файлов|Для выполнения команды в sed указать команду $(команда) например $(date +"%d.%m.%Y") можно дополнить \|искомые\|искомые'/Ip' получаем sed -n '/'$(date +"%d.%m.%Y")'\|искомые\|искомые'/Ip'
for filep in $(echo "${get}" 2>/dev/null|sed 's/\*$\|\@$//g'|sed -n '/'$FILTR'/Ip'|sed -e '/'$HIDE'/d')
do
JSON=$JSON"$SEP\n{\"{#FILESIZELINUX}\":\""${puti}"/$filep\", \"{#NAMEFILELINUX}\":\"$filep\"}"
SEP=", "
done
done
# Выводим результат в json
JSON="["$JSON"\n]"
echo -e "${JSON}"
fi
if [[ $BLOCSCRIPT = "discoverywin" ]]
then
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=';' read -ra sumdir < <(echo $DIRPUT)
# Печать разделенной строки
for puti in "${sumdir[@]}"
do
get=`zabbix_get -s $IP -p $PORT -k system.run["dir /a-d /B \""${puti}"\""]`
# Избавимся от CR Возврат каретки если нужно можно еще от LF Перевод строки \r \n ; главное убрать \r иначе ломает весь вывод
obr=$(echo "${get}"|tr -d '\r')
# Запрашиваем файлы циклом
#for filep in "${obr}"
# Если корректно не отображается русский перекодируем из cp866 или cp1251 в utf8
for filep in $(echo "${obr}"|iconv -f "${KODR}" -t utf8| sed -n '/'$FILTR'/Ip'|sed -e '/'$HIDE'/d')
do
# Для передачи на заббикс сервер при выводе должно быт два слеша \\ (на каждом этапе теряется 1 слеш и 1 слеш экранирует другой)
#put=$(echo "${puti}"|sed 's/\\/\\\\\\/g')
SL='\\\'
put="${puti//\\/\'\\\\\\\'}"
JSON=$JSON"$SEP\n{\"{#FILESIZEWIN}\":\""${put}"'$SL'"${filep}"\", \"{#NAMEFILEWIN}\":\"$filep\"}"
# Ввиду сложности передачи слешей windows, преобразуем в пути \ в обратные слеши /
#put=$(echo "${puti}"|sed 's/\\/\//g')
#put="${puti//\\//}"
# Объединим все в один путь, в одну выходную переменную
#JSON=$JSON"$SEP\n{\"{#FILESIZEWIN}\":\""${put}"/$filep\", \"{#NAMEFILEWIN}\":\"$filep\"}"
SEP=", "
done
done
# Выводим результат в json
JSON="["$JSON"\n]"
# Вывод построчно с экранированными кавычками слешами '\\'
JSON=$(echo -e "${JSON}")
# Избавимся от одинарных кавычек ' и получим читаемый построчный вариант
echo "${JSON//\'/}"
fi
# Проверка на ошибки, так как для 1 узла одновременно могут быть указаны несколько программ одна из них может давать ошибку в этом случае от другой программы JONS не примется, поэтому скрываем ошибки
# Ответы с хоста|Преобразуем в 1 строку|Ищем регуляркой ошибки, если найдено выводим ERROR и убираем из вывода HW с ошибкой. А ошибки отправляем траппером в элемент "Ошибки Правила Обнаружения HM"|Скрыть вывод
check=$(echo "${get}"|tr -d '\r\n'| sed -n 's/No Instance(s) Available.*\|Node.*\|ERROR.*\|Invalid.*\|fatal:.*\|команда не найдена.*\|.*невозможно получить доступ.*\|.*Cannot obtain file information.*\|.*Нет такого файла или каталога.*\|.*No such file or directory.*\|.*Файл не найден.*/ERROR/Ip')
# Указываем IP или DNS Заббикс сервера, по умолчанию должно работать localhost так как скрипт находится на самом сервере заббикс.
IPZBXSERVER=localhost
# Очистить строки если ошибка в ПО, по имени программы удалим строки из вывода содержащие ее.; отправить траппер с ошибкой.
if [[ ${check} == *ERROR* ]]; then zabbix_sender -z $IPZBXSERVER -p $ACTIVPORT -s ""${HOSTNAME}"" -k errordiscoveryfile -o ""${get}"" > /dev/null;fi
if [[ $BLOCSCRIPT = "runscript" ]]
then
zabbix_get -s $IP -p $PORT -k system.run["$4 $5 $6 $7 $8 $9 ${10}",nowait]
# Для тестирования вывод в лог
#SDATE=`date '+%d.%m.%y %H:%M:%S'`
#echo ${SDATE} zabbix_get -s $1 -p $2 -k system.run["$4 $5 $6 $7 $8 $9 ${10}",nowait] >> /tmp/log
fi
if [[ $BLOCSCRIPT = "runscriptwin" ]]
then
# Удалим одинарные кавычки из входных переменных, так как они не принимаются в cmd нужны только 2-ные кавычки
four=`echo $4|sed 's/^'\''\|'\''$//g'`
five=`echo $5|sed 's/^'\''\|'\''$//g'`
six=`echo $6|sed 's/^'\''\|'\''$//g'`
seven=`echo $7|sed 's/^'\''\|'\''$//g'`
eight=`echo $8|sed 's/^'\''\|'\''$//g'`
nine=`echo $9|sed 's/^'\''\|'\''$//g'`
ten=`echo ${10}|sed 's/^'\''\|'\''$//g'`
zabbix_get -s $IP -p $PORT -k system.run["${four} ${five} ${six} ${seven} ${eight} ${nine} ${ten}",nowait]
# Для тестирования вывод в лог
#SDATE=`date '+%d.%m.%y %H:%M:%S'`
#echo ${SDATE} zabbix_get -s $1 -k system.run["${four} ${five} ${six} ${seven} ${eight} ${nine} ${ten}",nowait] >> /tmp/log
fi
2 Способ получение данных через trapper
Обнаружение происходит аналогично 1 способу, но прототипы элементов отличаются от первого варианта.
Для долгих запросов которые не успевают опоросится через Zabbix Agent.
- LLD обнаружение файлов Linux Windows Работа через Trapper
Имя: Linux Обнаружение Файлов в определенной директории Trapper
Тип: Внешняя проверка
Ключ: size-file.sh[{HOST.CONN},{$HOST.PORTS},discovery,{$PUTFILE},{$FILTRFILE},{$HIDEFILE},{$KODR},{HOST.HOST},{$HOST.PORTSACTIV},trapper]
Интервал обновления: 24h
Период сохранения потерянных ресурсов: 7d
Описание:
Директория где искать задается в Макросе узла
Так же указать порт если он отличается от 10050
Для долгих запросов, используем скрипт, через крон или заббикс элемент и траппер для передачи данных информации о файлах
- Linux Обнаружение Файлов в определенной директории Trapper
- Linux Прототипы элементов данных свойств файлов Trapper
Имя: Trapper-Время изменения свойств файла {#NAMEFILELINUX}
Тип: Zabbix траппер
Ключ: trapstimechange[«{#FILESIZELINUX}»]
Тип информации: Текст
Группы элементов данных: Проверка файлов
Описание: в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС
Создать активированным: V
На момент написание дата приходит как есть, а не в числовом значении unixtime .
- Trapper-Время изменения свойств файла {#NAMEFILELINUX}
Остальные прототипы элементов так же идентичны 1 способу.
Отличие в том что:
1.В имя добавлено: Trapper-
2.Тип: Zabbix траппер
3.Ключи: trapstimechange[«{#FILESIZELINUX}»] ; trapstimemodify[«{#FILESIZELINUX}»] ; trapstimeaccess[«{#FILESIZELINUX}»] ; trapexists[«{#FILESIZELINUX}»] ; trapsizefile[«{#FILESIZELINUX}»]
Данные приходят в элементы при помощи скрипта который необходимо поместить на наблюдаемый узел.
Пример расположения: /etc/zabbix/scripts/dir-file-trappet.sh
Код: Выделить всё
#!/bin/bash
# Входные данные $1 -Имя узла сети {HOST.HOST} ; $2 -Активный порт агента ;$3 - директории через точку запятую какие нужно проверить
# Пример команды ./ИмяТекущегоСкрипта.sh "HOST.HOST" "/root;/var/www/owncloud/data"
# Данный скрипт в указанной папке сканирует файлы, далее поочередно запрашивает их размер
# Объявим входные переменные(variable) и если входная переменная пустая задаем дефолтные настройки для некоторых переменных
NAMEHOST=$1
PORT=${2:-10051}
DIRPUT=$3
FILTR=${4:-.*}
HIDE=${5:-^$}
# Для теста просмотр входных переменных
STV=$(date "+%F %T")
#echo "${STV}" "${NAMEHOST}" "${DIRPUT}" "${FILTR}" "${HIDE}" >> log
# Указываем IP или DNS Заббикс сервера, по умолчанию должно работать localhost так как скрипт находится на самом сервере заббикс.
IPZBXSERVER=192.168.175.111
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=';' read -ra sumdir < <(echo "${DIRPUT}")
# Печать разделенной строки
for puti in "${sumdir[@]}"
do
# # ls -aF a -отобразить все содержимое, параметр F -Добавить специальные символы к именам файлов, которые показывают, что это за файл|скроем из вывода директории (папки)
get=`ls -aF "${puti}"|grep -av "/"`
# Запрашиваем файлы циклом
IFS=$'\n'
for filep in $(echo "${get}" 2>/dev/null|sed 's/\*$\|\@$//g'|sed -n '/'$FILTR'/Ip'|sed -e '/'$HIDE'/d')
do
putfile="${puti}"/"${filep}"
#Наличие файла
if [ -f "${putfile}" ]; then exists=1; else exists=0; fi
# Получение размера в байтах и даты изменения
features=`du -sb --time "${putfile}"`
# Получение размера в байтах | первый столбец
sizefile=`echo "${features}"| awk '{print $1}'`
# Время изменения файла в формате ГГГГ.ММ.ДД ЧЧ:ММ
timemodify=`echo "${features}"| awk '{print $2, $3}'`
# Время изменения свойств файла в формате ГГГГ.ММ.ДД ЧЧ:ММ
timechange=`du -sb --time=ctime "${putfile}"| awk '{print $2, $3}'`
# Время последнего доступа в формате ГГГГ.ММ.ДД ЧЧ:ММ
timeaccess=`du -sb --time=atime "${putfile}"| awk '{print $2, $3}'`
# Формирование массива JONS
JSON=$JSON""${putfile}" exists:"${exists}" sizefile:"${sizefile}" timemodify:"${timemodify}" timechange:"${timechange}" timeaccess:"${timeaccess}"\n"
# Вывод по очередно и отправка траппетом для каждого файла отдельно, Для правила обнаружения Linux Обнаружение Файлов в определенной директории Trapper
#echo "${putfile}" exists:"${exists}" sizefile:"${sizefile}" timemodify:"${timemodify}" timechange:"${timechange}" timeaccess:"${timeaccess}"
# Отправка данных Наличие файла
#zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k trapexists[\"""${putfile}""\"] -o ""${exists}""
# Отправка данных Размер файла
#zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k trapsizefile[\"""${putfile}""\"] -o ""${sizefile}""
# Отправка данных Время изменения файла
#zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k trapstimemodify[\"""${putfile}""\"] -o ""${timemodify}""
# Отправка данных Время изменения свойств файла
#zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k trapstimechange[\"""${putfile}""\"] -o ""${timechange}""
# Отправка данных Время последнего доступа
#zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k trapstimeaccess[\"""${putfile}""\"] -o ""${timeaccess}""
# Очистка переменных, от случайного попадания предыдущего значения
exists=
sizefile=
timemodify=
timechange=
timeaccess=
done
done
# Вывод одним списком для всех файлов и отправка в виде Лога, Для правила обнаружения Linux Обнаружение Файлов в определенной директории Trapper Логом, через элемент Info-File-Trapper-LOG-Linux
#echo -e "${JSON}"
# Вывод визуально построчно
JSON=$(echo -e "${JSON}")
zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k filelog -o "${JSON}"
# Проверка на ошибки, так как для 1 узла одновременно могут быть указаны несколько программ одна из них может давать ошибку в этом случае от другой программы JONS не примется, поэтому скрываем ошибки
# Ответы с хоста|Преобразуем в 1 строку|Ищем регуляркой ошибки, если найдено выводим ERROR и убираем из вывода HW с ошибкой. А ошибки отправляем траппером в элемент "Ошибки Правила Обнаружения HM"|Скрыть вывод
check=$(echo "${get}"|tr -d '\r\n'| sed -n 's/No Instance(s) Available.*\|Node.*\|ERROR.*\|Invalid.*\|fatal:.*\|команда не найдена.*\|невозможно получить доступ.*\|Cannot obtain file information.*\|Нет такого файла или каталога.*\|No such file or directory.*\|.*Файл не найден.*/ERROR/Ip')
# Очистить строки если ошибка в ПО, по имени программы удалим строки из вывода содержащие ее.; отправить траппер с ошибкой.
if [[ ${check} == *ERROR* ]]; then zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k errordiscoveryfile -o ""${get}"" > /dev/null;fi
Для 2 способа раскомментировать данный блок в скрипте как показано ниже
Его нужно раскоментировать в скрипте для данного способа
Код: Выделить всё
# Отправка данных Наличие файла
zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k trapexists[\"""${putfile}""\"] -o ""${exists}""
# Отправка данных Размер файла
zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k trapsizefile[\"""${putfile}""\"] -o ""${sizefile}""
# Отправка данных Время изменения файла
zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k trapstimemodify[\"""${putfile}""\"] -o ""${timemodify}""
# Отправка данных Время изменения свойств файла
zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k trapstimechange[\"""${putfile}""\"] -o ""${timechange}""
# Отправка данных Время последнего доступа
zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k trapstimeaccess[\"""${putfile}""\"] -o ""${timeaccess}""
Данную строку наоборот закомментировать, она для 3 способа
Код: Выделить всё
#zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k filelog -o "${JSON}"
Как запускается скрипт dir-file-trappet.sh
Запуск происходит через элемент данных в заббиксе, при желании можно сделать через Cron указав переменные.
- Запуск удаленного скрипта обнаружение файлов Linux Trapper
Имя: Запуск удаленного скрипта обнаружение файлов, через заббикс агент Linux
Тип: Zabbix Агент
Ключ: system.run[‘{$SCRIPT.TRAPFILE}’ «{HOST.HOST}» «{$HOST.PORTSACTIV}» «{$PUTFILE}» «{$FILTRFILE}» «{$HIDEFILE}»,nowait]
Тип информации: Числовой(целое положительное)
Интервал обновления: 6h
Группы элементов данных: Проверка файлов
Описание:
Запуск удаленного скрипта, через заббикс агент
Для получение данных о размере файлов через trapper
Вместо крона запуск со стороны заббикс сервера
Активировано:
- Запуск удаленного скрипта обнаружение файлов, через заббикс агент Linux
Имя: Запуск удаленного скрипта обнаружение файлов, через основной Linux
Тип: Внешняя проверка
Ключ: size-file.sh[{HOST.CONN},{$HOST.PORTS},runscript,'{$SCRIPT.TRAPFILE}’,»‘{HOST.HOST}'»,»‘{$HOST.PORTSACTIV}'»,»‘{$PUTFILE}'»,»‘{$FILTRFILE}'»,»‘{$HIDEFILE}'»]
Тип информации: Числовой(целое положительное)
Интервал обновления: 6h
Группы элементов данных: Проверка файлов
Описание:
Запуск удаленного скрипта, через основной
Для получение данных о размере файлов через trapper
Вместо крона запуск со стороны заббикс сервера
Получаем команду
zabbix_get -s $IP -p $PORT -k system.run[«$4 $5 $6 $7 $8 $9 ${10}»,nowait]
Активировано:
- Запуск удаленного скрипта обнаружение файлов, через основной Linux
3 Способ получение данных через trapper-Log
Похож на 2 способ, отличие в том что скрипт (тот же самый dir-file-trappet.sh) собирает данные и одним разом отправляет их в 1 элемент данных. Далее прототипы элементов данных Зависимы от основанного элемента куда пришли все данные, после предобработкой регулярным выражением разбираются данные.
Данная строка должны быть раскомментирована
Код: Выделить всё
zabbix_sender -z "${IPZBXSERVER}" -p "${PORT}" -s ""${NAMEHOST}"" -k filelog -o "${JSON}"
Если используются оба 2 и 3 условия для разных узлов, оба варианта в скрипте должны быть раскомментированы!
Возможно для таких случаев сделать условие в скрипте и добавить макрос. (лишний раз впустую не запускать zabbix_sender и не отправлять данные в никуда)
Данные будут попадать в элемент:
Имя: Info-File-Trapper-LOG-Linux
Тип: Zabbix траппер
Ключ: filelog
Тип информации: Текст
Период хранения истории: 90d
Группы элементов данных: Проверка файлов
Описание:
Для долгих элементов подсчета размера файлов
Общий Лог пути и размер файлов, на него настраиваем зависимые элементы
Активировать необходимо если используется правило авто обнаружения
Linux Обнаружение файлов в определенной директории Trapper Логом
Активировано: V
- Info-File-Trapper-LOG-Linux
- LLD обнаружение файлов Linux Windows Работа через Trapper-Log
Имя: Linux Обнаружение Файлов в определенной директории Trapper Логом
Тип: Внешняя проверка
Ключ: size-file.sh[{HOST.CONN},{$HOST.PORTS},discovery,{$PUTFILE},{$FILTRFILE},{$HIDEFILE},{$KODR},{HOST.HOST},{$HOST.PORTSACTIV},trapper_log]
Интервал обновления: 24h
Период сохранения потерянных ресурсов: 7d
Описание:
Директория где искать задается в Макросе узла
Так же указать порт если он отличается от 10050
Для долгих запросов,используем скрипт, через крон или элемент заббикс далее траппер отправляет данные одним разом (логом) в 1 элемент, после зависимые элементы распаривают данные.
- Linux Обнаружение Файлов в определенной директории Trapper Логом
- Linux Прототипы элементов данных свойств файлов Trapper-Log
Прототип элемента данных
Имя: Trapper-LOG-Время изменения свойств файла {#NAMEFILELINUX}
Тип: Зависимый элемент данных
Основной элемент данных: Обнаружение файлов и запрос их размера: Info-File-Trapper-LOG-Linux
Ключ: logtimechange[«{#FILESIZELINUX}»]
Тип информации: Текст
Группы элементов данных: Проверка файлов
Описание:
Получаем Время изменения свойств файла {#NAMEFILELINUX} с помощью скрипта и траппера , которые долго обсчитываются. Получаем их из общего лога элемента и обрабатываем регулярным выражением.
Полный путь {#FILESIZELINUX}
формате ГГГГ.ММ.ДД ЧЧ:ММ
Создать активированным: V
Предобработка
Регулярное выражение
{#FILESIZELINUX}.*timechange:(.*) timeaccess:
вывод \1
- Trapper-LOG-Время изменения свойств файла {#NAMEFILELINUX}
Остальные прототипы элементов так же идентичны 1 и 2 способу.
Отличие в том что:
1.В имя добавлено: Trapper-LOG-
2.Тип: Зависимый элемент данных
3.Основной элемент данных: Обнаружение файлов и запрос их размера: Info-File-Trapper-LOG-Linux
4.Ключи: logtimechange[«{#FILESIZELINUX}»] ; logtimemodify[«{#FILESIZELINUX}»] ; logtimeaccess[«{#FILESIZELINUX}»] ; logexists[«{#FILESIZELINUX}»] ; logsizefile[«{#FILESIZELINUX}»]
5. Предобработка: регулярное выражение
{#FILESIZELINUX}.*timechange:(.*) timeaccess:
{#FILESIZELINUX}.*timemodify:(.*) timechange
{#FILESIZELINUX}.*timeaccess:(.*)
{#FILESIZELINUX}.*exists:(.*) sizefile:
{#FILESIZELINUX}.*sizefile:(.*) timemodify:
Вывод везде в: \1
Чем мы можем вам сегодня помочь?
Изменено: Пт, 25 Июн, 2021 на 3:09 PM
Предварительно настоятельно рекомендуется включить шифрование между сервером и агентом zabbix — Настройка шифрования с использованием Pre-shared ключей
Zabbix можно использовать для централизованного мониторинга и анализа файлов журналов с/без поддержки ротации журналов. Можно использовать оповещения для предупреждения пользователей, когда файл журнала содержит конкретные строки или шаблоны строк. (подробнее Специфичные ключи элементов данных для Windows)
Для наблюдения за файлом журнала у вас должно быть:
- Работающий Zabbix агент на узле сети (Установка Zabbix Agent 2 5.X на ОС Windows)
- Настроенный элемент данных для мониторинга журнала
В данном примере будет рассматриваться мониторинг аудита отказа в журнале входа в систему. Необходимо настроить Узел сети на стороне Zabbix сервера. Перейдите по адресу https://monitoring.cloud24.kz, введите логин и пароль
Перейдите в Настройка — Узлы сети и выберите необходимый узел сети. Перейдите во кладку Элементы данных и нажмите на кнопку Создать элемент данных. В появившемся окне в поле Имя впишите наименование для нового Элемента данных, поле Тип выберите из выпадающего списка Zabbix агент (активный), в поле ключ впишите значение
eventlog[Security,,,,4625,,skip]
Тип информации выберите Журнал (лог). Для применения изменений нажмите Обновить.
Была ли эта статья полезной?
Да
Нет
Отправить отзыв
Извините, что не удалось помочь. У вас есть идеи, что можно улучшить в этой статье?
Статьи по теме
Zabbix — монитор событий журнала в Windows
Zabbix — монитор событий журнала в Windows
Список оборудования:
В следующем разделе представлен список оборудования, использованного для создания этого учебника Zabbix.
Каждое оборудование, перечисленное выше, можно найти на сайте Amazon.
Zabbix Playlist:
На этой странице мы предлагаем быстрый доступ к списку видео, связанных с установкой Zabbix.
Не забудьте подписаться на наш канал на YouTube FKIT.
Zabbix Связанное руководство:
На этой странице мы предлагаем быстрый доступ к списку учебных пособий, связанных с установкой Zabbix.
Требуется настройка агента Zabbix
Во-первых, агент Zabbix, установленный на компьютере Windows, должен быть настроен в активном режиме.
Вот пример файла конфигурации агента Zabbix в пассивном режиме: zabbix_agentd.conf
Вот пример файла конфигурации агента Zabbix в активном режиме: zabbix_agentd.conf
Вы завершили необходимую часть конфигурации.
Учебник — Zabbix монитор Файл журнала Windows
Теперь нам нужно получить доступ к панели инструментов Zabbix-сервера и добавить компьютер с Windows в качестве хоста.
Откройте браузер и введите IP-адрес вашего веб-сервера плюс / zabbix.
В нашем примере в браузере был введен следующий URL:
• http://35.162.85.57/zabbix
На экране входа в систему используйте имя пользователя по умолчанию и пароль по умолчанию.
• Имя пользователя по умолчанию: Admin
• Пароль по умолчанию: zabbix
После успешного входа вы будете отправлены на Zabbix Dashboard.
На экране панели инструментов откройте меню «Конфигурация» и выберите опцию «Хост».
В правом верхнем углу экрана нажмите кнопку «Создать хост».
На экране конфигурации хоста вам нужно будет ввести следующую информацию:
• Имя хоста — введите имя хоста для мониторинга.
• Видимое имя хоста — повторите имя хоста.
• Новая группа — введите имя для идентификации группы похожих устройств.
• Интерфейс агента — введите IP-адрес имени хоста.
Вот оригинальное изображение, перед нашей конфигурацией.
Вот новое изображение с нашей конфигурацией.
Нажмите кнопку Добавить, чтобы включить этот хост в базу данных Zabbix.
На экране панели инструментов откройте меню «Конфигурация» и выберите опцию «Хост».
Найдите и нажмите на имя хоста, который вы создали ранее.
В нашем примере мы выбрали имя хоста: WINDOWS-SERVER-01
На экране свойств хоста перейдите на вкладку Приложения.
В верхней правой части экрана нажмите кнопку «Создать приложение».
На экране приложений хоста создайте новое приложение с именем: LOG
После завершения создания приложения перейдите на вкладку «Элементы».
В верхней правой части экрана нажмите кнопку «Создать элемент».
На экране «Создание элемента» необходимо настроить следующие элементы:
• Имя: введите идентификацию, например: системный журнал Windows
• Тип: Zabbix агент (активный)
• Key: eventlog [System ,,,,,, skip]
• Тип информации: журнал
• Интервал обновления: 1 секунда
• Применение: LOG
Нажмите на кнопку Добавить, чтобы завершить создание элемента и подождите 5 минут.
Чтобы протестировать свою конфигурацию, войдите в меню «Мониторинг» и выберите опцию «Последние данные».
Используйте конфигурацию фильтра для выбора нужного имени хоста и нажмите кнопку «Применить».
В нашем примере мы выбрали имя хоста WINDOWS-SERVER-01.
Вы должны быть в состоянии видеть результаты мониторинга вашего файла журнала Windows, используя Zabbix.
Нажмите на опцию Журнал, чтобы увидеть больше подробностей журнала событий Windows.
В нашем примере мы отслеживаем журнал системных событий Windows.
Поздравляем! Вы настроили функцию мониторинга журнала событий Zabbix в Windows.
VirtualCoin CISSP, PMP, CCNP, MCSE, LPIC22019-10-08T16:05:00-03:00
Related Posts
Page load link
Ok