Raspberry Pi 4(以下ラズパイ)にてCPU温度を時系列DBに記録する
使用するDBはInfluxDBに加えてTelegraという公式ツールを使う。
参考:前回のラズパイにInfluxDBをインストールする記事は次
プログラムを書かなくともこういったセンサのデータを記録するTelegrafだ。
こちらはInfluxDB公式のツール。
このツールのすごいところはとりあえずインストールしておけばホストPCのHDDやメモリの使用状況等が自動で記録開始される。
前回の記事にてダッシュボードに表示されているのは全てTelegrafが自動で収集したもの。
ラズパイにはCPU温度を取得するセンサが付いておりコマンドラインからデータが取得できる。
しかしながらTelegrafの初期設定ではこれを取得することになっていないため設定を追加する必要がある。
温度の取得はコマンドラインから行う。これを実行するシェルスクリプトを作る。
使用OSはRaspberry Pi OS (Raspbianから名称が変更された)なのでGUIがあるのでそちらで作ってもよいが
せっかくなのでラズパイでよく使われるnanoエディタで作ってみる。
※面倒ならGUIのエディタを使って作っても良い。
pi@pi1:~ $ nano rpi-temp
rpi-temp
というファイルを新規作成し、こちらにシェルスクリプトを書く。
エディタが現れるので次をそのままコピペ
#!/bin/bash
awk '{print $1/1000}' /sys/class/thermal/thermal_zone0/temp
※nanoは右クリックから貼り付けが可能。ctrl+u
の貼り付けきーも下に出ているのでわかりやすい。
ctrl+o
で書き込み。
なにやら下にオプションのようなものが出るがエンターキーを押せばそのまま書き込み。
ctrl+x
で終了。
lsコマンドを打つだけ
pi@pi1:~ $ ls
Bookshelf Documents Music Public Videos
Desktop Downloads Pictures Templates rpi-temp
右下にrpi-temp
というファイルが出来ているのでOK
このままだと実行できないので実行権限を付与
pi@pi1:~ $ chmod 755 rpi-temp
※Linuxの場合実行するにも権限が必要。このあたりの詳細は省略。
このコマンドを打ち込んでも何も表示されないがそれでOK。
スクリプトは完成したがWindowsで言うところの「マイドキュメント」にテキストファイルが入っただけの状態。
これを簡単に実行できるように指定のディレクトリに移動してやる必要がある。
次のコマンドを実行。
pi@pi1:~ $ sudo mv rpi-temp /usr/local/bin/
こちらもコマンド実行後になにも表示されなければ成功。
/usr/local/bin/
にスクリプトファイルが移動されると、そのファイル名をコマンドで打ち込むだけで対象のスクリプトが実行されるようになる。
次のコマンドで確認。
pi@pi1:~ $ rpi-temp
36.511
2行目に温度が表示されていれば正常。
※日本語版のOSであれば自動ローカライズで「セ氏(℃)」になっている模様。一応「カ氏(℉)」表示ではないことを確認しておきたい。
これでシェルスクリプトを実行するだけで温度が取得できた。
Telegrafでは「スクリプトを実行し、帰ってきた値をDBに記録する」という便利な機能が備わっている。
つまり上のスクリプトをTelegrafから読み込んでやれば完了だ。
/etc/telegraf/telegraf.conf
に上のスクリプトを使って新しくデータを記録する設定を追記する。
pi@pi1:~ $ sudo nano /etc/telegraf/telegraf.conf
※このファイルはデフォルトで書き込み禁止設定なのでsudoで開いて追記
ファイルは長いのでctrl+end
キーを押すと一瞬で一番下に移動できる。
一番下に次を追記して保存
[[inputs.exec]]
commands = ["/usr/local/bin/rpi-temp"]
name_override = "rpi_temp"
data_format = "value"
data_type = "float"
ちなみにこちらの文法はTOMLと呼ばれる形式。
保存したらラズパイを再起動
以上でデータの取得が自動的に開始されており、InfluxDBに新しくMeasurementが追加されている。
あとは各自データを利用する。
ここからはおまけ。Chronografの場合の視覚化手順を記述しておく。
http://{ラズパイのIPアドレス}:8888/
にアクセスしてWEBのUIで操作する。
ダッシュボードへ移動
右上「Add a Cell to Dashboard」
※最初のデフォルト設定でダッシュボードを生成した状態からの作業。ワンクリックで自動生成だった記憶。
1,2,3の順でクリック。ここにrpi_temp
が出来ていなければ設定のどこかで失敗していると思われる。
3は各自のラズパイ名
value
にチェックを入れると上にグラフが表示される
Function
を開いてオプションを表示mean
のチェックを切る(灰色になる)last
をチェック(青色になる)Applyをクリック
mean
は「平均値」を表すので正確な現在のCPU温度が表示できないのでlast
(最新の値)に変更する作業。
不要かも:中段右「Submit Query
」をクリック
このままだとグラフの名前とメモリがわかりにくいので表示を変更する。
一番上のVisualization
をクリック
CUSTOMIZE
のタブでTitle
とY-Value's Suffix
を変更
Suffix
とは接尾辞なので単位の「°C」を入力した。バグがないように日本語変換の記号ではなく°
とC
の二文字。
ダッシュボードのグラフ名は左上に入れておく。
とりあえず私はCPUとしておいた。
一番右上のチェックをクリックするとウィンドウが生成される。
これでダッシュボードに上のグラフが追加される。
殆ど設定することなくこのような感じのダッシュボードができた。
とても簡単な作業だが、細かく解説していたら記事が長くなってしまった。
シェルスクリプトを使って他の項目追加にも応用出来ると思うので覚えておきたい。
今回の記事を作るにあたりシェルスクリプト部分は次のBLOG記事を参考にさせていただいた。
How to measure a Raspberry Pi's temperature and CPU frequency with Telegraf