В текущей заметке я разберу, как посредством системы мониторинга Zabbix мониторить как изменяется температура жесткого диска в текущей системе. Большинство наработок я произвожу на своем домашнем ноутбуке HP dv6-3080er с системой Ubuntu 12.04.5 Desktop amd64 в роли графического окружения у меня выступает Gnome Classic. Раз у меня включена для моего жесткого диска технология SMART, то посредством утилиты:
Приложения — Стандартные — Дисковая утилита получаю текущую информацию по моему жесткому диску. Ниже представлен скриншот информации.
Внимательно посмотрев на представленный скриншот вижу те данные которые мне нужно получить посредством вывода консольный утилит, а именно что текущая температура
жесткого диска — 45 градусов. (вроде нормально). Пробую поставить утилиту hddtemp в систему, чтобы с помощью нее извлечь данные по температуре, но применительно к моему диску — информация не извлекается.
keiz@dv6:~$ sudo apt-get install hddtemp -y
keiz@dv6:~$ sudo hddtemp /dev/sda
ВНИМАНИЕ: Диск /dev/sda не дает показания температурного датчика.
ВНИМАНИЕ: Это еще не значит, что у него его нет.
ВНИМАНИЕ: Если вы точно знаете, что датчик есть, напишите hddtemp@guzu.net
ВНИМАНИЕ: (см. опции –help, –debug и –drivebase).
/dev/sda: TOSHIBA MK5056GSY: нет датчика
А посредством другой утилиты из набора SMART:
keiz@dv6:~$ sudo smartctl -a /dev/sda | grep 190
190 Airflow_Temperature_Cel 0x0022 056 041 045 Old_age Always In_the_past 44 (Min/Max 26/45)
Т.е. Текущая температура моего ноутбучного жесткого диска 45 градусов цельсия. Но так ли это на самом деле, почему-то другие источники консольного типа мне вообще ничего не выводят. А потому нужно поискать еще какие нибудь консольные утилиты чтобы это подтвердить.
Проанализировав еще много разных утилит остановился на этой: – HDSentinel
Расшифровывается аббревиатура hdsentinel, как Hard Disk Sentinel Linux Edition (FREE). Возможности данной утилиты состоят в следующем, с ее помощью можно извлекаеть температуру и жизненную информацию со следующих типов:
IDE, S-ATA (SATA II also), SCSI and USB жестких дисков подключенных как к материнской плате так и внешним контроллерам.
В стандартных репозитариях данной утитилы к сожалению нет, поэтому выкачиваем ее с официального сайта:
keiz@dv6:~/test$ wget http://www.hdsentinel.com/hdslin/hdsentinel.gz
keiz@dv6:~/test$ gzip -d hdsentinel.gz
keiz@dv6:~/test$ chmod +x hdsentinel
keiz@dv6:~$ file test/hdsentinel
test/hdsentinel: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped
Для удобства перенесу данную утилиту в каталог /bin:
keiz@dv6:~/test$ sudo mv hdsentinel /bin
Теперь с ее помощью выведу информацию по своему жесткому диску:
keiz@dv6:~$ sudo hdsentinel
Hard Disk Sentinel for LINUX console 0.03 (c) 2008-2009 info@hdsentinel.com
Start with -r [reportfile] to save data to report, -h for help
Examining hard disk configuration …
HDD Device 0: /dev/sda
HDD Model ID : TOSHIBA MK5056GSY
HDD Serial No: 40L8FBOTS
HDD Revision : LH003C
HDD Size : 476940 MB
Interface : S-ATA II
Temperature : 43 °C
Health : 100 %
Performance : 100 %
Power on time: 69 days, 4 hours
Est. lifetime: more than 1000 days
Вот теперь уже лучше и можно посредством некоторых утилит форматирования получить температуру жесткого диск в виде конечного числа:
keiz@dv6:~$ sudo hdsentinel -solid | awk '{print $2, $1, $5}' | grep -v "^?" | sort -nr
43 /dev/sda TOSHIBA_MK5056GSY
keiz@dv6:~$ sudo hdsentinel -solid | awk '{print $2}' | grep -v "^?" | sort -nr
43
Теперь перехожу к подготовке элемента данных для текущего хоста на предмет слежения за температурой моего жесткого диска: (тут все просто ниже пошаговая инструкция как это сделать)
http://IP&DNS/zabbix — Configuration — Hosts — выбираю свой хост: Zabbix server — потом перехожу на Items (элемент данных) — Create Item (создаю новый)
- Name: HDD /dev/sda
- Type: Zabbix agentd.conf
- Key: hdd
- Host interface: 127.0.0.1:10050
- Type of information: Numeric (unsigned)
- Data type: Decimal
- Applications: Monitoring (это я ранее предварительно создал группу)
- Enabled: отмечаем галочкой
А после как основные параметры определены для текущего элемента данных нажимаю Save для сохранения внесенных изменений.
Ниже подготавливаю конфигурационный файл для осуществления взаимодействия скриптовой части по извлечению числового выражения температуру жесткого диска которое будет передаваться на Zabbix и уже визуализироваться посредством наглядного графика.
keiz@dv6:~$ sudo nano /usr/lib/zabbix/externalscripts/hdd
#!/bin/bash
sudo hdsentinel -solid | awk '{print $2}' | grep -v "^?" | sort -nr
exit
keiz@dv6:~$ sudo chmod +x /usr/lib/zabbix/externalscripts/hdd
keiz@dv6:~$ sudo nano /etc/zabbix/zabbix_agentd.conf
UserParameter=hdd[*],/usr/lib/zabbix/externalscripts/hdd
keiz@dv6:~$ sudo service zabbix-server restart
keiz@dv6:~$ sudo service zabbix-agent restart
Проверяю, что созданный скрипт отрабатывает на основе внесенных дополнений в конфигурационный файл Zabbix агента:
keiz@dv6:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t hdd
hdd [t|43]
Отлично Zabbix понимает подготовленный для него скрипт на предмет мониторинга температуры жесткого диска.
Проверю, что созданный элемент данных активировался:
http://IP&DNS/zabbix — Configuration — Hosts — Zabbix server — Items и находим только что созданный:
но как видно, он еще не завелся, в большинстве случаем с которыми мне приходилось сталкиваться когда я настраивал новые элементы данных помогала повторная перезагрузка сервисов (иногда но не всегда, может у Вас все быть настроено корректно и верно, а система Web-интерфейс Zabbix показывает что все не так, идет ошибка — просто перезагрузите систему):
keiz@dv6:~$ sudo service zabbix-server restart
keiz@dv6:~$ sudo service zabbix-agent restart
keiz@dv6:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t hdd
hdd [t|43]
хм странно информация через консоль воспринимается, а в Web-интерфейсе почему-то нет. Если что то не заработало, как надо сразу на помощь приходят логи. Анализирую логи агента и обнаруживаю что нет возможность выполнить, как я правильно понимаю из скрипта hdd команду hdsentinel с первым ключом это повышения прав через sudo.
keiz@dv6:~$ sudo tail -f /var/log/zabbix/zabbix_agentd.log
sudo: нет tty и не указана программа askpass
sudo: нет tty и не указана программа askpass
The more you drive — the dumber you get.
На заметку: по умолчанию пользователь Zabbix не имеет прав перезапускать системные сервисы
Также надо включить удаленное выполнение команд Zabbix’ом, для этого в конфигурационном файле Zabbix агента следует активировать параметр: EnableRemoteCommands
keiz@dv6:~$ sudo nano /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
после перезапустить демон агента:
keiz@dv6:~$ sudo service zabbix-agent restart
Для исправления данной ситуации нужно учетной записи zabbix разрешить запуск утилиты hdsentinel с использованием повышения прав:
keiz@dv6:~$ sudo nano /etc/sudoers
Defaults:zabix !requiretty
zabbix ALL=(ALL) NOPASSWD: /bin/hdsentinel
Теперь снова перезапускаю сервисы Zabbix для перечивания внесенных изменений:
keiz@dv6:~$ sudo service zabbix-server restart
keiz@dv6:~$ sudo service zabbix-agent restart
Теперь по прошествии некоторого количества времени или форсированной нагрузки на подсистему работу жесткого диска снова переключаемся на Zabbix интерфейс для отображения визуализации снимаемых данных о температуре:
http://IP&DNS/zabbix — Monitoring — Latest data
Group: Zabbix servers
Host: Zabbix server
Разворачиваю категорию Monitoring — нахожу элемент данных HDD /dev/sda и нажимаю Graph и то что мне нужно было — график изменения температуры жесткого диск с учетом изменяемого настоящего времени.
Работает. Цель заметки достигнута. Теперь я могу для себя знать как меняется температура моего жесткого диска на ноутбуке в зависимости от выполняемых задач, если греется он очень уж сильно то возможно стоит убрать его с колен или с дивана, т. к. оттот горячего воздуха не производится должным образом. Да и плюс в этой заметке, что на основе этой смогу сделать еще что-нибудь более интересное и значимое, это так называемый задел на будующее. А мой блог — как раз и есть отражение этого. Не буду Вас задерживать и до встречи, с уважением, автор блога — ekzorchik.