7/24/2006

Мониторинг состояния устройств в Linux

На улице жара, и вентиляторы на полных оборотах едва справляются с охлаждением системы. Когда, бывает, откроешь крышку системного блока и прикоснёшься, например, к жёстким дискам, становится страшно - какая же температура на критичных компонентах? И как её измерить? Пост на тему утилит мониторинга для Linux.

Что будем мерять?
Имеется несколько утилит в составе Debian, которые могут помочь в мониторинге установленного в системе железа. Установка их не представляет труда, но перед этим надо систему соответственным образом настроить. Этого вполне достаточно, чтобы иметь представление о том, что происходит с системой.

Следует отметить, что поставленные утилиты будут выводить данные в консоли - при желании можно поставить любую графическую мордочку, которая будет выводить эти данные с любыми рюшечками и свистелками.

Подготовка системы
Для того, чтобы все установленные утилиты заработали, требуется иметь в ядре I2C и Hardware Monitoring включёнными монолитно, а так же модульно все драйверы для вашей материнской платы. Это всё, что относится к фирме-изготовителю материнки плюс обязательно скомпилируйте все модули lm*, например lm85.
Короче, в ядре должно быть:

Device Drivers | ---
I2C Support
| --- [*]
I2C support

I2C device interface
I2C Algorithms ---
I2C bit-banging interfaces I2C PCF 8584 interfaces
I2C PCA 9564 interfaces I2C Hardware Bus support ---
всё модулями
Miscellaneous I2C Chip support ---
всё модулями [ ]
I2C Core debugging messages
[ ]
I2C Algorithm debugging messages
[ ]
I2C Bus debugging messages
[ ]
I2C Chip debugging messages

Device Drivers
- Hardware Monitoring support

National Semiconductor LM63
National Semiconductor LM75 and compatibles
National Semiconductor LM77

National Semiconductor LM78 and compatibles

National Semiconductor LM80

National Semiconductor LM83
National Semiconductor LM85 and compatibles

National Semiconductor LM87

National Semiconductor LM90 and compatibles

National Semiconductor LM92 and compatibles


Можно сидеть и долго курить мануалы, а можно скомпилировать поддержку всех чипов модулями. Собрали ядро (как собрать ядро в Linux), поставили, загрузились. Теперь всё готово для решительной установки.


lm_sensors

Это проект поддержки мониторинга оборудования (температура, вращение вентиляторов, напряжения питания). Мониторинг этот осуществляется посредством обмена по шине SMB (System Management Bus). Кроме чипов мониторинга к этой шине могут быть подключены чипы EEPROM современных модулей памяти. Чипы мониторинга и датчики в настоящее время располагаются не только на M/B, но и на CPU и некоторых видеокартах (*).
Теперь как всю эту прелесть водрузить в Дебиане? Очень просто - ставим пакеты:
# apt-get install sensord lm-sensors
И все зависимости, которые он потянет. Теперь опять-таки от рута даём команду:
# sensors-detect
Не пугайтесь - она устроит вам допрос с пристрастием и будет перебирать все скомпилированные вами модули (вот зачем мы их все компилировали!) на предмет их соответствия вашим ресурсам. Пусть смотрит все шины - будет искать и по ISA, и по PCI, и везде, куда доберётся.
В результате утилита или "разведёт руками", или радостно обнаружит модули, подходящие к вашей плате. Если найдёт - скажет, какие и посоветует сразу их добавить в стартовые файлы. Добавляйте, чтобы потом не мучаться.
После чего можно уже от простого пользователя утилитой sensors получить информацию о том, как и что делается в вашей системе.


hddtemp
Это ещё не всё. Теперь черёд жестких дисков и их здоровья. Больше ничего компилировать нам не надо - всё уже есть. Осталось только дебианским проверенным движением:
# apt-cache search sensor | grep hdd
Получить то, что сейчас будем ставить:

hddtemp - Utility to monitor the temperature of your hard drive
Стало быть,
# apt-get install hddtemp
Оно совсем маленькое, но выполняет важную задачу - смотрит на температуру диска. У этой утилиты большое преимущество перед заточенными на s.m.a.r.t - она умеет общаться с дисками SATA. Вызов очень прост: hddtemp /dev/ваш_диск Вот так это выглядит для винчестера моего ноутбука:
# hddtemp /dev/hda
WARNING: Drive /dev/hda doesn't appear in the database of supported drives
WARNING: But using a common value, it reports something.
WARNING: Note that the temperature shown could be wrong.
WARNING: See --help, --debug and --drivebase options.
WARNING: And don't forget you can add your drive to hddtemp.db
/dev/hda: HTS421260H9AT00: 27C or F
Вполне прилично. Единственное, что если диск не значится в базе программы, будет страшно сокрушаться по этому поводу (выделено серым, чтобы в глаза не било). В остальном всё честно - температура харда в цельсиях. Удобно завернуть в скрипт и мониторить, например, через определённые интервалы времени.


