Главная > Операционные системы > UNIX > Linux Обзор программ для мониторинга работы железа в Linux
Как здоровье, пингвин? Юрий Раззоренов Хакер, номер #103, стр. 103-102-1 Обзор программ для мониторинга работы железа в LinuxЛето. На улице уже который день стоит жара. Три вентилятора в системном блоке с большим трудом справляются с охлаждением, хотя шумят прилично. Иногда создается впечатление, что системный блок можно использовать вместо печки. Как узнать, что происходит внутри, не дотрагиваясь пальцами до деталей включенного компьютера? Может, уже пора дать отдохнуть своему железному другу? Или поставить еще один кулер? В составе любого дистрибутива Linux найдется несколько утилит, которые помогут получить ответ на эти и другие вопросы и расскажут все о текущем состоянии железа. lm-sensors: стандарт де-фактоВ Debian, Ubuntu и других дистрибутивах, использующих apt, команда apt-cache search monitoring выдает большой список пакетов на все случаи жизни. Все их рассмотреть не получится, да и, наверное, не нужно. Мониторинг оборудования (температура, вращение вентиляторов, напряжение питания) будем производить с помощью утилиты lm-sensors (www.lm-sensors.org). Утилита собирает и анализирует все, что идет по шине SMB (System Management Bus), к которой могут быть подключены не только процессор и материнская плата, но и модули памяти, видеокарта и прочее оборудование. В ядрах 2.4 установка lm-sensors могла вызвать легкий стресс, но с интеграцией в ядро 2.6 компонентов, осуществляющих мониторинг, заставить ее работать уже не проблема. Информацию о поддержке своего оборудования lm-sensors и ядром можно найти на странице Devices and drivers (www.lm-sensors.org/wiki/Devices). Здесь же уточняем, какую версию lm-sensors рекомендуется использовать с установленным в системе ядром. Хотя можно особо и не выбирать, а ставить то, что предлагается в репозитарии. Так как утилиты диагностики частью ядра не являются, их следует устанавливать отдельно: $ sudo apt-get install lm-sensors sensord Заодно установим и демон sensord, его задача собирать информацию в syslog. Кроме того, в случае неприятностей он может выдать предупреждение. Для первоначальной настройки системы мониторинга следует использовать утилиту sensors-detect: $ sudo sensors-detect После запуска утилиты тебе будет устроен настоящий допрос с пристрастием. Следует отвечать честно, ничего не
скрывая :). В случае сомнения можно разрешать все тесты. Утилита пройдется по всем шинам и устройствам, переберет
все скомпилированные модули и выберет те, от которых есть хоть какой-то прок. Если будет выведена хотя бы
пара Советую проверить в /lib/modules/2.6.x/modules наличие всех модулей, которые порекомендовал загрузить sensors-detect. Скрипт иногда бежит впереди паровоза или, наоборот, отстает, поэтому вполне может быть, что таких модулей в системе попросту нет. Так, однажды мне было предложено использовать i2c-nforce2, но такой модуль в системе отсутствовал. Как вариант - можно попробовать загрузить модули вручную с помощью Для получения информации с сенсоров вызываем утилиту sensors без параметров (можно уже под обычным пользователем): $ sensors lm85b-i2c-0-2e Adapter: SMBus I801 adapter at c800 VoltA1_5: +1.49 V (min = +1.42 V, max = +1.58 V) Volt1_5: +1.52 V (min = +1.45 V, max = +1.60 V) Volt3_3: +3.23 V (min = +3.13 V, max = +3.47 V) Volt5: +5.20 V (min = +4.74 V, max = +5.26 V) Volt12: +12.01 V (min = +11.38 V, max = +12.62 V) FanCPU: 3540 RPM (min = 4000 RPM) TempCPU: +28C (low = +10C, high = +55C) TempMB1: +31C (low = +10C, high = +55C) TempMB2: +34C (low = +10C, high = +55C) CPUF_PWM: 255 SysF1_PWM: 255 SysF2_PWM: 77 vid: +1.525 V (VRM Version 9.1) Параметры вывода на экран настраиваются в файле /etc/sensors.conf. Ищем строку, соответствующую нашему чипу (в нашем примере это lm85), и правим при необходимости: $ sudo mcedit /etc/sensors.conf chip "lm85c-*" "adm1027-*" "adt7463-*" "lm85-*" "lm85b-*" # Метки вольтажа label in0 "V1.5" label in1 "VCore" ... # Температура label temp1 "CPU Temp" label temp2 "Board Temp" ... # Кулер label fan1 "CPU_Fan" # Установка лимита вольтажа set in0_min 1.5 * 0.95 # Лимит кулера set fan1_min 4000 Хотелось бы обратить внимание на утилиту KSensors (ksensors.sourceforge.net), которая является графическим интерфейсом к sensors для среды KDE. В Ubuntu она устанавливается обычным образом: $ sudo apt-get install ksensors Теперь запускаем ее через меню Настройки демона sensord производятся в файле /etc/default/sensord. $ sudo mcedit /etc/default/sensord # Интервал для сканирования на предупреждения (30s, 1m, 1h) ALARM_INTERVAL=1m # Интервал между замерами для записи в журнал LOG_INTERVAL=30m SYSLOG_FACILITY=daemon CONFIG_FILE=/etc/sensors.conf # Чип берем из sensors.conf SCAN_CHIPS= lm85b-* # Снимаем комментарий, если нужен вывод для RRD (Round Robin Database) # RRD_FILE=/var/log/sensord.rrd # Интервал, по умолчанию 5 минут # RRD_INTERVAL=5m # RRD_LOADAVG=yes В комплекте lm-sensors идет утилита pwmconfig, которая проверяет возможность изменения скорости вращения кулеров. Если такая функциональность имеется, для настройки скорости вращения следует использовать утилиту fancontrol. Конфигурационный файл для нее создается с помощью pwmconfig. Утилита (x)mbmonЕстественно, кроме lm-sensors есть и другие решения. Например, утилита mbmon (MotherBoard Monitor) и графический интерфейс к ней: xmbmon. С их помощью можно контролировать температуру компонентов системы, скорость вращения кулера и вольтаж. Исходные тексты можно найти на сайте автора: www.nt.phys.kyushu-u.ac.jp/shimizu/download/download.html. Установка в Ubuntu не сложна: $ sudo apt-get install mbmon xmbmon Теперь можно запускать без каких-либо настроек: $ sudo mbmon Temp.= 30.0, 24.0, 127.0; Rot.= 3308, 0, 6026 Vcore = 1.14, 1.52; Volt. = 3.28, 5.00, 11.49, -6.62, -1.83 Запустив xmbmon, всю эту информацию можно увидеть в окне программы. Мониторинг жесткого диска с hddtempВообще говоря, процессор не самая главная часть компьютера. Вот если полетит жесткий диск, считай, пропали фильмы, курсовые, дипломы и т.д. Поэтому винт требует особого внимания. В Linux есть ряд утилит как раз для этого случая. Начнем с маленькой по размеру, но очень полезной утилиты hddtemp (www.guzu.net/linux/hddtemp.php). С ее помощью можно получать информацию о температуре с IDE/SATA/SCSI-дисков, а также считывать S.M.A.R.T. информацию. Устанавливаем: $ sudo apt-get install hddtemp Кроме этого, рекомендуется обновить и базу дисков, скачав файл www.guzu.net/linux/hddtemp.db и поместив его в /etc. Вызов очень прост: $ sudo hddtemp /dev/sda /dev/sda: ST3160811AS: нет датчика Да, с барракудой не повезло, посмотрим, что скажет утилита о втором диске: $ sudo hddtemp /dev/hdb /dev/hdb: QUANTUM FIREBALLlct20: 31C or F Результат: температура файрбола. Как вариант - hddtemp можно запустить в фоне. Получить информацию в этом случае возможно в журнале syslog или подключившись по сети: $ sudo hddtemp -d -q /dev/hdb Телнетимся: $ telnet localhost 7634 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. |/dev/hdb|QUANTUM FIREBALLlct20 30|32|C|Connection closed by foreign host. Результат: 32 градуса. Таким образом температура диска выясняется даже без регистрирации в системе. Комплект smartmontoolsС помощью набора утилит smartmontools (smartmontools.sf.net) можно контролировать и управлять некоторыми параметрами жесткого диска, используя технологию S.M.A.R.T. Поддерживаются диски с интерфейсами ATA, SCSI и SATA. Для начала стоит проверить статус подключенных устройств: $ sudo smartd -q onecheck Opened configuration file /etc/smartd.conf Drive: DEVICESCAN, implied '-a' Directive on line 22 of file /etc/smartd.conf Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices Device: /dev/hda, opened Device: /dev/hda, packet devices [this device CD/DVD] not SMART capable Unable to register ATA device /dev/hda at line 22 of file /etc/smartd.conf Device: /dev/hdb, opened Device: /dev/hdb, found in smartd database. Device: /dev/hdb, is SMART capable. Adding to "monitor" list. Device: /dev/sda, opened Device: /dev/sda, IE (SMART) not enabled, skip device Try 'smartctl -s on /dev/sda' to turn on SMART features Unable to register SCSI device /dev/sda at line 22 of file /etc/smartd.conf Monitoring 1 ATA and 0 SCSI devices Последняя строка показывает, что будет производиться мониторинг только ATA-диска. На устройстве /dev/sda SMART не активирован, при необходимости его можно включить с помощью вызова $ sudo smartctl -i /dev/hdb Model Family: QUANTUM FIREBALLlct20 series Device Model: QUANTUM FIREBALLlct20 30 Serial Number: 353106162000 Firmware Version: APL.3900 User Capacity: 30.020.272.128 bytes Device is: In smartctl database [for details use: -P show] ATA Version is: 5 ATA Standard is: ATA/ATAPI-5 T13 1321D revision 1 Local Time is: Sun May 20 17:32:12 2007 EEST SMART support is: Available - device has SMART capability. SMART support is: Enabled Более полную информацию можно получить, запустив утилиту с флагом '-a'. Вывод займет пару экранов, в самом конце будет выведена таблица со списком контролируемых параметров. Особое внимание следует обратить на поле WHEN_FAILED, в котором отобразится приблизительная дата, когда этот параметр достигнет своего допустимого предела. Эти тесты можно вызвать и отдельно. Причем есть два варианта: сокращенный и полный. Они инициируются командами: $ sudo smartctl -t short /dev/hdb Или: $ sudo smartctl -t long /dev/hdb Сокращенная проверка длится 1-2 минуты, полная может занять около часа. На работу диска эти тесты никак не влияют, поэтому их можно спокойно запускать на работающей системе. Ошибка будет выведена в поле LBA_of_first_error. Колонка LifeTime покажет время, прошедшее с момента включения диска до проведения проверки. Оффлайновые тесты запускаются командой smartctl -t offline; их назначение - обновление показателей состояния диска, которые не могут быть обновлены во время обычной работы. Используя smartctl -o on, можно разрешить дискам производить такую проверку самостоятельно. Мониторинг следует производить постоянно. Для этих целей используется демон smartd, который также входит в состав smartmontools. По умолчанию он проверяет все диски каждые 30 минут, информацию выводит с помощью syslog. Демона можно научить при обнаружении проблем отсылать почтовое сообщение администратору или выполнять скрипт. Шаблон содержит большое количество примеров. Каждая строка файла описывает параметры одного из присутствующих в системе дисков. Например: $ sudo mcedit /etc/smartd.conf /dev/sda -S on -o on -a -I 194 -m admin@host.com /dev/hdb -S on -o on -a -I 194 -m admin@host.com Здесь мы указываем диск, директивой -S on включаем автоматическое сохранение значений показателей. -o on отвечает за проведение регулярного оффлайнового тестирования. С помощью -I 194 игнорируем значение показателя с ID #194, отвечающего за контроль температуры, и в конце указываем email для отправки уведомлений. Проверить отсылку сообщений можно командой smartd -M test. Теперь запускаем демон: $ sudo /etc/init.d/smartd start Вот, в общем-то, и все, о чем мне хотелось сегодня рассказать. Кстати, пользователи FreeBSD тоже не обделены возможностями наблюдения за здоровьем своей системы. Все необходимое можно найти в дереве /usr/ports/sysutils коллекции портов. Из графических утилит, не попавших в обзор, стоит отметить gkrellm (www.gkrellm.net) и conky (conky.sf.net), с которыми, я надеюсь, ты разберешься уже сам. Файловая система /procНекоторую информацию можно получить, обратившись напрямую к файловой системе /proc. Для примера проверим, включен ли кулер на процессоре: $ sudo cat /proc/acpi/fan/FAN/state status: on Возможность его выключения командой echo 0 > /proc/acpi/fan/FAN/state зависит от материнской платы. Температуру процессора можно просмотреть так: $ sudo cat /proc/acpi/thermal_zone/THRM/temperature temperature: 23 C В Linux температура выводится в градусах Цельсия, в других системах - в кельвинах. Кстати, есть целая утилита от разработчиков KDE, называется KTemperature, найти ее можно по адресу www.kde-apps.org/content/show.php?content=24660 или в репозитарии. Она как раз считывает информацию из этого файла и выводит результат на панель задач в виде индикатора. В trip_points можно считать или задать политику управления охлаждением системы: $ sudo cat /proc/acpi/thermal_zone/THRM/trip_points critical (S5): 65 C passive: 63 C: tc1=4 tc2=3 tsp=60 devices=0xdf852338 active[0]: 63 C: devices=0xdf85ff90 Возможны три варианта политики: critical (критическая температура, после которой возможен автоматический переход в спящий режим), passive (уменьшение частоты процессора) и active (активный режим работы кулера). Причем active может иметь несколько ступеней: от 0 до 9. Команда на изменение этих параметров выглядит так: $ echo -n "critical:hot:passive:active0:...:activeX" > trip_points Например: $ echo "105:100:100:78:70:60:50" > /proc/acpi/thermal_zone/TZ0/trip_points Режим охлаждения можно просмотреть такой командой: $ sudo cat /proc/acpi/thermal_zone/THRM/cooling_mode cooling mode: active Устанавливать пассивный режим возможно не на всех устройствах, хотя современные ноутбуки его обычно поддерживают. Частота опроса сенсоров указывается в polling_frequency: $ sudo cat /proc/acpi/thermal_zone/THRM/polling_frequency <polling disabled> Это означает, что в случае изменений само устройство способно генерировать асинхронные прерывания, поэтому наблюдать за ним нет смысла. Более подробную информацию о thermal_zone можно найти на сайте acpi.sourceforge.net/documentation/thermal.html. Подготовка дистрибутиваДля того чтобы большинство описанных утилит заработало, необходимо иметь поддержку I2C и Hardware Monitoring в ядре. То есть как минимум всего, что выдают команды <cat /usr/src/linux/.config | grep LM> и <cat /usr/src/linux/.config | grep I2C2>. Поэтому если вывод $ sudo make mеnuconfig Включаем поддержку ACPI: Power management options (ACPI, APM) - ACPI (Advanced Configuration and Power Interface) Support Не забываем стандарт управления сенсорами IPMI: Device Drivers - Character devices - IPMI Обязательно включаем поддержку сенсоров в ядре: Device Drivers - I2C support Выбираем алгоритмы, используемые в чипах: Device Drivers - I2C support ---> I2C Algorithms В следующих пунктах выбираем установленный чипсет: Device Drivers - I2C support - I2C Hardware Bus support Device Drivers - I2C support - Miscellaneous I2C Chip support И, наконец, выбираем драйверы к сенсорам: Device Drivers - Hardware Monitoring support Начиная с версии ядра 2.6.19, появился новый драйвер мониторинга k8temp, который поддерживает все последние модели AMD K8. В соответствующих системах этот драйвер загружается автоматически. Отмечена его несовместимость со старыми версиями lm-sensors. Поэтому обязательно обнови утилиту или занеси k8temp в черный список, иначе General parse error тебе обеспечена. Главная > Операционные системы > UNIX > Linux |