Мониторинг FSYNCS параметра в системе виртуализации Proxmox является одним из главных, так как сильно влияет на качество работы системы. Контролируя данный параметр в системе Zabbix можно оптимально настроить производительность дисковой системы сервера.
Содержание:
Введение
В системе Proxmox есть замечательный механизм проверки работы дисковой системы. Выполнив в консоли команду pveperf мы увидим полезную информацию о скорости работы жестких дисков. Основной параметр который показывает скорость работы с дисками это FSYNCS/SECOND.
Выведя man сервиса мы увидим всю информацию о требовании к нашему параметру.
man pveperf
= часть вывода команды =
FSYNCS/SECOND value should be greater than 200 (you should enable write back cache mode on you RAID controller - needs a battery backed cache (BBWC)).
В описании четко сказано что параметр должен быть не меньше 200. При меньших значениях однозначно будут проблемы в работе сервера.
Более подробно о сервисе pveperf можно узнать на сайте разработчика Proxmox.
Общий принцип мониторинга FSYNCS для Proxmox
Схема действий для мониторинга параметра будет следующей:
- Создаем скрипт bach который будет записывать нужное значение в текстовый файл;
- Добавляем в cron задание которое будет с нужной нам периодичностью записывать показания в текстовый файл;
- Добавляем необходимые параметры в агент Zabbix и проверяем правильность работы;
- На сервере Zabbix для нужного узла добавляем все необходимые данные для контроля над параметром и настраиваем оповещение в случае плохих параметров.
Действия на Zabbix агенте
Команда для вывода нужных параметров FSYNCS
Для начала нам надо посмотреть куда и что у нас смонтировано в системе.
df -h = часть вывода для ZFS = rpool/ROOT/pve-1 99G 1001M 98G 1% / = часть вывода для mdadm = /dev/md2 3,5T 1,2T 2,2T 35% /mnt/md2-raid10
Выводим информацию для нужного раздела.
Обязательно указываем в параметре куда смонтировано иначе не увидим параметр FSYNCS/SECOND.
pveperf / = вывод команды = CPU BOGOMIPS: 10044.86 REGEX/SECOND: 1168356 HD SIZE: 98.08 GB (rpool/ROOT/pve-1) FSYNCS/SECOND: 85.84 DNS EXT: 67.40 ms DNS INT: 1.44 ms (sevo44.loc) pveperf /mnt/md2-raid10 = вывод команды = CPU BOGOMIPS: 37241.08 REGEX/SECOND: 595252 HD SIZE: 3570.96 GB (/dev/md2) BUFFERED READS: 165.42 MB/sec AVERAGE SEEK TIME: 18.32 ms FSYNCS/SECOND: 510.48 DNS EXT: 65.53 ms DNS INT: 0.82 ms (sevo44.loc)
Теперь нам необходимо вывести только цифровое значение и для этого выполним команду:
pveperf / | grep 'FSYNCS/SECOND' | cut -c20-24 = вывод команды = 81.52
Параметры имеют следующие значения:
- pveperf / -сама команда с указанием куда смантирован раздел;
- grep ‘FSYNCS/SECOND’ — выбираем только значения из строки с этими данныи;
- cut -c20-24 — выводи знаки с 20 по 24 от начала строки.
Создадим папку где будет находится скрипт bach, файл с данными и добавим необходимый скрипт.
mkdir /etc/zabbix/scripts vim /etc/zabbix/scripts/fsyncs-bin.sh = необходимые данные = #!/bin/bash pveperf / | grep 'FSYNCS/SECOND' | cut -c20-24 > /etc/zabbix/scripts/fsyncs.txt
По действию скрипта данные будут перезаписываться при каждом выполнении скрипта в файле /etc/zabbix/scripts/fsyncs.txt. Файл создавать не надо, так как при выполнении скрипта он создастся сам.
Сделаем файл запускаемым.
chmod +x /etc/zabbix/scripts/fsyncs-bin.sh
Проверим работу скрипта и правильность получения данных.
sh /etc/zabbix/scripts/fsyncs-bin.sh
= вывод пустой =
ls /etc/zabbix/scripts
= вывод команды =
fsyncs-bin.sh fsyncs.txt
cat /etc/zabbix/scripts/fsyncs.txt
= вывод команды =
117.9
Скрипт создал файл и записал туда правильные данные. Запускаем скрипт несколько раз для полной уверенности в правильности записи данных.
Добавляем скрипт в cron для выполнения по расписанию.
vim /etc/crontab = необходимый код = */3 * * * * root /etc/zabbix/scripts/fsyncs-bin.sh >/dev/null 2>&1
Например, я запускаю скрипт каждые 3 минуты.
Добавление параметров для Zabbix агента
Для того чтобы Zabbix агент мог работать с нашими параметрами необходимо добавить в файл настройки необходимый параметр.
vim /etc/zabbix/zabbix_agentd.conf = необходимый параметр = UnsafeUserParameters=1
После необходимого параметра добавляем нужный код. В моем случае получился следующий код:
UserParameter=pve-1.fsyncs,cat /etc/zabbix/scripts/fsyncs.txt
Параметры имеют следующие значения:
- UserParameter — параметр согласно которого агент понимает что с ним надо работать;
- pve-1.fsyncs — название параметра который мы будем использовать при добавлении элемента данных;
- cat /etc/zabbix/scripts/fsyncs.txt — команда и путь по которому брать данные.
Так как скрипт отрабатывает не быстро необходимо увеличить время ожидания.
vim /etc/zabbix/zabbix_agentd.conf = необходимый параметр = Timeout=15
Перезагружаем агент и проверим как он получает данные.
systemctl restart zabbix-agent
zabbix_get -s 127.0.0.1 -k pve-1.fsyncs
= вывод команды =
123.56
В случае получения ошибок
-bash: zabbix_get: command not found или zabbix_get [20065]: Check access restrictions in Zabbix agent configuration
перейдите по ссылке и узнаете почему не работает zabbix_get.
Действия на сервере Zabbix
Добавление элемента данных
Открываем необходимый узел и перейдя в «Элементы данных» добавляем новый нажав «Создать элемент данных«.
Необходимо заполнить следующие поля:
- Имя — pve-1 fsyncs zfs;
- Ключ — pve-1.fsyncs;
- Тип информации — Числовой (с плавающей точкой);
- Интервал обновления — 5m;
- Период хранения истории — 1w;
- Группы элементов данных — Filesystem.
Добавление тригера
Открываем необходимый узел и перейдя в «Тригеры» добавляем новый нажав «Создать тригер«.
Необходимо заполнить следующие поля:
- Имя тригера — pve-1 fsyncs zfs;
- Выражение — {pve-1:pve-1.fsyncs.last()}<200.
Добавление графика
Открываем необходимый узел и перейдя в «Графики» добавляем новый нажав «Создать график«.
Например, мне нравится выводить все параметры fsyncs для всех серверов в один график.
Заключение
Вначале практики я контролировал параметры только при настройке систем. После того как я стал контролировать мне удалось максимально настроить дисковую систему на лучшую производительность. Параметр постоянно меняется от разных параметров системы и только контролируя его можно разобраться в чем проблема и принять верные решения.
Вот примерно такие графики вы можете наблюдать в период настройки.
Полезные ссылки: