LoginSignup
3
1

More than 5 years have passed since last update.

シングルボードコンピュータの温度をNagiosで監視する

Posted at

シングルボードコンピュータの温度をNagiosで監視する

2回目の投稿です。今回は、シングルボードコンピュータのCPU温度をNagiosで監視するためのスクリプトです。Nagiosだけではなく、監視対象側でcheck_nrpeを使ったコマンドが動いていることが必要です。

もっとキレイに書けると思いますが、シェルスクリプトは初めてなのでご容赦ください。

そもそも、Rock64で温度を表示するには

cat /sys/class/thermal/thermal_zone0/temp

を使います。ただし、なぜか数字5桁で戻ってきてしまいます。これは、小数3位までの温度表示となっていて、例えば「27621」であれば「27.621度」ということになります。

参考サイト:https://forum.pine64.org/showthread.php?tid=6645

これを、シェルでNagiosのプラグインにしてみました。温度の警告範囲をシェルの引数からもらって設定するのもよいかとは思いましたが、それほどこだわる必要もないと思ったので、40度までは正常、60度まではWARNING、それより大きくなればCRITICALと設定することにしました。
(空冷式(むきだし)のシングルボードなので、今回の設定値にしましたが、今後、状況を見て見直していきます)

ということで、初めてのシェルスクリプトでのコードです。初めてなので、あちこち参考にしました。ありがとうございます。

参考サイト:
https://qiita.com/egawa_kun/items/196cd354c0d8e4e0fefc
https://pingubrog.exblog.jp/15934437/

監視される側(監視対象ノード)の設定

チェックスクリプト

check_thermos.sh
#!/bin/sh

 temp1=$(cat /sys/class/thermal/thermal_zone0/temp)
 tempA=`echo "scale=3; $temp1 / 1000 " | bc `

echo "Temp is ${tempA} "

if [ "$(echo "$tempA >= 60" | bc )" -eq 1 ]; then
        exit 2;
elif [ "$(echo "tempA >= 40" | bc )" -eq 1 ]; then
        exit 1;
else
        exit 0;
fi

導入方法

cd /usr/lib/nagios/plugins
sudo vi ./check_thermos.sh
(上記のコードをコピーして貼り付け)
sudo chmod a+x ./check_thermos.sh

監視される側(監視対象ノード)のnrpe.cfgに、以下の項目を追加します。

command[check_thermo]=/usr/lib/nagios/plugins/check_thermo.sh

完了したら、nrpeを再起動してください。

監視する側(Nagiosサーバ)側の設定

command.cfgに以下の項目を追加します。

command.cfg
define command {

    command_name    check_thermo
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_thermo
}

次に、監視定義ファイルに以下の定義を追加します。

define service{
    use                 generic-service
    host_name           192.168.***.***  #監視対象のホスト名を入力します。
    service_description Temperature
    check_command       check_thermo
}

これで、NagiosのPre-Flight checkを通してから、Nagiosを再起動すると、温度が監視対象となります。

おまけ

RockPro64の場合は、thermal_zone1もあるので、2個のセンサーから情報を取得することができます。ただ、どういう条件を設定すべきなのか、というのは判断が必要です。

  • 平均値を取る、という考え方もありますが、負荷にバラツキがあると、平均値にダマされてしまいます。
  • このため、高い方と低い方の温度差を監視の対象にする、という考え方もあります。一方に負荷が寄っているということになるので、監視することに意味はあります。
  • 高い方で判断する、という考え方もあります。温度での警告という趣旨を踏まえれば、こちらの考え方が良いのかもしれません。
  • そもそもセンサーが2個あるのであれば、両方の温度を監視対象にする、というのが正しいような気もします。

他のシングルボードでも、温度センサーがあれば同じように監視は可能です(おそらく、上記のコードのcat以下の部分を当該コマンドに変更するだけで大丈夫でしょう)。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1