Zabbix проверка свободного места на диске
При помощи вычисляемых элементов данных вы можете выполнять подсчеты на основании других элементов данных.
Таким образом, вычисляемые элементы данных являются одним из способов создания виртуальных источников данных. Значения будут периодически вычисляться на основе арифметического выражения. Все вычисления выполняются Zabbix сервером - Zabbix агенты и прокси не участвуют в подсчете вычисляемых элементов данных и не имеют никаких данных для этого.
Полученные данные записываются в базу данных Zabbix, как и для любого другого элемента данных - это означает хранение значений истории и динамики изменений для быстрой генерации графиков. Созданные элементы данных можно использовать в выражениях триггеров, сослаться макросами или другими объектами, также как и на любой другой тип элементов данных.
Для использования вычисляемых элементов данных, выберите тип элемента данных Вычисляемое.
2 Настраиваемые поля
Ключ уникальный идентификатор элемента данных (в пределах узла сети). Вы можете создать любое имя ключа использовав поддерживаемые символы.
Формула расчета необходимо ввести в поле Формула. Не существует практически никакой связи между формулой и ключом. В любом случае параметры ключа не используются в формуле.
Корректный синтаксис простой формулы:
АРГУМЕНТ | ОПРЕДЕЛЕНИЕ |
---|---|
функция | Одна из функций поддерживаемых в выражениях триггеров: last, min, max, avg, count и остальные |
ключ | Ключ другого элемента данных, данные которого вы хотите использовать. Его можно задать как ключ или узел сети:ключ. Обратите внимание: Настоятельно рекомендуется заключать весь ключ в двойные кавычки (". "), во избежании неправильного разбора из-за пробелов или запятых в ключе. Также если в ключе имеются параметры заключенные в кавычки, то двойные кавычки должны быть экранированы с помощью обратной косой чертой (\). Смотрите ниже Пример 5. |
параметр(ы) | Параметр(ы) функций, если требуются. |
Все элементы данных, на которые ссылается формула вычисляемого элемента данных, должны существовать и собирать данные (исключения в функциях и неподдерживаемых элементах данных). Также, если вы измените ключ элемента данных на который ссылается элемент данных, то вы должны вручную обновить все формулы в которых используется этот ключ.
Пользовательские макросы в формуле будут раскрыты, если используется ссылка на параметр функции или константу. Пользовательские макросы НЕ будут раскрыты, если используется ссылка на функцию, имя узла сети, параметры ключей элементов данных или оператор.
Для более сложной формулы можно использовать комбинацию функций, операторов и скобок. Вы можете использовать все функции и операторы, которые поддерживаются в выражениях триггеров. Обратите внимание, что синтаксис немного отличается, однако логика и приоритет операций в точности такой же.
В отличии от выражений триггеров, Zabbix обрабатывает вычисляемые элементы данных в соответствии со временем обновления элемента данных, а не при получении нового значения.
Если результатом вычисления будет число с плавающей точкой, оно будет обрезано до целого числа, в случае если типом информации элемента данных указан Числовой (целое положительное).
Вычисляемый элемент данных может перейти в неподдерживаемое состояние в нескольких случаях:
- элемент(ы) данных, на которые имеется ссылка
- не найден
- деактивирован
- принадлежит деактивированному узлу сети
- не поддерживается (смотрите исключения в разделах Функции и неподдерживаемые элементы данных, Выражения с неподдерживаемыми элементами данных и неизвестными значениями и Операторы)
- нет данных для вычисления функции
- деление на ноль
- использован некорректный синтаксис
Поддержка вычисляемых элементов данных была введена в Zabbix 1.8.1.
Начиная с Zabbix 3.2 вычисляемые элементы данных в некоторых случаях могут использовать неподдерживаемые элементы данных как описано в Функции и неподдерживаемые элементы данных, Выражения с неподдерживаемыми элементами данных и неизвестными значениями и Операторы.
3 Примеры использования
Пример 1
Вычисление процентного отношения свободного места на диске для '/'.
Используйте функцию last:
Zabbix будет брать последние значения полного и свободного объема диска и вычислять процентное отношение в соответствии с данной формулой.
Пример 2
Вычисление 10-минутного усреднения количества значений обрабатываемых Zabbix.
Используйте функцию avg:
Обратите внимание, что интенсивное использование вычисляемых элементов данных с большими периодами времени может повлиять на производительность Zabbix сервера.
Пример 3
Вычисление общей пропускной способности на eth0.
Сумма двух функций:
Пример 4
Вычисление процентного отношения входящего трафика.
Более сложное выражение:
Пример 5
В вычисляемом элементе данных возможно использование агрегированных элементов данных.
Возьмите на заметку, каким образом двойные кавычки экранируются в заключенном кавычками ключе:
Except where otherwise noted, Zabbix Documentation is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International
В Zabbix, как многие помнят, агент, устанавливаемый на подопечный компьютер, может работать в двух режимах: активном и пассивном.
При работе в активном режиме агент сам собирает какие-то данные с компьютера и затем с заданной периодичностью отсылает их на сервер. В пассивном режиме агент выдает минимальный набор данных самостоятельно, а все остальные данные исключительно по запросу с сервера.
При использовании агента в пассивном режиме прямо “из коробки” доступно много “вкусных плюшек”: слежение за нагрузкой сетевых адаптеров, наблюдение за дисковой подсистемой, слежение за свободным местом на всех дисках, слежение за системными журналами и прочее…
Всё? Приплыли? Ничуть!
Лирическое наступление.
Итак, ставим задачу: следить за системным диском (%systemdrive%) подопечного компьютера, а именно за количеством свободного места на нём.
Следить можно за всеми дисками, но наиболее важно, по-моему, иметь данные о количестве свободного места как раз на системном диске. Если на каком-то другом диске закончится свободное место, пользователь сам это заметит и сообщит о такой неприятности, при этом система продолжит нормальную работу. Если же на системном диске закончится свободное пространство, стабильную работу системы гарантировать сложно.
Усложним себе задачу. 🙂
Пробрасывать порты не будем. Новомодные инструменты типа Windows PowerShell использовать не будем потому, что PowerShell на некоторых системах просто нет.
Будем использовать командную строку, встроенный планировщик заданий и немного VBS-скриптов.
Ну… Это всё была преамбула, теперь наступил черёд “амбулы”.
Решение.
При помощи активного агента Zabbix будем собирать 4 параметра диска “C:”:
- общий размер диска
- размер занятого места
- размер свободного места
- процент свободного места.
На основании этих параметров создадим 4 триггера:
- Предупреждение. Свободно менее 20%
- Средняя важность. Свободно менее 10%
- Высокая важность. Свободно менее 1 Гб.
- Чрезвычайная важность. Свободно менее 100 Мб.
И создадим 2 графика:
- Размер свободного места
- Размер свободного места в процентах.
Назначаем шаблон компьютеру
И начинаем получать данные… 🙂
Аренда серверов.
Надёжные сервера с Pro-бегом
У ВАС В ОФИСЕ!
Zabbix 2.0 мониторинг свободного места на дисках
Как в Zabbix 2.0 сделать мониторинг свободного места на дисках?
По сути ничего сложного нет, но поиск по интернету ничего хорошего не нашел (может быть я плохо искал), и так, как это сделал я?! Как добавлять триггеры и шаблоны можно посмотреть в постах ранее, по этому сразу к делу. Мне нужно было мониторить 5 дисков (кол-во не важно, но для наглядности). 1. Создаем шаблон (к примеру Windows Disk) 2. Создаем группу данных (к примеру DiskSize) 3. Далее создаем элемент данных, вот тут то самая и суть (вот так должен выглядеть "элемент данных") (далее…)
Заключение
Этих метрик мне как правило достаточно для того чтобы я мог делать обоснованные выводы. Конечно это не все цифры которые можно получить из файла статистики. Например там есть и число текущих обрабатываемых запросов, и количество запросов которые были объеденены. Но полагаю при необходимости вам не составит труда добавить их по аналогии с описанным.
И да не претендую на авторство — сам метод был когда-то давно загуглен, но за давностью лет ссылки конечно затерялись.
Увы NDA заставляет кое-что подчистить из них, но надеюсь на работоспособность шаблона это не повлияет.
А в шапке скриншот из Grafana прикрученной поверх zabbix — демонстрирующий реальные цифры с одной из тестовых инсталляций.
IP-телефония в офис.
IP-телефония давно перестала быть роскошью в офисах.
Хотите себе в офис цифровую АТС - обращайтесь. !
Для того, чтобы при помощи активного агента Zabbix следить за дисковым пространством компьютера, как оказалось, не нужно писать скриптов. Совсем. 🙂 Все уже умеет делать активный Zabbix-агент “из коробки”. Достаточно создать шаблон и назначить его компьютеру. Всё.
А теперь по порядку.
Сферический компьютер в вакууме. Нужно следить за заполненностью системного диска Windows. Предположим, что у нас всё стандартно, поэтому в качестве буквы системного диска используется “C:”.
Zabbix клиент на Android
Zabbix Api и клиент на Android.
1С:Предприятие “в облаке”.
Безопасный доступ к своей 1С из офиса, командировки и т.п.!
Лирическое наступление.
Итак, ставим задачу: следить за системным диском (%systemdrive%) подопечного компьютера, а именно за количеством свободного места на нём.
Следить можно за всеми дисками, но наиболее важно, по-моему, иметь данные о количестве свободного места как раз на системном диске. Если на каком-то другом диске закончится свободное место, пользователь сам это заметит и сообщит о такой неприятности, при этом система продолжит нормальную работу. Если же на системном диске закончится свободное пространство, стабильную работу системы гарантировать сложно.
Усложним себе задачу. 🙂
Пробрасывать порты не будем. Новомодные инструменты типа Windows PowerShell использовать не будем потому, что PowerShell на некоторых системах просто нет.
Будем использовать командную строку, встроенный планировщик заданий и немного VBS-скриптов.
Ну… Это всё была преамбула, теперь наступил черёд “амбулы”.
1С 8.3 мониторим через Zabbix
Небольшое отступление
Я являюсь архитектором баз данных и систем хранения очень высокой производительности и больших объемов. Поэтому часто сталкиваюсь с задачами оценки, как те или иные параметры настройки системы влияют на работу СХД, какие железные конфигурации СХД лучше.
Да есть куча утилит, которая позволит протестировать диски, например тот же fio. Но ничто не сравнится с тестированием реальной нагрузкой.
Однако прежде чем подавать реальную и настоящую нагрузку, неплохо бы сначала протестировать на синтетике. А наблюдать за синтетикой лучше теми же средствами, что и за боевой системой, просто потому, что даже если ваши метрики не совсем верны методологически – они будут хотя бы те же самые и по ним можно будет делать выводы лучше/хуже.
Куда как удобнее натравить на систему zabbix и мониторить. А к zabbix можно прикрутить модную Grafana и мониторить красиво. Сразу скажу – выбор zabbix скорее исторический: «потому что он уже был».
IP-телефония в офис.
IP-телефония давно перестала быть роскошью в офисах.
Хотите себе в офис цифровую АТС - обращайтесь. !
На самом деле отправлять можно не только на андроид и ios но и в другие ОС.
1. Регистрируемся, проходим на вкладку Settings и получаем api key (он нам потом понадобится) (далее…)
Мониторинг дисков в zabbix
Справедливости ради скажу, что в zabbix уже есть встроенные ключи vfs.dev.*, но увы очень мало: скорость чтения и записи, объем.
А что нужно нам?
Практика показывает что ключевые метрики по которым можно оценивать дисковую подсистему это:
- Количество операций в секунду (ops)
- Пропускная способность (throughput)
- Время обработки запроса (latency или правильней svctime)
- Утилизация дисковой подсистемы (utilization)
Все эти метрики есть в iostat. Но как их положить в zabbix?
Легкое гугление приводит нас к различным парсерам iostat, в том числе и здесь.
Но мне по душе другой вариант, а именно парсинг вывода /sys/class/block/*/stat
- это первоисточник данных — iostat так же использует эти данные
- для разбора показателей можно ограничиться только однострочником в UserParameter без дополнительных скриптов.
- Некоторые параметры необходимо вычислять делением дельты одного на дельту другого, причем не простой, а временной (скорости). В zabbix это сделать можно, но это будут не одновременные запросы, как если бы это делал сложный скрипт, а отношение последних значений, что в принципе не совсем верно, но в нашем случае довольно точно.
Данные в zabbix мы будем собирать при помощи zabbix-agent, создав пользовательские ключи. Для этого в /etc/zabbix/zabbix_agentd.d нужно создать файлик userparameter_custom.vfs.conf примерно со следующим содержимым:
UserParameter=custom.vfs.dev.io.ms[*],cat /sys/class/block/$1/stat | awk ''
Тут все просто — создаем пользовательский ключ custom.vfs.dev.io.ms, в качестве параметра передаем туда имя блочного устройства, значением параметра будет 10 колонка файлика stat.
В этом файлике статистики всего 11 колонок, посмотреть их описание можно вот тут.
Колонка №10 это io_tics — количество миллисекунд затраченным устройством на ввод вывод. Как почти все параметры — эта цифра является аккумулятором и постоянно возрастает. Как же получить из них привычные метрики.
Утилизация дисковой подсистемы
Эта метрика аналогична значению поля utils команды iostat -x. Характеризует загрузку дисковой подсистемы. По сути это сколько процентов реального времени система затратила на операции ввода-вывода за интервал между опросами. Как правило при приближении к 100% система начинает все больше простаивать в ожидании когда диски обработают ваши запросы.
Чтобы получить эту цифру — надо взять значение 10 колонки файла статистики и запомнить его в zabbix как скорость изменения в секунду, не забыв умножить на 0.1 так как значение в статистике в миллисекундах, а нам нужны проценты.
Аналогичным образом можно посчитать нагрузку записью/чтением (колонки write_ticks / read_ticks).
Время обработки запроса
Эта метрика аналогична r_svctime и w_svctime для записи и чтения соответственно. По сути это усредненное время обработки запросов за интервал между опросами.
Данная метрика чуть посложнее. Рассмотрим на примере запросов на запись.
Для этого нам понадобится создать три ключа:
-
write utils — количество времени потраченное на запись — колонка №8 write_ticks сохраненная, как скорость изменения в секунду между опросами. По сути значение ключа в zabbix будет утилизация записью.
Пропускная способность
Метрика показывающая с какой скоростью данные были записаны или прочитаны
Для этой метрики используются колонки №3 read sectors и №5 write sectors. Значение сколько было прочитано или записано «секторов». Точно так же в zabbix сохраняем как изменение за секунду.
Единственный ньюанс - значение в файле указанно «в попугаях-секторах», причем размер этого «сектора» фиксирован 512 байт и не зависит от реальных значений ни физического ни логического сектора устройства (проверял на нескольких устройствах с реальным размером физического сектора 4к). Так что чтобы пересчитать в байты — не забудьте умножить на 512.
Количество операций ввода-вывода в секунду
Эта метрика — те самые пресловутые IOPS
Самая простая метрика — мы ее уже записывали для подсчета svc time это значение колонок №5 write I/Os и №1 read I/Os также сохраненные как скорость в секунду.
1С:Предприятие “в облаке”.
Безопасный доступ к своей 1С из офиса, командировки и т.п.!
Аренда серверов.
Надёжные сервера с Pro-бегом
У ВАС В ОФИСЕ!
Zabbix как настроить мониторинг web сайта или как я мониторил питание в сети
На днях возникла необходимость в мониторинге электро сети предприятия, а точнее надо было понять когда выключается основной ввод в серверной. Так как под рукой у меня ничего из правильного оборудования не было, пришлось изобретать на коленках "велосипед". Поискав и немного пораскинув мозгом который остался к концу рабочего дня, наткнулся на неиспользуемый принт сервер "DP-301U". Естественно у меня сразу родилась идея, цепляем принт сервер на тот же ввод где сидит УПС и все оборудование (только на свободную розетку где УПС не работает). Таким образом если электричество выключается, принт сервер тоже падает а все остальное остается работать еще несколько часов до часа икс. Так как у этого принт сервера было web морда, то все оказалось куда проще. Ну это так сказать предыстория, а теперь как настроить мониторинг web сервиса или сайта за zabbix'e. Заходим в zabbix, тыркаем в "Настройка" - "Узлы сети" - "Создать узел сети". Далее, вводим имя, добавляем в группу, остальное оставляем без изменений и жмем Сохранить. (далее…)
Вряд ли кто-то будет спорить, что наблюдение за производительностью дисковой подсистемы — чуть ли не важнейшая задача для всех высоконагруженных систем хранения и баз данных. Я изначально столкнулся с этим давным-давно, еще когда приходилось наблюдать за PostgreSQL. В последнее время вернулся к этому вопросу в связи с необходимостью тестирования различных хранилищ.
Сегодня хочу поделиться с сообществом своим текущим опытом на реальном примере zabbix и его связке с block stat.
1c 8.3 мониторинг работы через Zabbix.
Не очень давно вышла альфа4 версия zabbix 3.0, решил поставить и посмотреть как она работает, а заодно и сделать простенький темплейт для мониторинга работы службы 1С 8.3 сервера (код шаблона ниже по тексту), возможно кому то пригодится + можно посмотреть как просто мониторить любую службу windows. Дальше кидаем все это на комплексный экран и сразу видим всю картинку.
Создаём шаблон.
Имя шаблона: 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]
Триггеры:
Теперь то же самое, но в картинках.
“Амбула”.
1. Устанавливаем на подопечный компьютер Zabbix-агента:
- Путь установки программы: C:\zabbix
- Папку с самописными скриптами располагаем тут: C:\zabbix\scripts
- Файл с настройками тут: C:\zabbix\zabbix_agentd.win.conf
Т.к. этот агент будет располагаться за NAT и не будет иметь возможности получать команды от сервера, то одержимое файла с настройками будет примерно таким:
В самом конце я описал 3 (три) пользовательских параметра, которые мне хотелось бы отсылать на сервер:
- UserParameter=Win_SysDrv_PercentFreeSpace
- UserParameter=Win_SysDrv_TotalSize
- UserParameter=Win_SysDrv_FreeSpace
%SystemDrive% – это, как вы догадались, имя системного диска Windows. 🙂
Чтобы автоматизировать процесс установки использую простенький скриптик: Zabbix_Install.bat
2. Размещаем в папке C:\zabbix\scripts простенький VBS-скрипт,
Он, собственно, и будет собирать нужные нам данные. Назвал я его так: c:\zabbix\scripts\WinDriveInfo.vbs
Вот небольшая инструкция по использованию скриптика:
Запуск скрипта:
WinDriveInfo.vbs []– имя диска, свойства которого нужно получить
– свойство, которое нужно получить
VolumeName — Название тома(не C:\, именно название)
TotalSize — Полный размер диска В БАЙТАХ
FreeSpace — Свободное место на диске В БАЙТАХ
SerialNumber — c серийный номер жёсткого диска
DriveLetter — буква, назначенная диску (без всяких : и :\)
DriveType — тип диска(съёмный, не съёмный, сетевой, CD-ROM или RAM-диск)
FileSystem — файловая система диска(FAT32, NTFS и т.д.)
RootFolder — путь к корневой папке(для диска С — C:\)
Path — то же, что и RootFolder, но вернёт он C: , без \
IsReady — доступность диска в данный момент(True или False)
PercentFreeSpace – процент свободного места на диске с точностью до сотых– (может отсутствовать)
trap – использовать zabbix_sender для отправки данных на zabbix-сервер,
notrap (по умолчанию) – не использовать zabbix_sender для отправки данных.
Важно. Т.к. скрипт я писал для себя, то в нём нет защиты от дурака и особо нет контроля передаваемых скрипту параметров. Кому нужно, можете сами дописать. 🙂
3. Перезапускаем службу zabbix-агента и проверяем, что наши пользовательские параметры работают правильно.
Т.е. последовательно выполняем 3 команды:
- C:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t Win_SysDrv_PercentFreeSpace
- C:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t Win_SysDrv_TotalSize
- C:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t Win_SysDrv_FreeSpace
Вот пример корректной работы первой команды:
Видно, что у меня на диске 75,12% свободного места. 🙂
Если ошибок нет, продолжаем дальше…
4. Теперь идём в web-интерфейс вашего Zabbix-сервера и создаём новый шаблон с именем Win_SysDrv_Monitoring.
При создании элементов данных указываем, что получать мы их будем при помощи Zabbix траппера.
Приведу скриншоты уже настроенного шаблона.
Особо ленивые могут скачать готовый шаблон тут: Win_SysDrv_Monitoring.xml
5. Назначаем подопечному компьютеру созданный нами шаблон и нажимаем кнопку “обновить”.
6. Проверяем работу на текущем этапе.
Идём в Мониторинг, заходим в последние данные, выбираем нужный нам подопечный компьютер и видим… Ничего мы не видим. Данные не попадают на сервер.
Потому, что пользовательские параметры, описанные нами в конце конфигурационного файла, Zabbix-агент отправляет на сервер только по прямому запросу с этого самого сервера. А агент-то находится за NAT, т.е. сервер отдать команду агенту не может, ведь порт с сервера на агента мы тоже не пробросили…
Получается, что агент про параметры знает, но отправлять их на сервер не будет: “Команды не было!”. 🙂
Получается, что нам нужно как-то самим отправлять данные на сервер по расписанию.
7. Настраиваем отправку данных по расписанию.
Идём в управление подопечным компьютером и в планировщике заданий создаём новую папку с именем Zabbix.
В этой папке создаём три простых задачи, которые будут работать от имени пользователя “система”, и по нужному вам расписанию выполнять сбор данных, а потом эти данные будут отправлять на сервер
Задача Win_SysDrv_FreeSpace должна выполнять команду
C:\Windows\System32\cscript.exe C:\zabbix\scripts\WinDriveInfo.vbs %SystemDrive% FreeSpace TRAP
Задача Win_SysDrv_TotalSize должна выполнять команду
C:\Windows\System32\cscript.exe C:\zabbix\scripts\WinDriveInfo.vbs %systemdrive% TotalSize TRAP
Задача Win_SysDrv_PercentFreeSpace должна выполнять команду
C:\Windows\System32\cscript.exe C:\zabbix\scripts\WinDriveInfo.vbs %SystemDrive% PercentFreeSpace TRAP
Смысл каждой команды следующий: мы просим интерпретатор cscript запустить на выполнение скрипт WinDriveInfo.vbs с нужными нам параметрами.
ВАЖНО.
Если вы в качестве “Программы или сценария” укажете не интерпретатор cscript, а выберете непосредственно сам скрипт, то ваша задача стартует, но НЕ ЗАВЕРШИТСЯ!!
Причина очень проста: по умолчанию в Windows используется интерпретатор wscript. а он команду .Echo выводит не в консоль, как нам нужно, а выбрасывает MsgBox c кнопкой, которую, конечно же, будет некому нажать…
ТОЖЕ ВАЖНО.
Обязательно используйте 3 (третий) параметр скрипта TRAP. Именно благодаря этому параметру скрипт будет понимать, что полученные данные нужно не передавать Zabbix-агенту, а отправлять их сразу непосредственно на ваш Zabbix-сервер.
8. Окончательная проверка.
Идём в Мониторинг, заходим в последние данные, выбираем нужный нам подопечный компьютер и видим, что данные потекли…
Я взял данные с реального компьютера клиента:
Видно, что на системном диске мало места… И, да. На панели тут же отобразилось предупреждение.
Пы.Сы.
Я описал реальный работающий способ в виде “как есть”.
В нём есть некоторые недочёты, которые потом будут исправляться, но этот пример может кому-то помочь решать свои задачи.
УДАЧИ.
Читайте также: