ZabbixでサーバマシンのCPU温度を監視する
皆さんこんにちは。
お元気ですか。旧友に最近太ったといわれて少々、落ち込んでます。
ちょっと食べる量減ったんですよね。ここ数年。
負荷がかかるとリモートPCの調子が時々悪くなると言った事象が発生し、
勝手に落ちるするといった状況なのでちょっと対策を打ちたいなぁと思っていました。
CPU温度が怪しいと思っていましたが、自分の目でsensorsを監視し続けるのは大変でした。
また、非常にエンジニア的ではなく気に入らないので別の手段(自動化など)を考えていました。
調べると、Zabbixだと収集が簡単そうにできるので、勉強がてらやってみました。
Zabbix
Zabbixとは
多数のネットワークやサーバを監視するためのソフトウェアです。
CPU, メモリなどのメトリックの収集や監視、条件による通知を行うことができます。
オープンソースでも使えるそうで、これでZabbixで温度監視ができるようです。
Zabbixのインストール
まずは、必要な媒体をインストールします。(この方法はUbuntu/Debian用です)
wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb sudo apt-get update apt-get install zabbix-server-pgsql zabbix-frontend-php sudo apt-get install zabbix-agent
普段使っているデータベースがpostgresqlなので、postgresql用の設定を行います。
まずは、Zabbix用のデータベースを作成します。
psql -U postgres
create database zabbix;
次にZabbixを使うにあたり、必要なデータベース設定を行います。
sudo zcat /usr/share/doc/zabbix-server-pgsql/create.sql.gz | sudo psql -U postgres zabbix
そして、Zabbixのデータベースの設定を行います。
/etc/zabbix/zabbix_server.confに次の内容を記載します。
内容は設定環境に応じて、変更をしてください。
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=<PASSWORD>
そして、Zabbix Serverを起動します。
service zabbix-server start update-rc.d zabbix-server enable
実はここまででZabbix動くと思えば、どうやら、Time/Zoneの設定が必要なようです。
この項目でGUI PreferenceのチェックでNGが出ました。
/etc/zabbix/apache.confのphp部分でコメントアウトになっている設定を外して、
Time/Zoneを適切に設定します。(日本であればAsia/Tokyo)
<Directory "/usr/share/zabbix"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all <IfModule mod_php5.c> php_value max_execution_time 300 php_value memory_limit 128M php_value post_max_size 16M php_value upload_max_filesize 2M php_value max_input_time 300 php_value always_populate_raw_post_data -1 php_value date.timezone Asia/Tokyo </IfModule> <IfModule mod_php7.c> php_value max_execution_time 300 php_value memory_limit 128M php_value post_max_size 16M php_value upload_max_filesize 2M php_value max_input_time 300 php_value always_populate_raw_post_data -1 php_value date.timezone Asia/Tokyo </IfModule> </Directory>
最後にサーバに設定を反映させます。
sudo service apache2 restart
GUI設定
まずは、Zabbixの設定をGUIで行います。
http://<サーバのIP>/zabbix/setup.php
DBの設定を記述します。今回はpostgreSQLを選択し、設定を記載します。
これでダッシュボードにアクセスすることができます。
※ログインですがIDはAdmin, passwordはzabbixです。
試しにCPUを可視化するとこんな感じです。
CPUの温度監視
さて、ここからが本題です。CPUの温度を監視します。
手順は次のとおりです
- デバイスの特定
- アイテムの登録
- グラフの作成
デバイスの特定
sensorsコマンドを使ってデバイス名とコアを特定する必要があります。
sensors -u を実行しましょう。
$ sensors -u acpitz-virtual-0 Adapter: Virtual device temp1: temp1_input: 27.800 temp1_crit: 105.000 temp2: temp2_input: 29.800 temp2_crit: 105.000 coretemp-isa-0000 Adapter: ISA adapter Physical id 0: temp1_input: 60.000 temp1_max: 80.000 temp1_crit: 100.000 temp1_crit_alarm: 0.000 Core 0: temp2_input: 51.000 temp2_max: 80.000 temp2_crit: 100.000 temp2_crit_alarm: 0.000 Core 1: temp3_input: 50.000 temp3_max: 80.000 temp3_crit: 100.000 temp3_crit_alarm: 0.000 Core 2: temp4_input: 54.000 temp4_max: 80.000 temp4_crit: 100.000 temp4_crit_alarm: 0.000 Core 3: temp5_input: 60.000 temp5_max: 80.000 temp5_crit: 100.000 temp5_crit_alarm: 0.000 asus-isa-0000 Adapter: ISA adapter cpu_fan: fan1_input: 0.000
この長い出力の中からデバイス名coretemp-isa-0000と
対応する温度temp2~temp5をどこかに記録します。Zabbixの設定で使います。
アイテムの登録
そしてZabbixのアイテムを登録しましょう。
Zabbixのアイテムには先程記録したデバイス名と対応する温度を使います。
温度計測対象分、この登録を繰り返します。
Configuration→Hosts→サーバ名を選択→Itemsで開けます。
グラフの作成
最後にグラフを作成します。
先程、登録したアイテムを使用してグラフを作成します。
そして暫く放置すると遂に、CPUの温度をグラフに表示できました。
これで常にアクセスし続けていれば、監視がスムーズにできます。
最後に
CPU監視をとても楽にできました。意外に使い心地が良いですね。
この情報に加えて、もう少し別のデータも監視したいので調べています。