paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

自宅サーバの温度を定期監視したい 取得編

自宅サーバを持ってて怖いのが火事ですよね。

ホコリが溜まらないようにすれば大丈夫な気がしますが、
何があるかわかりませんから検知できるような仕組みが欲しいです。

なら温度を監視すれば兆候が分かるんじゃない?ということで温度監視を導入したいと思います。

今自宅で常時稼働しているのは

  • 録画サーバ
  • NASサーバ

の2つです。

NASraspberry piなのでこっちは火事の心配はないかな。

録画サーバだけに導入することにします。
録画サーバはクライアントタワーをOS入れ直して使っているのでIPMI等の便利なものはありません。

構成

自宅環境のこの子です。

f:id:paloma69:20190430202725p:plain

masashi@ubuntu:~$ uname -a
Linux ubuntu 4.4.0-119-generic #143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
masashi@ubuntu:~$
masashi@ubuntu:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

パッケージインストール

lm-sensoresというパッケージで温度情報が取れるみたいです。

録画サーバはubuntuなのでaptで入れます。

masashi@ubuntu:~$ sudo apt install lm-sensors

初回のセッティング

監視のためにhardをスキャンします。

とりあえず全部yesで。

Hardware情報もちゃんと出力されるんですね。
録画サーバはDell製の(古い)タワーPCです。

masashi@ubuntu:~$ sudo sensors-detect 
# sensors-detect revision 6284 (2015-05-31 14:00:33 +0200)
# System: Dell Inc. Inspiron 531 [00]
# Board: Dell Inc. 0RY206
# Kernel: 4.4.0-119-generic x86_64
# Processor: AMD Athlon(tm) 64 X2 Dual Core Processor 5000+ (15/107/2)

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no): yes
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   Success!
    (driver `k8temp')
AMD Family 10h thermal sensors...                           No

()

本機器のカーネルモジュールは以下の2つが検出されました。 カーネル周りは全然わかりませんが、

というところでしょうか?

Driver `k8temp' (autoloaded):
  * Chip `AMD K8 thermal sensors' (confidence: 9)

Driver `f71882fg':
  * ISA bus, address 0x295
    Chip `Asus F8000 Super IO' (confidence: 9)

サービス開始

手順にもありますが、"モジュールをロードしないとモニターは動かない"とのメッセージが出たので実行します。

Monitoring programs won't work until the needed modules are
loaded. You may want to run '/etc/init.d/kmod start'
to load them.

masashi@ubuntu:~$ 
masashi@ubuntu:~$ sudo service kmod start
masashi@ubuntu:~$ 

試してみる

sensorコマンドで出力できます。

masashi@ubuntu:~$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +16.0°C  (crit = +95.0°C)

k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:   +26.0°C  
Core0 Temp:   +19.0°C  
Core1 Temp:   +41.0°C  
Core1 Temp:   +29.0°C  

見方がよくわかりませんね。
どこがどの温度なんでしょうか?

acpitz-virtualはACPI thermal zoneのことで、
CPUソケットかマザーボードの近くにあるセンサーダイオードのことらしいです。
あかん、全然わからん。

linux - What is acpitz-virtual? - Super User

k8tempは普通にCPUの温度が取れているんでしょうか?
しかし2コアのはずなのになぜ4つ出ているんだ…。

ubuntuはあるコマンドを打たないとFanの状態が取れないようなのですが、
再起動がいるのでいったんこのままでいきます。

LinuxでCPUの温度やファンの回転数を取得する パソコン鳥のブログ/ウェブリブログ

また、HDDは別のパッケージで取れるということで、一応HDDも取れる様にします。

masashi@ubuntu:~$ sudo apt install hddtemp
  • 確認

/dev/sdaはroot権限なのでsudoを付けます

masashi@ubuntu:~$ sudo hddtemp /dev/sda
/dev/sda: ST3320620AS: 37°C

これで温度はとれるようになった…のか?

Hardwareが全然わからないせいで、温度を取りたいだけのつもりが知識不足をさらけ出す結果となってしまいました。

その辺はおいおい学習していくとして、これで各温度が取得できるようになりました。
あとは定期的に実行して通知する仕組みを作れば完成です。

定期実行はcronにやらせるとして通知ですね。
cronからもメール送信できるみたいですが、なるべく簡単に済ませたいところです。

通知方法は別途考えるということで今回はこれで終わります。

その他参考サイト

lm_sensors - ArchWiki


2019/05/02 追記

本日の午前中にうちの近くは割と大雨が降っていて雷もちょこちょこ鳴っていました。
運悪く雷が電源設備の近くに落ちたらしく、自宅が停電してしまいました。
すぐ復旧したのですが、録画サーバの電源がお亡くなりになり、
本件の続きができなくなってしまったため、
録画サーバの復旧はじめ、もう少し長期で取り組みたいと思います。

デスクトップPCは無事でした。(WindowsUbuntuとも)
この2つは落雷対応のタップから電源を取っていたので救われたのか…?

とりあえず録画サーバのバックアップが無いので作り直しになると思います。
キャプチャボードをほかのに付け替えてもいいのですが、24時間稼働させたいのでまた新たにデスクトップPCを買います。

録画は撮るだけで実際あまり見てないので困りはしないのですが、
自宅環境運用のずさんさが浮き彫りになりましたねw

定期バックアップ、確認とパーティション分けは大事ですね。
(Baculaも少しやって終わってしまったし)