ラズパイをMackerelで監視してCPU温度をグラフ表示する
先日ラズパイを購入して動かし始めているのですがこっそり再起動してたりと安定感がない状態です。
Raspberry Pi3 Model B+ 導入メモ
またCPU温度がやや高めな(気がする)のでMackerelを使用して監視と温度をグラフ表示できるようにしていきます。
監視設定
個人で持っているMackerelの無料アカウントを使用します。
アカウントの取得の仕方は公式ページを参照ください。
Mackerelをはじめる
エージェントインストール
インストールに関してはこちらの記事を参考にさせていただきました。
MackerelでRaspberry Piをモニタリング(死活監視)してみる
apt-getでのインストールはできないためcurlでパッケージを取得してきてインストールします。
# パッケージ取得 $ curl -O https://mackerel.io/file/agent/deb/mackerel-agent_latest.all.deb # インストール $ sudo dpkg -i mackerel-agent_latest.all.deb
configにapikeyを設定します。apikeyはMackerelのコンパネから確認してください。
pi@raspberrypi:/etc/mackerel-agent $ diff mackerel-agent.conf{,.example} 4c4 < apikey = "コンパネから取得したapikey" --- > # apikey = "" pi@raspberrypi:/etc/mackerel-agent $
このままだとバイナリがi386用なので起動に失敗します。
pi@raspberrypi:/etc/mackerel-agent $ sudo systemctl start mackerel-agent Job for mackerel-agent.service failed because the control process exited with error code. See "systemctl status mackerel-agent.service" and "journalctl -xe" for details. pi@raspberrypi:/etc/mackerel-agent $ pi@raspberrypi:/etc/mackerel-agent $ tail /var/log/mackerel-agent.log /etc/init.d/mackerel-agent: 43: /etc/init.d/mackerel-agent: /usr/bin/mackerel-agent: Exec format error pi@raspberrypi:/etc/mackerel-agent $
ARM用のバイナリを別途取得してきます。
pi@raspberrypi:~ $ wget https://github.com/mackerelio/mackerel-agent/releases/download/v0.60.0/mackerel-agent_linux_arm.tar.gz pi@raspberrypi:~ $ tar zxvf mackerel-agent_linux_arm.tar.gz mackerel-agent_linux_arm/ mackerel-agent_linux_arm/CHANGELOG.md mackerel-agent_linux_arm/LICENSE mackerel-agent_linux_arm/LICENSE.rtf mackerel-agent_linux_arm/README.md mackerel-agent_linux_arm/mackerel-agent mackerel-agent_linux_arm/mackerel-agent.conf pi@raspberrypi:~ $ pi@raspberrypi:~ $ sudo cp mackerel-agent_linux_arm/mackerel-agent /usr/bin/mackerel-agent pi@raspberrypi:~ $
再起動すると起動に成功しました。
pi@raspberrypi:~ $ sudo systemctl restart mackerel-agent pi@raspberrypi:~ $ sudo systemctl status mackerel-agent -l ● mackerel-agent.service - LSB: 'mackerel.io agent' Loaded: loaded (/etc/init.d/mackerel-agent; generated) Active: active (running) since Sat 2019-07-20 13:25:04 JST; 2s ago Docs: man:systemd-sysv-generator(8) Process: 6900 ExecStart=/etc/init.d/mackerel-agent start (code=exited, status=0/SUCCESS) Tasks: 15 (limit: 2200) Memory: 2.4M CGroup: /system.slice/mackerel-agent.service ├─6904 /usr/bin/mackerel-agent supervise --pidfile=/var/run/mackerel-agent.pid --root=/var └─6913 /usr/bin/mackerel-agent --pidfile=/var/run/mackerel-agent.pid --root=/var/lib/macke Jul 20 13:25:01 raspberrypi systemd[1]: Starting LSB: 'mackerel.io agent'... Jul 20 13:25:04 raspberrypi mackerel-agent[6900]: Starting mackerel-agent:. Jul 20 13:25:04 raspberrypi systemd[1]: Started LSB: 'mackerel.io agent'. pi@raspberrypi:~ $
画面から確認してもホストが追加されていることが確認できます。
しばらくするとLoadAvgやcpuなどLinuxの所要なmetricは自動で取得してくれています。
温度取得
Mackerelでは自作のメトリックを自由に追加することができます。
これを利用してCPU温度を表示するメトリックを作成していきます。
こちらの記事を参考にさせていただきました。
Mackerel のカスタムプラグインを作るのは実は簡単だよという話
作成したスクリプトは下記になります。
bcコマンドがなければapt-getでインストールします。
pi@raspberrypi:~ $ cat /etc/mackerel-agent/thermal.sh #!/bin/bash metric_name="raspi.temperature_metric.number" metric=$(echo "scale=1;$(cat /sys/class/thermal/thermal_zone0/temp)/1000"|bc -l) date=`date +%s` echo -e "${metric_name}\t${metric}\t${date}" pi@raspberrypi:~ $
mackerel-agent.confに追記します。
pi@raspberrypi:/etc/mackerel-agent $ diff mackerel-agent.conf{,.example} 4,7c4 < apikey = "コンパネから取得したapikey" < < [plugin.metrics.raspi_temperature] < command = "/etc/mackerel-agent/thermal.sh" --- > # apikey = "" pi@raspberrypi:/etc/mackerel-agent $
再起動して反映させます。
sudo systemctl restart mackerel-agent
するとグラフが追加されています。
まとめ
取り急ぎ最低限の監視ができました。
ここまで無料で設定できるのは嬉しいですね。
とりあえずメトリック取れるようになったので再起動や高温のトラシューが捗りそうです。