前書き:ラズパイサーバが停止するので監視したい

Raspberry Pi4にPLEXマルチメディアサーバを導入して、約一ヶ月ほど運用した結果、2〜3日の稼働でシステム停止してしまう問題に遭遇しています。

この問題の対症療法として、Watch Dog Timerとheartbeatを用いてシステム停止時に自動再起動を行う対応を実施しました。

今回はシステムが停止する原因を探るため、Raspberry Pi4にMonitorixをインストールして、システムリソースの変化をモニタリングできるようにします。そこで、本記事では「Monitorixのインストール方法」と「Raspberry Pi向けの設定」に関して説明します。

Monitorixとは

Monitorixは、軽量なシステムリソースモニタリングツールであり、Webブラウザ経由でリソースの使用状況を表したグラフを確認できます。Perlスクリプトで実装されており、Monitorixが生成するリソース監視ログ(rrdバイナリ)をrrdtoolでグラフ化(画像化)するという仕組みのようです。

公式サイトに、

Take control over your small server

“We absolutely like Monitorix for its user friendliness and lightweight. They are a must-try for those who are looking for a free and easy-to-use system monitoring tool.” - Jerry HostScore.net

と書かれている通り、小規模なシステム用かつ使いやすい(分かりやすい)ツールです。

Monitorixのメリットは導入の楽さであり、デメリットはグラフの地味さ。

Monitorixはaptパッケージマネージャーでインストールできますが、他のツール(例:netdataやgrafana)はインストール方法がやや煩雑です。例えば、Dockerをインストールした後に、モニタリングする内容を選別するためにDashboardをカスタマイズする必要があります。

インストール方法の簡便さと引き換えに、Monitorixはモニタリング結果の表示画面が古臭いです。他のツールはモダンな見た目をしていますが、Monitorixは一昔前のWebサイトのような色使いをしています。THE・原色といった感じ。

以下に、サンプル画像を示します。

Monitorixの画面

netdataの画面

grafanaの画面

私のように「何をモニタリングすれば良いか決めていない」「監視に手間を掛けたくない」という方はMonitorixを選択し、「いやいや、見た目大事っしょ」という方は他のツールを選択すれば良いと思います。

検証環境

Raspberry Pi4(RAM8GB)、Raspberry Pi OS環境で検証します。

       _,met$$$$$gg.          lemmy@motorhead 
    ,g$$$$$$$$$$$$$$$P.       --------------- 
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux 10 (buster) aarch64 
 ,$$P'              `$$$.     Host: Raspberry Pi 4 Model B Rev 1.4 
