В текущей заметке я разберу, как посредством системы мониторинга 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/zabbixConfigurationHosts — выбираю свой хост: 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/zabbixConfigurationHostsZabbix server Items и находим только что созданный:

Web-интерфейс Zabbix не воспринимает настроенный элемент данных

но как видно, он еще не завелся, в большинстве случаем с которыми мне приходилось сталкиваться когда я настраивал новые элементы данных помогала повторная перезагрузка сервисов (иногда но не всегда, может у Вас все быть настроено корректно и верно, а система 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.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru