lm-sensorsのalarm表示をどうにかする

■問題

自宅にあるLinuxサーバーの温度監視のためにlm-sensorsmuninを使っているが、limitの設定がデフォルトで設定されていないやつがあると、AUXTIN1の値がおかしく、muninがcritical状態だと判定されて精神衛生上良くない

■対処法

上手くいっていないのは大まかに以下の3点。

  • 電圧のin1,4,5,6,…が何の電圧か不明で、リミット値が0Vに設定されているので、ALARM状態になっている → 電圧は監視しなくて良いと思うので、監視対象から外す
  • SYSTINの上限値が0℃になっているので、冷凍庫にでも入れないとALARMが出っぱなし → 上限値を設定する
  • AUXTINが120℃くらいになっているが明らかにおかしい → どっちみち正しい値が分からないので、監視対象から外す

lm-sensorsの設定ファイルは、/etc/sensors3.confにある。ない場合は/etc/sensors.conf。どのICのどの出力がそれぞれの変数に対応するかを確認するために、まず

$ sudo sensors -u

を実行する。例えば、

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:
  temp1_input: 38.000
  temp1_max: 100.000
  temp1_crit: 110.000
  temp1_crit_alarm: 0.000
Core 0:
  temp2_input: 37.000
  temp2_max: 100.000
  temp2_crit: 110.000
  temp2_crit_alarm: 0.000
...
Core 7:
  temp9_input: 38.000
  temp9_max: 100.000
  temp9_crit: 110.000
  temp9_crit_alarm: 0.000

nct6791-isa-0290
Adapter: ISA adapter
Vcore:
  in0_input: 0.896
  in0_min: 0.000
  in0_max: 1.744
  in0_alarm: 0.000
  in0_beep: 0.000
AVCC:
  in2_input: 3.312
  in2_min: 2.976
  in2_max: 3.632
  in2_alarm: 0.000
  in2_beep: 0.000
+3.3V:
  in3_input: 3.312
  in3_min: 2.976
  in3_max: 3.632
  in3_alarm: 0.000
  in3_beep: 0.000
...

等のように表示される。ここで、coretemp-isa-0000というのはCPUの温度で、これは正常に読めている。nct6791というのがマザーボードにくっついて居るであろうICで、マザーボードの型番によってどのチャネルにどの信号が入っているかマチマチなので、リミットが上手く設定されていないということらしい。

制限値を設定する方法

sensors3.confを開き、nct6791の設定項目を探す。例えば、デフォルトでは以下の様に書いてあった

chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" "nct6775-*" "nct6776-*" \
     "nct6779-*" "nct6791-*" "nct6795-*" "nct6796-*"

    label in0 "Vcore"
    label in2 "AVCC"
    label in3 "+3.3V"
    label in7 "3VSB"
    label in8 "Vbat"

    set in2_min  3.3 * 0.90
    set in2_max  3.3 * 1.10
    set in3_min  3.3 * 0.90
    set in3_max  3.3 * 1.10
    set in7_min  3.3 * 0.90
    set in7_max  3.3 * 1.10
    set in8_min  3.0 * 0.90
    set in8_max  3.3 * 1.10

ここで、sensors -uしたときの出力で、SYSTINはtemp1のaliasであることが書いてあるので、

set temp1_max  80
set temp1_max_hyst 70

と追記すればアラーム温度80℃、アラーム解除温度70℃に設定できる。

(※最初aliasだと知らずにSYSTIN_maxを設定しようとしたが動かなかった)

無効化する方法

ignore <チャンネル名>を追記すれば良い。in1, in4等はダイレクトにチャンネル名なので、普通にignore in1等で良いのだが、AUXTIN1は上記と同じようにaliasなので、sensors -uで本名を調べて、ignore temp4を追記した。

※AUXTIN1がtemp4かどうかはマザーボードによると思うので、あくまでこのサーバーでの例

※AUXTIN1の温度だけ明らかにおかしい挙動をしているので無視しているが、本当に高温なこともあると思われるので、これを参考に無効化するときはちゃんと確認したほうが良い。(火事になっても責任はとれない)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です