',$$P       ,ggs.     `$$b:   Kernel: 5.4.72-v8+ 
`d$$'     ,$P"'   .    $$$    Uptime: 4 hours, 8 mins 
 $$P      d$'     ,    $$P    Packages: 1472 (dpkg) 
 $$:      $$.   - ,d$$'    Shell: bash 5.0.3 
 $$;      Y$b._   _,d$P'      Terminal: /dev/pts/1 
 Y$$.    `.`"Y$$$$P"'         CPU: (4) @ 1.500GHz 
 `$$b      "-.__              Memory: 494MiB / 7814MiB 
  `Y$$
   `Y$$.                                              
     `$$b.
       `Y$$b.
          `"Y$b._

Monitorixのインストール

2020年11月現在、aptパッケージマネージャーでmonitorix-3.10.1がインストールできます。

$ sudo apt install monitorix

Raspberry Piの固定IP化

Monitorixのモニタリング結果は、IPアドレス指定で確認する事になるため、DHCPで動的にIPアドレスが変わると運用しづらいです。そのため、以下の記事を参考にしてRaspberry Pi4を固定IP化します。

Raspberry Pi4 CPU/温度/電圧モニタリング有効化

Monitorixの設定ファイル/etc/monitorix/monitorix.confを編集して、Raspberry Pi4のCPU使用率、温度、電圧のモニタリング(センサ情報のモニタリング)を無効から有効に変更します。

まずは、Raspberry Piセンサログ情報のグラフ化フラグをYes(有効)に変更します。

(注釈) vim以外のエディタを使用しても問題ありません。
$ sudo vim /etc/monitorix/monitorix.conf

(注釈)以下、/etc/monitorix/monitorix.confに設定する内容
<graph_enable>
: ※ 省略
	icecast		= n
	raspberrypi	= y     ※ nからyに変更
	phpapc		= n
: ※ 省略
</graph_enable>

次に、バグ対応を実施します。MonitorixはvcgencmdコマンドでRaspberry Pi4のセンサ情報を取得していますが、vcgencmdコマンドのインストールPATHを間違えています。間違えた状態では、グラフが作成できません。

以下、修正手順です。

(注釈)vcgencmdコマンドの正しいインストールPATHを確認
$ which vcgencmd
/usr/bin/vcgencmd

$ sudo vim /etc/monitorix/monitorix.conf

(注釈) 以下、/etc/monitorix/monitorix.confの内容
--------------------(修正前 ↓)-----------------------------
<raspberrypi>
	cmd = /opt/vc/bin/vcgencmd
	clocks = arm, core, h264, isp, v3d, uart, emmc, pixel, hdmi
	volts = core, sdram_c, sdram_i, sdram_p
	rigid = 0, 0, 0
	limit = 100, 100, 100
</raspberrypi>
--------------------(修正前 ↑)-----------------------------

--------------------(修正後 ↓)-----------------------------
<raspberrypi>
	cmd =/usr/bin/vcgencmd                     ※ ここのPATHを変更
	clocks = arm, core, h264, isp, v3d, uart, emmc, pixel, hdmi
	volts = core, sdram_c, sdram_i, sdram_p
	rigid = 0, 0, 0
	limit = 100, 100, 100
</raspberrypi>
--------------------(修正後 ↑)-----------------------------

monitorix.confの修正頻度が高そうなパラメータ

下表に、Monitorix設定ファイル/etc/monitorix/monitorix.confのパラメータの中から、修正する可能性が高そうなものをピックアップして紹介します。下表に登場しないパラメータは、公式ドキュメントで確認してください。

パラメータ名役割
titleWebブラウザでモニタリング結果確認時、Webブラウザのタブに表示されるタイトル
hostnameサーバのhostname
theme_colorモニタリング結果を白背景(white)で表示するか、黒背景(black)で表示するか
refresh_rateWebブラウザに表示するモニタリング結果のリフレッシュレート([s]単位) リフレッシュ間隔を早めると、画面がカクついた印象を受ける
max_historic_yearsモニタリング結果の保存期間(年単位、上限値なし) 調子に乗って50年と設定したらメモリの半分を食い尽くしたので注意
port(httpd_builtin)モニタリング結果を表示する際に使用するポート番号(デフォルト8080番)

ポート番号に関しては、既に8080番を他のサービスが使用している場合、別の値に変更が必要です。

モニタリング結果の確認

Monitorixの設定変更を行ったため、まずはsystemdを用いてMonitorixを再起動します。デフォルトでMonitorixは有効化されていると思いますが、有効化(enable)してから再起動(restart)します。

$ sudo systemctl enable monitorix
$ sudo systemctl restart monitorix

次に、Webブラウザに"http://(ラズベリーパイのIPアドレス):8080/index.html"を入力して、モニタリング結果画面を確認します。ポート番号の設定を変更している場合は、8080の部分を適宜変更してください。

Monitorixが正しく動作している場合は、以下の画面がWebブラウザに表示されます。

Dailyのモニタリング結果(一部)は、以下のように表示されます。下図は抜粋であり、実際にはファイルシステム使用率やネットワーク統計情報なども出力されています。

Raspberry Pi4のCPU使用率、温度、電圧のモニタリング結果は、以下の通りです。大きいファンを使用、かつ全く負荷がかかっていない環境のため、温度が40℃ぐらいしかありません(下図の右上)。