Вимірюємо температуру в linux

Літня спека дає про себе знати не тільки збільшеним споживанням різноманітних прохолодних напоїв, «приємно» пахнуть пасажирів маршрутного транспорту, але також і підвищеною температурою всередині системних блоків. І якщо за технікою, що знаходиться постійно під рукою, ще можна стежити, то з «пацієнтами», що знаходяться на деякому віддаленні від витягнутої руки, все дещо складніше. Благо, на сьогоднішній день, в Linux є все необхідне для моніторингу температурного режиму: починаючи масою драйверів для роботи безпосередньо з залізом, закінчуючи front-endамі, що дозволяють дуже красиво і наочно в реальному режимі часу відслідковувати дані, що надходять від датчиків на материнську плату, процесор , жорсткому диску.

Моє ж завдання виявилася куди більш простий. Мені не потрібно відстежувати все в «realtime», цілком достатньо раз на добу поглядати на температурне самопочуття декількох серверів, що знаходяться далеко від мене.

Установка і настройка lm-sensors

Насправді способів «достукатися» до температурних датчиків з Linux існує досить багато. З усього різноманіття мені сподобався всім відомий lm-sensors - набір драйверів, бібліотек і утиліт для моніторингу даних, що надходять з датчиків комп'ютера.

lm-sensors існує в репозитариях Ubuntu, так що установка, як зазвичай проста і не викликає проблем:

$ Sudo apt-get install lm-sensors

Після успішної установки необхідно визначити тип заліза, встановленого у вашій системі. Перш, ніж утиліта sensors зможе отримувати дані від системи, повинні бути завантажені відповідні модулі ядра. На щастя, розробники lm-sensors певною мірою подбали про звичайних користувачів і розробили утиліту sensors-detect, що дозволяє в режимі «майстра» визначити тип наявного у вашій системі обладнання, а також список модулів ядра, які необхідно завантажити. Отже, запускаємо sensors-detect, погоджуємося на пропозиції про скануванні обладнання і в кінцевому підсумку отримуємо список модулів ядра, необхідних для коректної роботи lm-sensors:

Перед тим, як sensors-detect завершить свою роботу, вона запропонує додати в / etc / modules імена модулів драйверів знайдених пристроїв. У мене це виглядало так:

To load everything that is needed, add this to / etc / modules:
# ---- cut here ----
# Chip drivers
w83627ehf
# ---- cut here ----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!
Do you want to add these lines automatically to / etc / modules? (Yes / NO)

У цьому місці, думаю, краще погодитися, щоб потрібні lm-sensors модулі ядра автоматично завантажувалися під час старту системи.

Тепер, щоб не перезавантажуватися, можна попросити систему завантажити оголошені в / etc / modules, але ще не завантажені модулі ядра:

sudo /etc/init.d/module-init-tools start

Отримання даних

Якщо настройка пройшла успішно, ваше обладнання підтримується і відповідні модулі ядра завантажені, то далі все дуже просто:

$ sensors
k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp: + 26.0 ° C
Core0 Temp: + 29.0 ° C
Core1 Temp: + 40.0 ° C
Core1 Temp: + 29.0 ° C
w83627dhg-isa-0a10
Adapter: ISA adapter
Vcore: +1.32 V (min = +0.00 V, max = +1.74 V)
in1: +0.78 V (min = +0.71 V, max = +1.78 V)
AVCC: +3.30 V (min = +1.63 V, max = +0.21 V) ALARM
VCC: +3.30 V (min = +3.78 V, max = +1.33 V) ALARM
in4: +0.97 V (min = +1.98 V, max = +1.78 V) ALARM
in5: +0.98 V (min = +1.94 V, max = +1.50 V) ALARM
in6: +1.10 V (min = +1.83 V, max = +1.51 V) ALARM
3VSB: +3.28 V (min = +3.31 V, max = +4.02 V) ALARM
Vbat: +3.04 V (min = +3.98 V, max = +1.65 V) ALARM
fan1: 0 RPM (min = 753 RPM, div = 128) ALARM
fan2: 2311 RPM (min = 753 RPM, div = 9)
fan3: 0 RPM (min = 1506 RPM, div = 128) ALARM
fan4: 0 RPM (min = 0 RPM, div = 128)
fan5: 0 RPM (min = 10546 RPM, div = 128) ALARM
temp1: + 42.0 ° C (high = -18.0 ° C, hyst = + 91.0 ° C) sensor = thermistor
temp2: + 63.5 ° C (high = + 65.0 ° C, hyst = + 65.0 ° C) sensor = diode
temp3: + 25.0 ° C (high = + 80.0 ° C, hyst = + 75.0 ° C) sensor = thermistor
cpu0_vid: +0.000 V

Вище показаний висновок lm-sensors для двох адаптерів. k8temp-pci-00c3 - показує температуру ядер процесора (модуль ядра k8temp «вміє» отримувати температуру від процесорів AMD Athlon64 / FX і Opteron), в той час, як адаптер w83627dhg-isa-0a10 повідомляє інформацію, отриману з датчиків материнської плати.

завдання crontab

Як я вже говорив, спостерігати за температурним режимом серверів раз на добу - для мене більш, ніж достатньо і тому я не буду (поки, в усякому разі) морочитися над побудовою графіків і тому подібними речами, а просто буду переглядати поштові повідомлення, в яких і буде міститися необхідна мені інформація. Для надсилання повідомлень електронної пошти я користуюся зручним у багатьох відношеннях Perl-скриптом sendEmail. Ось, як виглядає моє завдання в crontab:

Схожі статті