Продолжаю свою знакомство с составление и проработкой шагов посредством которых я смогу завести в свой сервис мониторинга Zabbix диски. Сейчас в моем гипервизоре установлен SSD
накопитель с интерфейсом M.2 SILICON POWER M-Series SP512GBP34A80M28 512Гб, M.2 2280, PCI-E x4, NVMe
», но так как на моей материнской плате нет соответствующего разъема, то понадобится и соответствующий разъем «Адаптер PCI-E M.2 NGFF for SSD Bulk [asia pcie m2 ngff m-key]
». В принципе нет разницы как он подключен. Задача поставлена — нужно проработать какую диагностическую информацию по нему (HDD M.2
) можно извлечь и приспособить к Zabbix Server 4.4 on Ubuntu 18.04 Server
. Я занимаюсь составлением различных жизненно важных заметок в помощь системному администрированию.
Исходные данные:
srv-zabbix - Zabbix Server 4.4 on Ubuntu 18.04 Server amd64
srv-proxmox - Debian 10 + Proxmox 6
Начну пожалуй:
Шаг №1: Сервер с мониторингом базирующемся на Zabbix Server 4.4 on Ubuntu 18.04 (srv-zabbix, 172.33.33.117)
Шаг №2: Узел — гипервизор Debian 10 + Proxmox 6 (srv-proxmox, 172.33.33.25), на нем Zabbix Agent 4.4
Как установить Zabbix 4.4 агент на Debian Buster Server
Шаг №3: Если ставим узел (физический) на мониторинг состояния/работоспособности диска, то обязательно нужно поставить пакет smartmontools (SATA, SSD, NVMe) & nvme-cli (NVMe)
root@srv-proxmox:~# apt-cache search nvme-cli nvme-cli - userspace tooling to control NVMe drives root@srv-proxmox:~# apt-cache show smartmontools | grep Version Version: 7.0-pve2 - обязательная самая последняя версия должна быть. Version: 6.6-1 root@srv-proxmox:~# root@srv-proxmox:~# apt-get install -y smartmontools zabbix-get nvme-cli
Шаг №4: Получить от системы количество используемых дисков:
root@srv-proxmox:~# smartctl --scan /dev/sda -d scsi # /dev/sda, SCSI device /dev/nvme0 -d nvme # /dev/nvme0, NVMe device root@srv-proxmox:~# root@srv-proxmox:~# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 B96807981DB500921193 SPCC M.2 PCIe SSD 1 512.11 GB / 512.11 GB 512 B + 0 B ECFM22.4 root@srv-proxmox:~#
Шаг №5: Смотрю какую информацию я могу извлечь по диску M.2
root@srv-proxmox:~# nvme smart-log /dev/nvme0n1
Smart Log for NVME device:nvme0n1 namespace-id:ffffffff
critical_warning : 0
temperature : 28 C
available_spare : 100%
available_spare_threshold : 5%
percentage_used : 0%
data_units_read : 120,753
data_units_written : 297,487
host_read_commands : 398,858
host_write_commands : 553,807
controller_busy_time : 4
power_cycles : 40
power_on_hours : 165
unsafe_shutdowns : 4
media_errors : 0
num_err_log_entries : 0
Warning Temperature Time : 0
Critical Composite Temperature Time : 0
Thermal Management T1 Trans Count : 0
Thermal Management T2 Trans Count : 0
Thermal Management T1 Total Time : 0
Thermal Management T2 Total Time : 0
root@srv-proxmox:~# root@srv-proxmox:~# smartctl -x /dev/nvme0 smartctl 7.0 2018-12-30 r4883 [x86_64-linux-5.0.21-3-pve] (local build) Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION ===
Model Number: SPCC M.2 PCIe SSD
Serial Number: B96807981DB500921193
Firmware Version: ECFM22.4
PCI Vendor/Subsystem ID: 0x1987
IEEE OUI Identifier: 0x6479a7
Total NVM Capacity: 512,110,190,592 [512 GB]
Unallocated NVM Capacity: 0
Controller ID: 1
Number of Namespaces: 1
Namespace 1 Size/Capacity: 512,110,190,592 [512 GB]
Namespace 1 Formatted LBA Size: 512
Namespace 1 IEEE EUI-64: 6479a7 2540163933
Local Time is: Fri Nov 22 22:04:42 2019 MSK
Firmware Updates (0x12): 1 Slot, no Reset required
Optional Admin Commands (0x0017): Security Format Frmw_DL Self_Test
Optional NVM Commands (0x005d): Comp DS_Mngmt Wr_Zero Sav/Sel_Feat Timestmp
Maximum Data Transfer Size: 512 Pages
Warning Comp. Temp. Threshold: 75 Celsius - это для настройки триггера буду использовать
Critical Comp. Temp. Threshold: 80 Celsius - это для настройки триггера буду использовать.
Шаг №6: На мониторинг ставлю следующие параметры — это у меня:
Metrika |
Назначение |
Суффикс |
Триггер |
Частота опроса |
Группа элементов данных |
Model Number |
Информация по модели- диска |
— |
— |
1d |
M.2 |
Serial Number |
Информация по серийному номеру |
— |
— |
1d |
M.2 |
Firmware Version |
Информация по прошивке контроллера диска |
— |
— |
1d |
M.2 |
Available Spare |
Свободное место |
если меньше 5% то тревога |
1h |
M.2 |
|
Percentage Used |
Процент использования места диска |
% |
1h |
M.2 |
|
Temperature |
Температура диска |
С |
если >=75 <=79 — то Warning если >= 80 то Critical |
30m |
M.2 |
Power On Hours |
Количество наработанных часов |
h |
— |
1d |
M.2 |
Controller Busy Time |
Время работы контроллера |
— |
— |
1h |
M.2 |
Шаг №7: С созданный конфигурационный файл smart.conf
который привязан у меня к шаблоны TEMPLATE_SMART
добавляю строки UserParameter
которые применительны к моему M.2
диску.
root@srv-proxmox:~# nano /etc/zabbix/zabbix_agentd.d/smart.conf # HDD /dev/nvme0 # Model Number UserParameter=uHDD.nv_model_number.[*],sudo smartctl -x $1 | grep -i "Model Number" | awk -F ":" '{print $$2}' UserParameter=uHDD.nv_serial_number.[*],sudo smartctl -x $1 | grep -i "Serial Number" | awk -F ":" '{print $$2}' UserParameter=uHDD.nv_firmware_version.[*],sudo smartctl -x $1 | grep -i "Firmware Version" | awk -F ":" '{print $$2}' # Available Spare, else <5% to alarm UserParameter=uHDD.nv_available_spare.[*],sudo smartctl -A $1 | grep -I "Available Spare" | awk -F ":" '{print $$2}' | head -n1 # % - used UserParameter=uHDD.nv_percentage_used.[*],sudo smartctl -A $1 | grep -I "Percentage Used" | awk -F ":" '{print $$2} # 27 - Celsius transfort to 27 # Temperature Disk UserParameter=uHDD.nv_temperature.[*],sudo smartctl -A $1 | grep -I "Temperature" | awk -F ":" '{print $$2-0}' | head -n1 UserParameter=uHDD.nv_power_on_hours.[*],sudo smartctl -A $1 | grep -I "Power On Hours" | awk -F ":" '{print $$2}' UserParameter=uHDD.nv_controller_busy_time.[*],sudo smartctl -A $1 | grep -I "Controller Busy Time" | awk -F ":" '{print $$2}'
После не забываем сохранить внесенные изменения. Для применения изменений перезапускаем Zabbix
-агент.
На заметку: второй символ процента необходим в конфигурационном файле, а если нужно выполнить команду через bash
, то оставляет один символ процента.
root@srv-proxmox:~# systemctl restart zabbix-agent
Шаг №8: В шаблоне Template_SMART
создаю элементы данных для диска M.2:
http://IP&DNS/zabbix - user&pass - Настройка - Шаблоны -
группа: Все
Имя: SMART
нажимаю «Применить
«, затем нажимаю у найденного шаблона «Элементы данных
»
и создаю «Создать элемент данных
«:
Элемент данных | Имя | Тип | Ключ | Тип информации | Интервал обновления |
HDD /dev/nvme0: Model Number | Zabbix Agent | uHDD.nv_model_number.[/dev/nvme0] | Текст | 1d | |
HDD /dev/nvme0: Serial Number | Zabbix Agent | uHDD.nv_serial_number.[/dev/nvme0] | Текст | 1d | |
HDD /dev/nvme0: Available Spare | Zabbix Agent | uHDD.nv_available_spare.[/dev/nvme0] | Текст | 1h | |
HDD /dev/nvme0: Controller Busy Time | Zabbix Agent | uHDD.nv_controller_busy_time.[/dev/nvme0] | Числовой (целое положительное) | 1h | |
HDD /dev/nvme0: Firmware Version | Zabbix Agent | uHDD.nv_firmware_version.[/dev/nvme0] | Текст | 1d | |
AD /dev/nvme0: Percentage Used | Zabbix Agent | uHDD.nv_percentage_used.[/dev/nvme0] | Текст | 1h | |
HDD /dev/nvme0: Power On Hours | Zabbix Agent | uHDD.nv_power_on_hours.[/dev/nvme0] | Числовой (целое положительное) | 1d | |
HDD /dev/nvme0: Temperature | Zabbix Agent | uHDD.nv_temperature.[/dev/nvme0] | Числовой (с плавающей запятой) | 30m |
Шаг №9: Предопределяю триггеры.
http://IP&DNS/zabbix - user&pass - Настройка - Шаблоны - Template_SMART - триггеры - Создать триггер
Имя: M.2 Available Spare
Выражение: {Template_SMART:uHDD.nv_available_spare.[/dev/nvme0].last()}<=5
Важность: Высокая
и т.д. по такому же принципу
После нужно перезапустить Zabbix
-сервис:
ekzorchik@srv-zabbix:~$ sudo systemctl restart zabbix-server
Шаг №10: Нацеливаю шаблон Template_SMART
на хост (srv-proxmox
)
http://IP&DNS/zabbix - user&pass - Настройка - Узлы сети - Группа: Все
— перехожу в узел srv-proxmox
(предварительно он должен быть заведен в Zabbix
), затем «Шаблоны
» — «Добавить
» — нахожу шаблон Template_SMART
и отмечаю галочкой, нажимаю «Выбрать
» — «Обновить
«.
Вот так выглядит настройка когда шаблон присоединен к узлу:
Шаг №11: Инициализирую принудительный опрос элементов данных которые относятся к M.2
диску
http://IP&DNS/zabbix - user&pass - Настройка - Узлы сети
— выбираю узел srv-proxmox
, перехожу в «Элементы данных
«, выполняю сортировку по «Группа элементов данных
» = M.2
и нажимаю «Применить
»
Шаг №12: Проверяю, как данные были сняты через агент с хоста применительно к группе M.2:
http://IP&DNS/zabbix - user&pass - Мониторинг - Последние данные
Узел сети: srv-proxmox
Группа элементов данных: M.2
и нажимаю «Применить
«. Результат
Шаг №13: Выгружаю Template: Template_SMART_SSD_SATA_M2 и также сохраняю его в личном хранилище OwnCloud 10
Итого, я разобрался, как вручную поставить на мониторинг один диск формата M.2
в заббикс, настроил некоторые триггеры и выгрузил его к себе в личное хранилище OwnCloud 10
. Теперь я могу перейти к автоматизации определения всех дисков системы, а не явного указания. На этом пока все, с уважением автор блога Олло Александр aka ekzorchik.