Архив метки: collectd

Мониторинг аппаратных датчиков в Linux. Linux-monitoring sensors (lm_sensors).

lm_sensors — ПО, используемое в *nix системах для получения данных с аппаратных датчиков о температуре компонентов, напряжении питания или скорости вращения вентиляторов, а так же задания минимального и максимального значения для каждого датчика, при достижении которого система начинает издавать звуковые сигналы через pc speaker (что не всегда является хорошей идеей).
Установка:
# apt-get install lm_sensors3
Прежде чем смотреть, каковы значения датчиков, эти датчики нужно сначала найти, используя утилиту sensors-detect. А чтобы она не спрашивала у вас десятки раз, согласны ли вы просканировать тот или иной узел аппаратной платформы, нужно сразу сказать ей да, с помощью утилиты yes:
# yes | sensors-detect
Утилита найдёт все датчики в системе и активирует необходимые для их работы модули ядра.
Теперь можно посмотреть данные, передаваемые датчиками с помощью утилиты sensors:
# sensors
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +37.0°C (high = +80.0°C, crit = +100.0°C)
Core 0: +34.0°C (high = +80.0°C, crit = +100.0°C)
Core 1: +36.0°C (high = +80.0°C, crit = +100.0°C)
Core 2: +27.0°C (high = +80.0°C, crit = +100.0°C)
Core 3: +30.0°C (high = +80.0°C, crit = +100.0°C)
it8728-isa-0a30
Adapter: ISA adapter
in0: +0.08 V (min = +0.00 V, max = +3.06 V)
in1: +2.02 V (min = +0.00 V, max = +3.06 V)
in2: +2.00 V (min = +0.00 V, max = +3.06 V)
in3: +2.03 V (min = +0.00 V, max = +3.06 V)
in4: +0.01 V (min = +0.00 V, max = +3.06 V)
in5: +1.79 V (min = +0.00 V, max = +3.06 V)
in6: +1.55 V (min = +0.00 V, max = +3.06 V)
3VSB: +3.38 V (min = +0.00 V, max = +6.12 V)
Vbat: +3.14 V
fan1: 802 RPM (min = 0 RPM)
fan2: 857 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
fan5: 0 RPM (min = 0 RPM)
temp1: +27.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp2: +127.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp3: +28.0°C (low = +127.0°C, high = +127.0°C) sensor = Intel PECI
intrusion0: ALARM
Много не нужной информации и некоторые из значений не корректны, поэтому надо всё это дело настроить! Системный файл конфигурации редактировать не стоит, так как он заменяется при обновлении программы. Для локальной конфигурации создана папка /etc/sensors.d, в которой мо
жно создавать свои конфиги. Файл может иметь любое имя, это не важно, и будет перекрывать настройки системного файла, если в нём уже есть конфиги для настраиваемого оборудования. Создадим файл с красивым именем /etc/sensors.d/sensors.local.conf, а исходные данные для настройки возьмём из уже выполненной ранее команды sensors, и той же команды, с аргументом -u, что даст больше информации:
# sensors -u
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:
temp1_input: 36.000
temp1_max: 80.000
temp1_crit: 100.000
temp1_crit_alarm: 0.000
Core 0:
temp2_input: 35.000
temp2_max: 80.000
temp2_crit: 100.000
temp2_crit_alarm: 0.000
Core 1:
temp3_input: 36.000
temp3_max: 80.000
temp3_crit: 100.000
temp3_crit_alarm: 0.000
Core 2:
temp4_input: 27.000
temp4_max: 80.000
temp4_crit: 100.000
temp4_crit_alarm: 0.000
Core 3:
temp5_input: 31.000
temp5_max: 80.000
temp5_crit: 100.000
temp5_crit_alarm: 0.000
it8728-isa-0a30
Adapter: ISA adapter
in0:
in0_input: 0.036
in0_min: 0.000
in0_max: 3.060
in0_alarm: 0.000
in0_beep: 0.000
in1:
in1_input: 2.016
in1_min: 0.000
in1_max: 3.060
in1_alarm: 0.000
in1_beep: 0.000
in2:
in2_input: 2.004
in2_min: 0.000
in2_max: 3.060
in2_alarm: 0.000
in2_beep: 0.000
in3:
in3_input: 2.028
in3_min: 0.000
in3_max: 3.060
in3_alarm: 0.000
in3_beep: 0.000
in4:
in4_input: 0.012
in4_min: 0.000
in4_max: 3.060
in4_alarm: 0.000
in4_beep: 0.000
in5:
in5_input: 1.788
in5_min: 0.000
in5_max: 3.060
in5_alarm: 0.000
in5_beep: 0.000
in6:
in6_input: 1.548
in6_min: 0.000
in6_max: 3.060
in6_alarm: 0.000
in6_beep: 0.000
3VSB:
in7_input: 3.384
in7_min: 0.000
in7_max: 6.120
in7_alarm: 0.000
in7_beep: 0.000
Vbat:
in8_input: 3.144
fan1:
fan1_input: 802.000
fan1_min: 0.000
fan1_alarm: 0.000
fan1_beep: 1.000
fan2:
fan2_input: 857.000
fan2_min: 0.000
fan2_alarm: 0.000
fan2_beep: 1.000
fan3:
fan3_input: 0.000
fan3_min: 0.000
fan3_alarm: 0.000
fan3_beep: 1.000
fan4:
fan4_input: 0.000
fan4_min: 0.000
fan4_alarm: 0.000
fan4_beep: 1.000
fan5:
fan5_input: 0.000
fan5_min: 0.000
fan5_alarm: 0.000
fan5_beep: 1.000
temp1:
temp1_input: 27.000
temp1_max: 127.000
temp1_min: 127.000
temp1_alarm: 0.000
temp1_type: 4.000
temp1_offset: 0.000
temp1_beep: 1.000
temp2:
temp2_input: 127.000
temp2_max: 127.000
temp2_min: 127.000
temp2_alarm: 0.000
temp2_type: 4.000
temp2_offset: 0.000
temp2_beep: 1.000
temp3:
temp3_input: 28.000
temp3_max: 127.000
temp3_min: 127.000
temp3_alarm: 0.000
temp3_type: 6.000
temp3_offset: 92.000
temp3_beep: 1.000
intrusion0:
intrusion0_alarm: 1.000
Итак, прежде чем настраивать датчики, нужно задать чип, на котором эти датчики находятся. В примере, указанном выше, чипа 2 — coretemp-isa-0000 и it8728-isa-0a30. Указав чип, приступаем к настройке — скроем вывод данных ,которые, лично мне, не интересны. Это данные об отсутствующих вентиляторах (fan3-5), о напряжении питания разных модулей системы или о не подключённых датчиках температуры (temp2). Для игнорирования их вывода, используется опция ignore в сочетании с именем объекта:
chip «coretemp-isa-0000»
#IGNORE
ignore in0
ignore in1
ignore in2
ignore in3
ignore in4
ignore in5
ignore in6
ignore in7
ignore in8
ignore intrusion0
ignore fan3
ignore fan4
ignore fan5
ignore temp2
Теперь настроим вентиляторы fan1 и fan2 на том же чипе, которые показывают в 2 раза меньшее количество оборотов, чем это есть в реальности. С помощью опции compute, можно производить арифметические операции со значением указанного датчика:
compute fan1 2*@, @/2
compute fan2 2*@, @/2
Также есть опция label, с помощью которой можно переопределить название датчика, если оно определяется не корректно, либо просто хочется улучшить его челевекочитаемость:
label temp1 «CPU»
Нужно учитывать, что опция label работает как ожидается при использовании команды sensors, но может игнорироваться при использовании lm_sensors сторонними программами, например collectd эту опцию игнорирует.
Как уже упоминалось ранее, по умолчанию, демон lm_sensors подаёт звуковой сигнал на pc speaker при достижении заданного критического минимального или максимального значения датчика температуры либо если значение опускается до заданного значения датчика вентилятора. Пример этих значений (fan1_min: 0.000 у fan1 и temp1_max: 127.000 temp1_min: 127.000 у temp1):
fan1:
fan1_input: 1584.000
fan1_min: 0.000
fan1_alarm: 0.000
fan1_beep: 1.000
temp1:
temp1_input: 27.000
temp1_max: 127.000
temp1_min: 127.000
temp1_alarm: 0.000
temp1_type: 4.000
temp1_offset: 0.000
temp1_beep: 1.000
Эти значения можно корректировать, отключать звуковую сирену для конкретного датчика, либо вообще отключать звуковое оповещение глобально, так как это не всегда нужно.
Для корректировки значений есть опция set, используемая вместе с параметром и новым значением для этого параметра. Например, зададим параметру temp1_max значение 95:
set temp1_max 95
Отключим звуковой сигнал тревоги у вентилятора fan1_beep:
set fan1_beep 0
Либо отключим звуковой сигнал тревоги глобально для всех датчиков:
set beep_enable 0
(!) Для применения новых параметров, заданных опцией set, нужно выполнить команду sensors -s.
Конфиг, который получился у меня для использования совместно с collectd и материнской платой Gigabyte H87M-D3H:
chip «it8728-isa-0a30»
#FANS
compute fan1 2*@, @/2
compute fan2 2*@, @/2
#IGNORE
ignore in0
ignore in1
ignore in2
ignore in3
ignore in4
ignore in5
ignore in6
ignore in7
ignore in8
ignore intrusion0
ignore fan3
ignore fan4
ignore fan5
ifnore temp2

Автор: Yar4e