- Мониторинг дискового пространства активным Zabbix-агентом
- Решение.
- Создаём шаблон.
- Назначаем шаблон компьютеру
- Аренда серверов.
- 1С:Предприятие “в облаке”.
- IP-телефония в офис.
- #Автоматизация #Технологии #Процессы #ИТ #Записки #Журнал #Блог #Форум
- Обнаружение папок и запрос их размера LLD Шаблон + Скрипт
- Обнаружение папок и запрос их размера LLD Шаблон + Скрипт
- Обнаружение папок и запрос их размера LLD Шаблон + Скрипт
Мониторинг дискового пространства активным Zabbix-агентом
Для того, чтобы при помощи активного агента 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% свободно на системном диске компьютера
Назначаем шаблон компьютеру
И начинаем получать данные… 🙂
Аренда серверов.
Надёжные сервера с Pro-бегом
У ВАС В ОФИСЕ!
1С:Предприятие “в облаке”.
Безопасный доступ к своей 1С из офиса, командировки и т.п.!
IP-телефония в офис.
IP-телефония давно перестала быть роскошью в офисах.
Хотите себе в офис цифровую АТС — обращайтесь. !
#Автоматизация #Технологии #Процессы #ИТ #Записки #Журнал #Блог #Форум
Форум для различных тем в большей части ИТ
Обнаружение папок и запрос их размера LLD Шаблон + Скрипт
Обнаружение папок и запрос их размера LLD Шаблон + Скрипт
Сообщение Артём Мамзиков » Чт сен 24, 2020 16:26 #1
Шаблон с Zabbix 4.2
Проверка доступна на Linux и 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\Папка
Размер директории (в байтах). Целое число директория — абсолютный путь к директории
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[директория, , , , , , , , , ]
vfs.dir.size[директория, , , , ]
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, ]
Более подробно об этих ключах читаем тут
Для 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»
#!/bin/bash
#2020/12/15 v1.3
# Автор Мамзиков Артём Андреевич Описание по скрипту
# Получение списка папок в определенной директории и мониторинг их размера
if [[ $2 = «discovery» ]]
then
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=’;’ read -ra sumdir Скрипт size-dir-port.sh
#!/bin/bash
#2020/12/15 v1.3
# Автор Мамзиков Артём Андреевич Описание по скрипту
# Получение списка папок в определенной директории и мониторинг их размера
if [[ $3 = «discovery» ]]
then
# Проверка нескольких директорий на 1 хосте, делим через ;
IFS=’;’ read -ra sumdir Size-Dir
#!/bin/bash
#2020/09/24 v1.0
# Автор Мамзиков Артём Андреевич Описание по скрипту
# Получение списка папок в определенной дириктории и мониторинг их размера
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 «$
# Запрашиваем папки циклом
#for dirp in «$
# Если корректно не отображается русский перекодируем из cp866 в utf8 ,кому нужно можно так же из cp1251 в utf8
for dirp in $(echo «$
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 «$
# Запрашиваем папки циклом
#for dirp in «$
# Если корректно не отображается русский перекодируем из cp1251 в utf8
for dirp in $(echo «$
do
JSON=$JSON»$SEP\n<\"<#DIRSIZEWINCP>\»:\»$dirp\»>»
SEP=», »
done
# Выводим результат в json data
JSON=$JSON»\n]>»
echo -e $JSON
fi
Группа элементов данных Size-Dir
Правило
Имя Linux Обнаружение папок в определенной директории
Тип Внешняя проверка
Ключ size-dir.sh[
Интервал обновления 24h
Период сохранения потерянных ресурсов 30d
Описание Директория где искать задается в Макросе узла
Активировано V
Прототип элемента
Имя Size-Dir-
Тип Zabbix agent
Ключ vfs.dir.size[<$PATH.DIR><#DIRSIZELINUX>]
Тип информации Числовой с плавающей точкой
Единица измерения B
Интервал обновления 24h
Группы элементов данных Size-Dir
Описание
Запрос 1 раза в сутки, получаем размер директории в байтах
режим — возможные значения:
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-второй переменный входной параметр
Если данных нет 25 часов ошибка
Правило
Имя Windows Обнаружение папок в определенной дириктории
Тип Внешняя проверка
Ключ size-dir.sh[
Интервал обновления 24h
Период сохранения потерянных ресурсов 30d
Описание Директория где искать задается в Макросе узла
Активировано
Прототип элемента
Имя Size-Dir-
Тип Zabbix agent
Ключ vfs.dir.size[<$PATH.DIR><#DIRSIZEWIN>]
Тип информации Числовой с плавающей точкой
Единица измерения B
Интервал обновления 24h
Группы элементов данных Size-Dir
Описание
Запрос 1 раза в сутки, получаем размер директории в байтах
режим — возможные значения:
apparent (по умолчанию) — получение реальных размеров файлов вместо использования диска (работает как du -sb директория),
disk — получение использования диска (работает как du -s -B1 директория). В отличии от du команды, элемент данных vfs.dir.size принимает во внимание скрытые файлы при вычислении размера директории (работает как du -sb .[^.]* * в пределах директории).
макс_глубина — максимальная глубина сканируемых поддиректорий. -1 (по умолчанию) — без ограничения,
0 — без проверки нижестоящих поддиректорий.
Если нет данных 25 часов ошибка
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 модификаторов для поиска соответствия символов после указанной строки
(?
^ Крышка. Начало строки
$ Конец строки
\d Любая цифра
\D Не цифра
\s Пробел, табуляция, перенос строки
\S Не пробел
\w Любая буква латиницы, цифра, или знак подчёркивания
\W Не латиница, не цифра, не подчёркивание
| Или. Соединяет несколько вариантов
\b Граница слова. Применяется когда нужно выделить, что искомые символы являются словом, а не частью другого слова
\B Не граница слова
\ Конец слова
\A Начало текста
\Z Конец текста
* Повторитель. Означает что предшествующий символ может работать 0 и более раз
+ Количество предшествующего не менее 1-го.
? Ограничитель. Не более одного раза
[ ] В квадратных скобках задаются символы к поиску, например [a-яА-Я], или 6
[^ ] Исключает из поиска символы указанные в квадратных скобках
() В круглые скобки заключаются все комбинации с «или» и поиск начала и конца строк
< >В фигурных скобках указывается точное количество вхождений, например если надо две цифры, то \d<2>, если две или четыре, то \d<2,4>, если четыре и более, то <4,>
\n Новая строка
Заменить точку
Пример. Пример. Пример.
(. *?\K symblo )
(. *?\K\.)<1>
((. *?\.)<0>.*?)\. замена $1 (на что заменить)
(. *?\.)
все комбинации с «или» и поиск начала и конца строк, Не более одного раза
((?:\G(?!\A)|copy\s+»(?=[^»]\.cpy»))[^\\»]*)\\
Обнаружение папок и запрос их размера LLD Шаблон + Скрипт
Сообщение Sergh » Пт ноя 13, 2020 13:03 #2
Добрый день. Подскажите пожалуйста, пытаюсь реализовать данную функцию, но сталкиваюсь с этой проблемой. Заббикс обнаружением папки находит, но не может создать из них элементы данных как я понимаю.
Invalid discovery rule value: cannot parse as a valid JSON object: invalid control character in string data at: ‘
«>,
<"<#DIRSIZEWIN>«:».NET v4.5 Classic
«>,