Мониторинг материнских плат в Linux
При решении задачи по организации мониторинга
материнской платы TYAN S2460 Tiger MP оказалось, что одним только
файлом справки пакета lm_sensors не обойтись. Дополнительные знания
требовались на каждом шагу. Пусть же они помогут в аналогичной ситуации
еще кому-нибудь.
К тому же описание данного процесса подойдет к
большинству случаев по организации мониторинга различных материнских плат
в операционной системе Linux.
Эффективная эксплуатация сложных технических комплексов,
в частности компьютерных, невозможна без исчерпывающей и непрерывно
поступающей информации об основных параметрах функционирования системы.
Особенно эта проблема актуальна для систем, функционирующих по схеме 24 x
7 x 365, а также для систем, к которым персонал имеет ограниченный
доступ.
В каждом конкретном случае список таких параметров может
содержать сотни позиций. Но практически в любой рабочей станции, сервере,
кластере очень важной является информация о техническом состоянии
аппаратуры. Основные характеристики материнских плат, подлежащие
отслеживанию (мониторингу) таковы:
- напряжение питания;
- скорость вращения вентиляторов охладителей;
- температура процессоров;
- температура внутри системного блока.
Производители материнских плат и операционных систем
предлагают собственные решения для мониторинга. Существуют также и
программные средства от третьих производителей.
В дистрибутивах Линукс, которые в последнее время нашли
широкое распространение в серверных системах, стандартом де-факто для
программ мониторинга материнских плат стал пакет lm_sensors (http://www.lm-sensors.nu/). Он поставляется в составе
некоторых дистрибутивов Linux и имеет широкие возможности.
Однако, чем сложнее и универсальнее инструмент, тем труднее его
освоение.
Настоящий материал призван осветить практические вопросы
настройки пакета lm_sensors для мониторинга материнских плат TYAN
S2460 Tiger MP.
К сожалению, в документации на пакет (файл quickstart) не
изложены некоторые тонкие особенности настройки. Попробуем восполнить этот
пробел.
Шаг 1
Сначала проверим, установлены ли исходники и/или готовые
модули для мониторинга на компьютере. Готовые модули лежат** в
/lib/modules/(номер_версии_ОС)/kernel/drivers/sensors и
/lib/modules/(номер_версии_ОС)/kernel/drivers/i2c.
В первом каталоге ищем модуль с именем w83781d, во втором - модули
i2c-core, i2c-amd756, i2c-dev, i2c-proc.
Если они есть, значит, модули мониторинга в вашей операционной системе
установлены.
Нам понадобятся также исходники.
Шаг 2
Не помешает проверить, подгружены ли упомянутые выше
модули при загрузке операционной системы (может, помимо вас, кто-то еще
мониторит уже плату). В консоли (дальше все действия выполняем в консоли,
где необходимо - с правами root'а) надо дать команду: lsmod
В выводе команды ищем названия модулей: i2c-core, i2c-amd756, i2c-dev, i2c-proc, w83781d.
Если все они есть - значит, кто-то уже позаботился о мониторинге и вам
повезло.
Но предположим, что вам не повезло - ничего не найдено.
То есть начинаем работу на машине, где отсутствуют исходники и готовые
модули пакета lm_sensors. Те же, у кого пакет уже установлен, разобравшись
в документации, а также внимательно и творчески изучив данный документ,
смогут без проблем добиться успеха.
Шаг 3
Итак, начнем с получения дистрибутива lm_sensors. Лучше
всего загрузить его с сайта разработчиков (http://secure.netroedge.com/~lm78/download.html), где он
выложен для свободного скачивания. Так мы обеспечим себя последней версией
пакета. Если интернет по какой-либо причине недоступен, то пакет в виде
rpm-файла можно будет найти и в вашем дистрибутиве. Учтите - нужны именно
исходники.
Шаг 4
Добытые исходники положим в какой-нибудь каталог в
распакованном виде. Неплохим будет выбор каталога /usr/src/linux.
Шаг 5
Теперь самое интересное: компилируем и устанавливаем
пакет lm_sensors. В каталоге /usr/src/linux/lm_sensors-номер_версии
последовательно выполним несколько команд: make
make install
depmod -a
Шаг 6
Теперь проверим, появился ли в каталоге
/usr/src/linux/lm_sensors-номер_версии/kernel/busses модуль
i2c-amd756.o, дата создания совпадает которого с текущей датой.
Шаг 7
Аналогичн_м образом следует проверить наличие "свежего"
модуля w83781d.o в каталоге /usr/src/linux/lm_sensors-номер_версии/chips.
Теперь заглянем в файл /etc/ld.so.conf. Ищем там строку /usr/local/lib.
Если такой не находим -добавляем ее туда вручную, после чего выполняем
команду: ldconfig
Теперь внимание! До этого момента мы только компилировали и
устанавливали необходимые для мониторинга программные компоненты. Часть
компонентов, согласно концепции Линукс, в задаче мониторинга является
файлами устройств. Элементам материнской платы - таким как термодатчики,
датчики оборотов вентиляторов, датчики напряжений питания - в пакете
lm_sensors соответствуют файлы виртуальных устройств, располагающиеся в
каталоге /proc/sys/dev/sensors. Самое время заглянуть в указанный
каталог.
При заходе в /proc/sys/dev мы не увидим подкаталога
sensors. Это и понятно - его никто еще не создавал, поэтому датчики платы
нам недоступны. Следующая команда как раз и предназначена для создания
файлов датчиков платы. Выполните ее: /usr/src/linux/lm_sensors-номер_версии/prog/mkdev/mkdev.sh
Вывод команды покажет Вам имена создаваемых устройств.
Шаг 8
Итак, необходимые программные файлы откомпилированы,
файлы устройств созданы. Теперь необходима настройка системы. В ее ходе мы
обеспечим подгрузку необходимых модулей, откорректируем файлы
инициализации, чтобы все необходимое запускалось при старте операционной
системы; создадим шаблон для вывода на консоль информации о контролируемых
параметрах. Далее кратко и практически без комментариев приводится
последовательность действий по настройке lm_sensors применительно к плате
TYAN S2460 Tiger MP.
Шаг 9
В каталоге /usr/src/linux/lm_sensors-номер_версии/lib
ищем файл libsensors.so.x.x.x (например, libsensors.so.1.2.1) и копируем
его в /lib. Вместе с этим файлом хранятся две ссылки на него:
libsensors.so и libsensors.so.1 - копируем в /lib и их (если же этих
ссылок нет, то в /lib следует их создать).
Шаг 10
В каталоге /usr/src/linux/lm_sensors-номер_версии/prog/init находим
файл lm_sensors.init и копируем его в каталог /etc/rc.d/init.d под именем
lm_sensors.
Шаг 11
В каталоге
/usr/src/linux/lm_sensors-номер_версии/prog/init вручную редактируем файл
lm_sensors.sysconfig. В самом его конце оставляем незакомментированными
только строки: MODULE_1=i2c-amd756
MODULE_2=i2c-dev
MODULE_3=w83781d
Далее копируем этот файл в каталог /etc/sysconfig под именем
lm_sensors.
Шаг 12
Из каталога
/usr/src/linux/lm_sensors-номер_версии/prog/sensors копируем в каталог
/usr/bin файл с именем sensors. Он должен иметь права на выполнение.
Шаг 13
В файле /etc/modules.conf добавим в конце строку: alias char-major-89 i2c-dev
Шаг 14
В файле /etc/rc.d/rc в конце добавим приведенные ниже
строки (для загрузки необходимых модулей в процессе старта операционной
системы): modprobe i2c-amd756
modprobe i2c-dev
modprobe w83781d init=0
Шаг 15
В каталоге /usr/src/linux/lm_sensors-номер_версии/kernel/busses найдите
файл i2c-amd756.o, заархивируйте его командой: gzip i2c-amd756.o.
На выходе должен получиться файл i2c-amd756.o.gz. Полученный файл
скопируйте в каталог /lib/modules/(номер_версии_Линукс)
kernel/drivers/i2c.
Шаг 16
В каталоге
/usr/src/linux/lm_sensors-номер_версии/kernel/chips найдите файл w83781d.o
и заархивируйте его командой: gzip w83781d.o
На выходе должен получиться файл w83781d.o.gz. Скопируйте
его в каталог /lib/modules/(номер_версии_Линукс)
kernel/drivers/sensors.
Шаг 17
После этого можно последовательно выполнить с консоли команды,
описанные в предыдущем пункте: modprobe i2c-amd756
modprobe i2c-dev
modprobe w83781d init=0
ВНИМАНИЕ! Последняя команда, запущенная без параметра
init=0, намертво завешивает систему! Поэтому не делайте этого, если на
системе в данный момент выполняются критичные приложения. Иначе придется
перезагружаться. Но чтобы избежать зависания, при плановой перезагрузке не
забывайте этот параметр ни при ручной подгрузке модуля, ни в файле
/etc/rc.d/rc.
После выполнения трех указанных команд проверим, что изменилось в
системе. Сначала выполним lsmod
Должна появиться информация о том, что загружены модули: i2c-core, i2c-amd756, i2c-dev, i2c-proc, w83781d
Теперь самое время посмотреть в /proc/sys/dev. Там должен
появиться подкаталог sensors, а в нем подкаталог w83782d-i2c-0-2d и файл
chips. В файле chips ничего интересного нет, а вот в w83782d-i2c-0-2d надо
бы заглянуть. Там мы увидим достаточно много файлов, среди которых можно
по названиям узнать датчики мониторинга платы. Например, fan1, fan2, fan3
- датчики вентиляторов; temp1, temp2 - датчики температуры и т.д. Это
файлы виртуальных устройств, которые были созданы нами ранее. Они
становятся доступными при подгрузке соответствующих модулей, что мы и
увидели. Под этими же названиями они используются в файле настройки
шаблона вывода информации на консоль.
Шаг 18
Файл настройки шаблона вывода информации на консоль
должен находиться в каталоге /etc/sysconfig и иметь имя sensors.conf. Туда
мы его и копируем (с переименованием) из каталога
/usr/src/linux/lm_sensors-номер_версии/etc, где этой файл имеет имя
sensors.conf.eg.
Файл написан с учетом всех поддерживаемых микросхем
мониторинга. Но нам так много не нужно. Нам достаточно одной только
секции, начинающейся строкой: chip "w83782d-*" "w83783s-*" "w83627hf-*"
Все, что выше этой строки, вплоть до самых комментариев
можно удалить. Комментарии оставьте - пригодятся. Удалите также остальные
секции, начинающиеся со строки (и вместе с ней): chip "w83697hf-*"
Вообще-то говоря, удалять лишнее вовсе не обязательно -
на работе системы это никак не отразится. Просто в более коротком файле,
где нет ничего лишнего, гораздо проще будет разобраться при настройке
формата вывода на консоль. Комментарии, которые имеются в начале этого
файла, исчерпывающи настолько, что добавить нечего**.
Отметим только, что для правильного отображения
температуры процессоров надо в соответствующих строках sensors.conf
указать второй тип термодатчика - то есть строки с описанием типа
термодатчика должны выглядеть так: set sensor1 2
set sensor2 2
set sensor3 2
Шаг 19
Для удобства получения информации о состоянии системы
создадим скрипт и положим его в каталог /usr/bin. Скрипт перечитывает файл
sensors.conf для правильного отображения информации и запускает команду
sensors вывода информации на консоль. Назовем файл sensor. Его содержание
очень простое: #! /bin/bash
cd /etc/sysconfig
bash /usr/bin/sensors -s -c /etc/sysconfig/sensors.conf
/usr/bin/sensors
Не забываем дать этому файлу права на исполнение. Теперь,
если модули загружены, команда sensor с консоли выводит информацию о
состоянии датчиков материнской платы. Как поступить с этой информацией
дальше: отправить по почте, на SMS сисадмину или же записать в лог -
каждый решит сам.
Дополнение
Если необходимо организовать мониторинг нескольких
материнских плат S2460 Tiger MP (например, в кластере), то не
обязательно проводить все указанные операции, включая компиляцию на всех
компьютерах. Достаточно проделать это один раз, и использовать потом
полученные файлы на других компьютерах. Для этого нужно только поместить
эти файлы в соответствующие каталоги.
Изложенный подход с успехом можно использовать и для
организации мониторинга других материнских плат (в том числе - плат других
производителей). Для этого необходимо учесть отличия в исполнении
конкретной материнской платы, например: что за чипсет используется, какая
внутренняя шина, с которой пакетом lm_sensors считываются данные, каков
внешний чип (в рассмотренном случае это были, соответственно, AMD 760MP,
I2C и W83781d). Поддерживаемые чипсеты, шины и внешние чипы приведены в
файле /lm_sensors/etc/sensors.conf.eg дистрибутива lm_sensors.
Автор выражает особую благодарность разработчикам пакета
lm_sensors, всем, кто участвовал в его отладке и поделился информацией об
его использовании, а также производителям платы TYAN S2460 Tiger MP,
выпустившим отличное "железо".
Автор: Виталий Колесник
Источник: www.comizdat.com
|