Вопрос или проблема
Для моей настройки OpenStack я использую LVM в качестве Cinder Block хранилища. Я создал vg cinder-volumes для тонкого резервирования.
Теперь я хочу контролировать, насколько используется этот vg (не отдельные диски в нем). Я обнаружил, что команда lvs -a может это сделать. Я смог проверить использование моего пула томов
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
cinder-volumes-pool cinder-volumes twi-aotz-- 1.49t 26.35 22.20
Я вижу, что использование пула томов составляет около 26%. Есть ли способ контролировать это. В настоящее время я использую Zabbix для общего мониторинга серверов и других служб. Но Zabbix поддерживает мониторинг файловых систем, а не дисков и пулов LVM.
Вы знаете какое-либо решение, которое я могу использовать для мониторинга? Возможно, какой-нибудь bash или python скрипт, который отправляет письмо через smtp, когда процент данных более 80% или что-то в этом роде? Или какой-нибудь шаблон Zabbix??
Редактирование1:
Думаю, я могу использовать этот подход.
disk_usage=$(sudo lvs -a | grep -w cinder-volumes-pool | awk '$1 ~ /cinder-volumes-pool/ { POOL = $1 } { DISK += $5 } END { print DISK }')
Я сравню значение этой переменной с моим порогом (50% или 80%). Когда оно совпадет, я настрою SMTP для отправки письма. Это должно быть достойным решением. Если у вас есть что-то получше, не стесняйтесь помочь мне.
Итак, я решил эту проблему и публикую решение на случай, если кому-то понадобится помощь.
Прежде всего, мы получим использование диска с помощью команды lvs -a
. Следующая настройка позволит получить точное значение. Убедитесь, что вы заменили имя вашего пула LVM в регулярных выражениях grep и awk.
sudo lvs -a | grep -w cinder-volumes-pool | awk '$1 ~ /cinder-volumes-pool/ { DISK += $5 } END { print DISK }'
Сравните значение с тем, которое вы получили для вашего пула томов в команде lvs -a, если оно совпадает, мы можем продолжить. В противном случае, посчитайте его позицию и измените ее в awk (с $5 на вашу позицию Data%).
В моем случае, я уже использовал Zabbix. Поэтому я отредактировал файл агента Zabbix (/etc/zabbix/zabbix_agent2.conf) и добавил следующую строку.
UserParameter=cinder-volumes.disk_usage,sudo lvs -a | grep -w cinder-volumes-pool | awk '$1 ~ /cinder-volumes-pool/ { DISK += $5 } END { print DISK }' | bc -l
UserParameter используется в Zabbix для отправки пользовательских ключей от агента на сервер Zabbix. Здесь cinder-volumes.disk_usage — это мое имя ключа, а команда является значением для этого ключа.
Поскольку моя команда требует привилегий root, я изменил системный юнит zabbix-agent, чтобы он запускался как root (я знаю, что это не лучший подход, всегда приветствуются лучшие решения). Перезапустите ваш агент Zabbix.
Убедитесь, что ваш пользовательский ключ работает:
sudo zabbix_agent2 -t cinder-volumes.disk_usage
Если вы получаете значение на выходе, перейдите на панель управления Zabbix. Для вашего хоста создайте новый элемент с ключом, который вы создали на предыдущем шаге. Выберите Numeric (float) для типа информации и интервал обновления 1 час, и вы в порядке.
После создания элемента создайте триггеры на основе этого элемента с выражением
last(/Openstack control01 Linux Server/cinder-volumes.disk_usage,#1)>=80
Для тестирования создайте триггер с более низким значением (ниже текущего использования диска). Если триггер создан, все в порядке. Теперь вы можете создать оповещение медиа (email, pagerduty, slack или что-нибудь другое), чтобы получать уведомление о вашем триггере.
.
Ответ или решение
В вашем сценарии вы используете LVM как бэкенд для хранения блоков в OpenStack, и вас интересует мониторинг использования пула тонкого провизионирования в группе томов (vg
) cinder-volumes
. Основная цель заключается в том, чтобы эффективно отслеживать использование пула и получать уведомления, когда достижение определённого порогового значения несет риск исчерпания ресурсов хранилища. Рассмотрим, как это можно осуществить с помощью Zabbix и других методов.
Теория
Управление LVM и мониторинг тонких пулов:
LVM (Logical Volume Manager) — это мощная система управления хранилищем, позволяющая гибко управлять логическими и физическими томами. Технология тонкого провизионирования (thin provisioning) позволяет экономно использовать дисковое пространство, предоставляя тома с выделением места по мере необходимости.
Проблема с мониторингом заключается в том, что утилита lvs -a
предоставляет кратковременную, мгновенную информацию о состоянии пула, а для своевременного реагирования и предупреждения об исчерпании ресурсов, требуется автоматизированный подход с возможностью установки пороговых значений и отправки уведомлений.
Пример
Цель: Создание системы мониторинга с помощью Zabbix для контроля данных о состоянии пула cinder-volumes-pool
.
Текущий метод получения данных:
Команда lvs -a
предоставляет следующую информацию:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
cinder-volumes-pool cinder-volumes twi-aotz-- 1.49t 26.35 22.20
Мы видим, что Data% составляет ~26%. Задача заключается в автоматизации процесса уведомлений.
Применение
Создание пользовательского параметра в Zabbix
-
Настройка Zabbix-агента:
- Добавьте пользовательский параметр в конфигурационный файл агента
/etc/zabbix/zabbix_agentd.conf
:UserParameter=cinder-volumes.disk_usage,sudo lvs -a | grep -w cinder-volumes-pool | awk '$1 ~ /cinder-volumes-pool/ { print $NF }'
Здесь
cinder-volumes.disk_usage
— это название ключа, который будет использован на сервере Zabbix, а команда — значением, возвращаемым этим ключом. - Добавьте пользовательский параметр в конфигурационный файл агента
-
Привилегии:
- Так как команда требует привилегий root, настройте выполнение агентом команд с повышенными привилегиями. Это может включать добавление записи в
/etc/sudoers
для пользователя zabbix:zabbix ALL=(ALL) NOPASSWD: /sbin/lvs
- Так как команда требует привилегий root, настройте выполнение агентом команд с повышенными привилегиями. Это может включать добавление записи в
-
Перезапуск Zabbix-агента:
- После внесения изменений необходимо перезапустить агент:
sudo systemctl restart zabbix-agent
- После внесения изменений необходимо перезапустить агент:
-
Проверка пользовательского параметра:
- Проверьте, работает ли параметр:
sudo zabbix_agentd -t cinder-volumes.disk_usage
- Проверьте, работает ли параметр:
-
Создание элемента данных на сервере Zabbix:
- На панели Zabbix в разделе вашего хоста создайте новый элемент данных, используя ключ
cinder-volumes.disk_usage
. Укажите числовой (вещественный) тип данных и интервал обновления, например, 1 час.
- На панели Zabbix в разделе вашего хоста создайте новый элемент данных, используя ключ
-
Создание триггера:
- Настройте триггер с выражением:
{Openstack control01:cinder-volumes.disk_usage.last()}>80
Этот триггер сработает, если процент данных достигнет или превысит 80%.
- Настройте триггер с выражением:
-
Настройка действий и уведомлений:
- Создайте действие в Zabbix, которое отправит уведомления по электронной почте, через Slack, PagerDuty или любой другой способ при срабатывании триггера.
Заключение
Использование Zabbix для мониторинга LVM тонкого пула позволяет комплексно управлять ресурсами хранилища, своевременно реагировать на изменения использования и предотвращать возможные проблемы, связанные с исчерпанием ресурсов. Такой подход обеспечивает высокую надежность системы, минимизируя риски аварий и сбоев работы сервиса. Регулярное тестирование, проверка работы триггеров и корректность настроек мониторинга способствуют достижению устойчивости и эффективности IT-инфраструктуры.