Ранее в статьях, посвященных Zabbix, мы рассказали про особенности мониторинга SAAS-сервиса интернет-магазинов, а также про установку сервера и агента Zabbix. Новая статья поможет вам настроить мониторинг дисков и программных RAID-массивов, созданных с помощью mdadm. Без преувеличения можно сказать, что мониторинг этих устройств сервера представляет собой одну из важнейших задач.  Если не контролировать постоянно состояние дисков и массивов, рано или поздно сервер прекратит свою работу. А если вдобавок еще и не делать резервное копирование данных, то в худшем случае при аварии с дисками можно потерять бизнес. Перечислим объекты и свойства дисковых систем серверов, которые необходимо контролировать в любой системе: состояние программных и аппаратных RAID-массивов; исправность дисков SATA, SAS, SSD и SSD NVMe; свободное пространство на дисках; использование дисковых квот Сейчас мы займемся решением только первых двух задач — настроим мониторинг программных RAID-массивов и контроль исправности дисков с помощью анализа данных S.M.A.R.T., а остальное оставим на потом. На серверах SAAS-сервиса интернет-магазинов используются зеркальные аппаратные и программные массивы RAID-1. При выходе из строя одного из дисков массива сервер продолжает работать. Неисправный диск можно заменить в горячем режиме, не останавливая работу сервера и размещенных на нем интернет-магазинов.   Относительно недорогие серверы обычно не комплектуются аппаратными контроллерами дисков. В этом случае имеет смысл объединять диски в программные зеркальные массивы RAID-1 с помощью программы mdadm.  Если вы берете сервер в аренду, то можете заказать установку нужной вам ОС, а также объединение дисков в зеркало. Когда вы размещаете в дата-центре свой собственный сервер, то установку ОС и создание дисковых массивов придется делать самостоятельно. В любом случае для размещения ОС и сайтов можно использовать два быстрых диска SSD, объединенных в зеркало RAID-1, а для создания и локального хранения резервных копий — массив RAID-1 из двух дисков SATA. Здесь предполагается, что резервные копии вначале создаются локально, а потом копируются на выделенные серверы для бэкапов. Получив сервер в аренду, первым делом проверьте количество процессоров и ядер, объем памяти, объем доступного дискового пространства, а также состояние дисковых массивов. Что касается количества процессоров, ядер и объема оперативной памяти, то для ручного контроля можно использовать утилиты lscpu и free. Команда «df -h» поможет вам узнать объем дискового пространства, занимаемого смонтированными файловыми системами, объем использованного и доступного дискового пространства. Также запустите команду lsblk, которая выводит на консоль информацию обо всех доступных блочных устройствах в виде дерева: Как видите, на сервере установлены диски sda, sdbs sdcs и sdd. Создано три дисковых массива md0, md1 и md2.   Для ручной проверки состояния дисковых массивов введите команду:   Если в блоке параметров всех массивов есть строка [UU], значит с ними все хорошо. Если же вместо U в этой строке имеются символы подчеркивания «_», то соответствующие диски находятся в отключенном состоянии, а массив — в состоянии деградации или восстановления. Когда массив находится в состоянии восстановления, вы увидите строки такого вида: Если вы только что получили доступ к арендованному серверу и занимаетесь его проверкой, возможно, что еще не все дисковые массивы окончательно синхронизировались. Перед подключением мониторинга нужно дождаться завершения синхронизации.   В составе Zabbix уже имеются шаблоны, предназначенных для мониторинга различных устройств и сервисов. Дополнительно на сайте https://www.zabbix.com/integrations можно найти очень много шаблонов, добавленных сторонними разработчиками. В комплекте с этими шаблонами идут скрипты, которые нужно подключить к агенту Zabbix через файл конфигурации, а также инструкции по установке. Что касается мониторинга программных массивов, созданных с помощью mdadm, то в составе встроенных шаблонов Zabbix 6.2 его нет. Поэтому мы воспользуемся готовым шаблоном Template MD RAID, доступным в Github:https://github.com/linuxsquad/zabbix_mdraid. Скачайте файл zbx_export_templates.xml по ссылке https://github.com/linuxsquad/zabbix_mdraid/blob/master/zbx_export_templates.xml и добавьте его в шаблоны сервера Zabbix. Для добавления на странице веб-интерфейса Zabbix выберите из меню Configuration строку Templates. Вы попадете на страницу с полным списком шаблонов. Щелкните кнопку Import, расположенную в верхнем правом углу страницы Templates. Далее в появившемся на экране всплывающем окне нажмите кнопку Import. Если шаблон импортировался успешно, он появится в общем списке шаблонов под именем Template MD RAID. Чтобы импортированный шаблон включился в работу, скачайте скрипт zabbix_mdraid.sh, доступный по адресу https://github.com/linuxsquad/zabbix_mdraid/blob/master/zabbix_mdraid.sh, и запишите его в каталог /usr/local/bin/. Далее установите для файла скрипта разрешение на запуск, а затем назначьте владельцем пользователя zabbix: Скрипт /usr/local/bin/zabbix_mdraid.sh будет запускаться агентом Zabbix с помощью sudo. Добавьте командой visudo разрешение на запуск скрипта через sudo (укажите полный путь к скрипту):    Проверьте, что скрипт запускается от пользователя zabbix без ошибок:   Если посмотреть исходный текст скрипта, то видно, что для получения списке программных дисковых массивов используется команда:   Результат работы этой команды записывается в файл /tmp/zabbix_mdraid_discovery.json примерно в таком виде:   Этот файл используется для низкоуровневого обнаружения LLD (Low-level discovery), описанного в документации: https://www.zabbix.com/documentation/current/en/manual/discovery/low_level_discovery. Далее для получения состояния каждого массива используется команда «mdadm --query --detail», которой в качестве параметра передается путь к массиву: Скрипт zabbix_mdraid.sh извлекает отсюда параметры состояния массива и передает их серверу Zabbix. Для запуска скрипта zabbix_mdraid.sh добавьте в файл конфигурации агента /etc/zabbix/zabbix_agentd.conf следующие строки: Затем перезапустите агент:   Для zabbix-agent2 используется файл конфигурации /etc/zabbix/zabbix_agent2.conf. На этом установка шаблона закончена, и можно отслеживать получение данных о программных массивах. Выберите в меню Monitoring строку Latest Data. Далее с помощью меню Host group и Hosts выберите нужный сервер, где вы только что отредактировали файл конфигурации агента Zabbix, а затем щелкните кнопку Apply. Вы увидите очень большую таблицу данных, полученных от агента. Щелкните в поле TAG Values строку MD_RAID, чтобы на странице остались только данные, полученные с помощью шаблона zabbix_mdraid (рис. 1). Чтобы посмотреть график изменений данных, щелкните в соответствующей строке кнопку Graph. На рис. 2 показано изменение скорости записи данных для массива /dev/md1.   Чтобы проверять, находятся ли отслеживаемые данные в допустимых пределах, а также имеют ли они допустимые значения, в Zabbix используются триггеры. Вы можете посмотреть, какие триггеры созданы для контролируемого сервера и в каком они находятся состоянии. Для этого откройте список контролируемых узлов, выбрав из меню Configuration строку Hosts. В таблице щелкните ссылку Triggers в строке нужно хоста, в результате чего в окне браузера появится довольно большая таблица триггеров, определенная для хоста. На рис. 3 показаны строки таблицы, имеющие отношение к шаблону zabbix_mdraid.  Эти триггеры были добавлены в процессе низкоуровневого обнаружения LLD. Обратите внимание: если состояние массива, взятое из элемента данных с именем State, содержит строки degraded, resyncing, recovering или Not Started, триггер сработает. При правильной настройке системы оповещений, о которой мы расскажем в отдельной статье, системный администратор получит оповещение по электронной почте, через SMS или другим способом. О создании триггеров можно прочитать в документации Zabbix: https://www.zabbix.com/documentation/current/en/manual/quickstart/trigger. Для версии 6.0 есть версия на русском языке: https://www.zabbix.com/documentation/6.0/ru/manual/quickstart/trigger. В 1995 году производители жестких дисков создали технологию самотестирования, анализа состояния и накопления статистических данных об ухудшении характеристик дисков с названием S.M.A.R.T. (Self-Monitoring Analysis and Reporting Technology). С помощью программы smartctl, входящей в пакет smartmontools, вы можете контролировать значение параметров S.M.A.R.T. дисковых устройств вашего сервера как вручную, так и средствами Zabbix. Для начала установите пакет smartmontools. В ОС Debian это можно сделать следующей командой:   После установки вы сможете запускать программу smartctl для получения значений параметров. Убедитесь, что будет установлена версия программы smartctl не ниже 7.1, это будет нужно для мониторинга параметров S.M.A.R.T. с помощью встроенного шаблона SMART by Zabbix agent 2. Проверить версию smartctl можно так: Давайте посмотрим параметры S.M.A.R.T. для устройства /dev/sda:   Команда выведет на консоль довольно подробную информацию о диске, включая название модели Device Model, серийный номер Serial Number, объем User Capacity и другие параметры:   Обратите внимание на таблицу значений параметров, где есть идентификатор параметра ID, название параметра NAME,  так называемое нормализованное значение VALUE,  пороговое значение THRESH и другие данные:   В интернете нетрудно найти описание этих параметров по названию. Заметим, что для дисков SSD разных производителей параметры могут различаться, и не все они документированы. Для дисков SSD компании Intel хорошее описание приведено здесь: https://www.thomas-krenn.com/en/wiki/SMART_attributes_of_Intel_SSDs, а для Kingston — здесь: https://media.kingston.com/support/downloads/MKP_306_SMART_attribute.pdf.  Также довольно полное описание параметров можно найти на этой странице: https://wiki5.ru/wiki/S.M.A.R.T. Когда вы контролируете состояние дисков Intel SSD, обратите внимание на следующие параметры: 232 Available Reserved Space — доступный объем зарезервированного пространства; 233 Media Wearout Indicator — индикатор износа диска Если первый из них достигает порогового значение 10, то ресурс диска подходит к концу. Второй представляет собой индикатор износа накопителя, и при достижении порогового значения диск подлежит замене. Для дисков SSD Kingston интересен параметр 231 SSD Life Left, значение которого зависит от выполненный циклов стирания.  Что касается жестких дисков, то для них важен контроль следующих параметров: 1 Raw_Read_Error_Rate — частота ошибок чтения; 5 Reallocated_Sector_Ct — количество неисправных переназначенных секторов; 7 Seek_Error_Rate — частота ошибок поиска; 9 Power_On_Hours — время работы диска, «сырое» значение  RAW_VALUE может задавать общее количество часов, минут или секунд (в зависимости от производителя) работы диска; 10 Spin_Retry_Count — количество повторных попыток раскрутки, увеличивается по мере износа механики диска; 194 Temperature_Celsius — температура диска в градусах Цельсия Температуру имеет смысл контролировать для дисков любых типов. Еще раз напомним, что диски разных производителей могут использовать разные параметры, поэтому точную информацию лучше искать на сайте производителя для ваших моделей. В любом случае при ручном контроле нужно следить, чтобы значения VALUE не были равны или ниже соответствующих пороговых значений THRESH. В Zabbix версии 6.2 имеется шаблон SMART by Zabbix agent 2, контролирующий состояние дисков исходя из значений параметров S.M.A.R.T. Для работы этого шаблона вам нужно будет установить на сервер агент zabbix-agent2, о чем мы рассказывали в предыдущей статье. Описание шаблона SMART by Zabbix agent 2 есть на этой странице: https://www.zabbix.com/integrations/smart. Если у вас Zabbix версии 6.2, то для включения мониторинга S.M.A.R.T. на контролируемом сервере просто добавьте шаблон SMART by Zabbix agent 2 к шаблонам сервера.  Чтобы это сделать, выберите из меню Configuration строку Hosts, а затем щелкните название сервера. Откроется окно, где вам нужно щелкнуть кнопку Select в блоке Templates, а затем отыскать шаблон с названием SMART by Zabbix agent 2, отметить флажок возле него и щелкнуть кнопку Select. В результате шаблон SMART by Zabbix agent 2 будет добавлен к серверу (рис. 4). Шаблон SMART by Zabbix agent 2 устроен так, что ему не нужны дополнительные скрипты. Он обращается за данными к пакету  smartmontools с помощью агента zabbix-agent2. Через некоторое время после установки шаблона с помощью LLD к контролируемому серверу будут добавлены элементы данных и триггеры. Для просмотра созданных элементов данных и триггеров выберите из меню Configuration строку Hosts. В строке вашего сервера для просмотра данных щелкните ссылку Items, а для просмотра триггеров — ссылку Triggers. Вы увидите, что для сервера всего было создано очень много элементов данных. С помощью фильтра оставьте только те элементы, которые были получены с помощью LLD с именем sda (рис. 5). В результате получаем вполне обозримый список элементов данных, имеющий отношение к S.M.A.R.T. (рис. 6).   Аналогичным способом вы можете посмотреть список триггеров контролируемого сервера. Триггеры, созданные для диска /dev/sda, показаны на рис. 7.   Обратите внимание на триггер SMART [sda sat]: Some Attributes have been <= threshold. Он срабатывает, если какое-либо значение параметра S.M.A.R.T. достигает порогового значения или опускается еще ниже. В результате создается событие высокой степени важности High, и при правильной настройке оповещения такое событие попадает к системному администратору по приоритетному каналу. Аналогичные события создаются и при обнаружении каких-либо других существенных проблем с диском. Текущие значения параметров S.M.A.R.T. (как и других отслеживаемых параметров) и графики их изменения можно увидеть, если из меню Monitoring веб-интерфейса Zabbix выбрать строку Latest Data. Если по каким-то причинам вы не можете использовать новую версию Zabbix, или если вам нужно настроить мониторинг параметров S.M.A.R.T. своим особым способом, то такая возможность также имеется. В любом случае сначала нужно установить пакет smartmontools, как это было описано ранее. После этого создайте несложный шаблон для отслеживания параметра «здоровья» 233 Media_Wearout_Indicator дисков SSD. Вы можете получить значение этого параметра для диска /dev/sda через консоль следующим образом: Как видите, здесь значение этого параметра равно 97, что очень даже неплохо. Добавьте в конец файла /etc/zabbix/zabbix_agentd.conf такие строки: Затем перезапустите агент Zabbix:   Не забудьте установить sudo (если эта программа у вас еще не установлена), и разрешить запуск через sudo программы /usr/sbin/smartctl. Для разрешения запуска с помощью visudo добавьте в файл /etc/sudoers строку: Проверьте, что сервер Zabbix получает данные добавленного вами мониторинга S.M.A.R.T. от агента. Установите на сервере Zabbix программу zabbix_get: Теперь на сервере Zabbix проверьте получение нужного вам параметра от агента Zabbix, запущенного на контролируемом сервере:   Здесь вместо xxx.xxx.xxx.xxx в параметре -s укажите адрес IP контролируемого сервера. Идентификатор атрибута S.M.A.R.T. следует указывать в шестнадцатеричной системе счисления с префиксом 0x. В результате команда должна вывести на консоль значение атрибута 0xe9 или 233 (в десятичной системе счисления). Результатом выполнения команда должно быть значение 100 при новом диске. У нас диск не совсем новый, поэтому мы получили значение 97. Вы можете создать шаблон для мониторинга самостоятельно. Для этого зайдите на страницу Templates, доступную в меню Configuration, и щелкните кнопку Create Template. Задайте имя шаблона, скажем, с именем MY SMART SSD и добавьте его в группу шаблонов  Templates (если вы еще не создали группу для своих шаблонов). Далее найдите этот шаблон в общем списке и добавьте в него элемент Items с помощью кнопки Create Items. Укажите такие параметры: Name: 233 Media_Wearout_Indicator /dev/sdaType: Zabbix AgentKey: smartd.value[/dev/sda,0xe9] Создайте аналогичный шаблон для диска /dev/sdb/. Теперь откройте пока пустой список триггеров и щелкните кнопку Add Trigger. Для нового триггера задайте такие параметры: Name: Life time SSD /dev/sda/ on {HOST.NAME}Expression: last(/MY SMART SSD/smartd.value[/dev/sda,0xe9])<10 Аналогичный триггер создайте и для диска /dev/sdb. Теперь, когда вы создали шаблон, подключите его к контролируемому серверу и наблюдайте получение данных через страницу Latest Data. При необходимости подобным образом вы можете добавить в свой шаблон другие элементы данных и триггеры для отслеживания нужных вам параметров S.M.A.R.T. В следующей статье мы займемся мониторингом аппаратных дисковых массивов, созданных с применением контроллера LSI. Автор: Александр Фролов. НЛО прилетело и оставило здесь промокод для читателей нашего блога: — 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.  Маркетолог