smartctl
Всем хорош hddtemp, но уж чья сестра краткость - так это именно его. Зато True UNIXway - она делает только одно дело, зато очень хорошо. Если хочется большего, например, диагностики своего винчестера, смотрим в сторону утилит, поддерживающих S.M.A.R.T. Расшифровывается как Self-Monitoring, Analysis and Reporting Technology (SMART). Такая система встроена во многие винчестеры ATA-3 (и выше), IDE и SCSI.
Звучит громко, на самом же деле считывает данные о самодиагностике, которые предоставляют современные винчестеры. Умеет работать в режиме демона, и особенно хорошо смотрится на серверах: ресурсов ест мало, дело делает хорошо и информации может дать море.
Ставится очень просто - инстинктивным движением:
# apt-get install smartmontools
получаем в распоряжение демона (который будет запускаться и мониторить диски - или не будет, если не захотите) smartd. Демона по пустякам тревожить не стоит, для общения с пользователем есть его заместитель smartctl, вызов которого производится заклинанием:
# smartctl -i /dev/hda
Если у вас другой диск, соответственно, поправьте. После недолгих раздумий заместитель демона вас либо огорчит (нет поддержки SMART в вашем винчестере, или диск с SATA), или порадует:

smartctl version 5.34 [i686-pc-linux-gnu] Copyright (C) 2002-5 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model: SAMSUNG SV2002H
Serial Number: 0395J1FR904324
Firmware Version: RA100-04
User Capacity: 20,060,651,520 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 6
ATA Standard is: ATA/ATAPI-6 T13 1410D revision 1
Local Time is: Tue May 2 15:44:09 2006 IST

SMART support is: Available - device has SMART capability.
SMART support is: Enabled

You can configure the smartd daemon by editing the file /etc/smartd.conf.
In above output the lines:
SMART support is: Available - device has SMART capability.
SMART support is: Enabled


Конфигурировать его можно через правку конфига в /etc/smartd.conf
К сожалению, он не поддерживает мониторинг SATA-дисков, зато с IDEшными хардами выдаёт кучу полезной информации. Это актуально для владельцев ноутбуков, например.


Графические утилиты мониторинга
Не всё нам консоль - мониторить состояние системы можно и в графической оболочке. Собственно, они являются фронтэндами перечисленных выше программ. Например, я использую:

torsmo - system monitor that sits in the corner of your desktop

Небольшая текстовая прозрачная менюшка, которая висит там, где ей скажешь, и обновляется через задаваемый промежуток времени. Очень удобно - один взгляд, и полное предтавление о системе. В Дебиане имеется, и ставится всем нам известным правильным движением.


Ссылки:
http://www.cyberciti.biz/nixcraft/vivek/blogger/2006/05/monitoring-hard-disk-health-with.php
http://citforum.ru/open_source/lm_sensor/
http://secure.netroedge.com/~lm78/supported.html

5 комментариев:

  1. дык torsmo уже давно умер и не развивается...
    я использую conky - его форк :)

    ОтветитьУдалить
  2. А что насчет карамбы скажете? Мне понравилась, но температуру процессора и материнки не выводит:( Хотя sensors показывает все отлично. Почему не может своей темой вырезать кусок из вывода sensors - так и не понял, сколько тему не ковырял... Кстати, мне в сарже никакой перекомпиляции не потребовалось, все нужные мне сенсоры и так заработали.

    ОтветитьУдалить
  3. Начал перечитывать блог еще раз, снова нашел много интересного :)
    Печально что заточенных под SATA инструментов мало, и таки кнопки "Print view" не хватает...

    ОтветитьУдалить
  4. Также hddtemp показывает вывод для всех дисков в веб-интерфейсе, по умолчанию порт 7634. То есть например у меня на localhost:7634 такая строчка:
    |/dev/sda|WDC WD800JD-75MSA3|44|C|.
    Кстати, у меня sensors тоже очень много ALARM-в выдает, почему он так криво определяет границы и нельзя ли их изменить?

    ОтветитьУдалить
  5. спасибо за статью. Она со временем, как хороший коньяк - становиться только лучше, в смысле не теряет своей актуальности)

    ОтветитьУдалить