【PC】Rainmeterのスキン作成 (9) -サーバの情報を表示2-

タイトル変えました。

 

なんかロジックが頭に降臨!

上手いことサーバの情報をメーターに表示できそうな予感!

 

【PC】ハードウェアモニター 作成 (8) -サーバの情報を表示-

 

 

 

 

大枠の流れ

 

Rainmeterから特定のURLをキック

キックされたプログラムがサーバ内の必要な情報を収集&編集してレスポンスを返す

Rainmeterで内容を解析&表示

 

言葉にすると簡単だな(;・∀・)

 

 

実装

 

PHPが一番手っ取り早い。

既に入っているので環境構築の必要がない。

 

問題は俺がPHPでガッツリとコーディングしたことがない ということw

Hello Worldからだな。

 

RainmeterへのレスポンスはJSON形式で返すのが良さそうだ。

PHPが標準でサポートしているので、それを使えばOK。

 

Linuxのコマンドを発行して結果を得るのは簡単だった。

exec(※実行するコマンド※, $※返り値用変数※);

実行した結果は$※返り値※に入るので、あとはループなりなんなりで

必要項目を切り出せば良い。

 

んで、それらを集めてJSONでドーン!だ(雑

 

 

発行コマンド

 

取りたい項目は以下の通り

・CPU温度

・CPU使用率

・HDD温度

・HDDのRemaining Life(余命)

 

CPUの温度はlm-sensorsを使用する。(要・インストール)

パッケージとCoreごとの温度が取得できる。

 

 

CPU使用率はtopで取って計算すれば良さそうだ。

top -b -n 1で取得すれば良いと思っていたら

最初の1回目は何故か同じ値になって、全然参考にならないw

なのでtop -b -n 2にしてソレっぽい値を取得することにした。

1~2秒の待ちが発生するけど、それほどリアルタイム性は求めていないので問題ない。

 

 

HDD温度と余命はS.M.A.R.T.の情報から取得できる。

コマンドはsmartctl /dev/sda -A

結果の中の190 Airflow_Temperature行のRAW_VALUEが温度。

余命については何をもって判断するか悩んだ結果、

結果のWHEN_FAILED列が全部問題なし(="-")だったらOKということにする。

 

問題はこのコマンドが一般ユーザでは使えないということ。

解決法は調べると情報は色々出てくる。

手っ取り早いのがsudoの縛りを緩くすること。

visudoでsudoersファイルの内容に追記する。

見たサイトでは

※UserName※ ALL=(ALL) ALL

と書いているところも多かったけど、ちょっとそれは解放しすぎだろうw

 

というわけで、

※UserName※ ALL=(ALL) NOPASSWD: /hoge/xxxx.sh

と特定のシェル実行時のみ、パスワードなしでsudo /hoge/xxxx.shを実行できるようにした。

シェルの中はsmartctl /dev/sda -Aのみw(お約束のヘッダはあるけど)

 

 

これで欲しい物が全部揃った。

あとはレスポンス用の配列にブチ込んで返すだけ。

 

PHPが不慣れで あーでもないこーでもない とえらく時間食ったけど。

 

 

返却値はこんな感じ。

{"Packageid0Temp":"28","Core0Temp":"27","Core1Temp":"27","Core2Temp":"26","Core3Temp":"26","CPUUsage":"6.2","HDDRemainingLife":"100","HDDTemp":"25"}

 

これをRainmeterで分解するために

Measure=WebParser
URL=※PHPファイルを置いたところ※
RegExp=(?siU)"Packageid0Temp":"(.*)".*Core0Temp":"(.*)".*Core1Temp":"(.*)".*Core2Temp":"(.*)".*Core3Temp":"(.*)".*CPUUsage":"(.*)".*HDDRemainingLife":"(.*)".*HDDTemp":"(.*)"

とすれば、

[MeasureCPUPackageTemp]
Measure=WebParser
URL=[MeasureJSON]
StringIndex=1
MinValue=0
MaxValue=100

StringIndeが順番で降られて、MeasureCPUPackageTemp等から各値が取得できる。

 

ちょっと苦労したけど無事取得できた。

取得間隔は、これのためにCPUの使用率が上がるというのは本末転倒なので

15秒に1回更新している。30秒でも良かったかな?

 

ひとまず完 成 !(゚Д゚)

To Be Continued

 

 

カテゴリー: PC, Web, ソフトウェア, 技術的 タグ: , , , ,  [パーマリンク]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です