ユーザログイン


8月 2008

D945GCLF 温度監視、FAN回転数をリアルタイムでGoogle Charts APIにて表示


夫です。
このWebサーバーはAtomマシーンで動作しており、日中は無人の部屋で動作している。 となると、なんとかして、外部から温度などの情報を監視しておきたいものである。いや、監視しなければならない。

先日のブログにて温度監視のやり方について述べた。 今回はその温度監視を、あらかじめ定期的にログに出力していることを前提に、そのログを定期的に解析し、Google Chart APIに与え、現在の温度等を表示できるようにする。

まず、あらかじめlm_sensorsによる情報は以下のようなシェルスクリプトを延々回し、で定期的にログ出力をしておく。
#!/bin/bash
while [ true ];
do
date  >> /var/log/sensor.log
/usr/local/bin/sensors  >> /var/log/sensor.log
/usr/sbin/hddtemp /dev/sda >> /var/log/sensor.log
sleep 60
done

もちろんローテーションも忘れずに。
# less /etc/logrotate.d/sensorlog
/var/log/sensor.log {
  nocompress
  missingok
  daily
  rotate 7
}

続いて、以下のPerlスクリプトを、これまた定期的に実施する。なお、以下のスクリプトでは最新のログのみを参照しているので、ローテーションされた直後(朝4時)は、たいしたデータが表示されないはず。最低2世代のログファイルを参照すれば解決できるが、特に朝4時に状態を見たい要望はないので捨て置く。

#!/usr/bin/perl

#Target list
$target_sensor[0]{sensor}="CPU_TEMP(C)";
$target_sensor[0]{min}=0;
$target_sensor[0]{max}=100;
$target_sensor[1]{sensor}="CHIP_TEMP(C)";
$target_sensor[1]{min}=0;
$target_sensor[1]{max}=100;
$target_sensor[2]{sensor}="SYSTEM_BOARD_TEMP(C)";
$target_sensor[2]{min}=0;
$target_sensor[2]{max}=100;
$target_sensor[3]{sensor}="HDD_TEMP(C)";
$target_sensor[3]{min}=0;
$target_sensor[3]{max}=100;
$target_sensor[4]{sensor}="CASE_FAN(RPM)";
$target_sensor[4]{min}=0;
$target_sensor[4]{max}=2000;
$target_sensor[5]{sensor}="CHIP_FAN(RPM)";
$target_sensor[5]{min}=0;
$target_sensor[5]{max}=8000;

my $data_num=301;

open(IN,"$ARGV[0] ")||die("cannot open logs");
$i=0;

while($line=){
	if( $line =~ /JST$/ ){
		$i++;
		chomp($line);
		$date[$i]=$line;
		$date[$i]=~s/\s//g;
		$date[$i]=~s/年/\//g;
		$date[$i]=~s/月/\//o;
		$date[$i]=~s/日//o;
		$date[$i]=~s/日曜日|月曜日|火曜日|水曜日|木曜日|金曜日|土曜日/ /o;
		$date[$i]=~s/JST//g;
		($day[$i],$time[$i])=split(/ /,$date[$i]);

	}else{
		@a=split(/\s+/, $line);
		if($a[0] eq "CPU") {
			$target_sensor[0]{$i}=$a[2];
			$target_sensor[0]{$i}=~s/\+//g;
			$target_sensor[0]{$i}=~s/°C//g;
		}
		if($a[0] eq "Chip") {
			$target_sensor[1]{$i}=$a[2];
			$target_sensor[1]{$i}=~s/\+//g;
			$target_sensor[1]{$i}=~s/°C//g;
		}
		if($a[0] eq "Sys") {
			$target_sensor[2]{$i}=$a[2];
			$target_sensor[2]{$i}=~s/\+//g;
			$target_sensor[2]{$i}=~s/°C//g;
		}
		if($a[0] =~ /^\/dev/){
			$target_sensor[3]{$i}=$a[2];
			$target_sensor[3]{$i}=~s/\+//g;
			$target_sensor[3]{$i}=~s/°C//g;
		}
		if($a[0] eq "fan1:") {
			$target_sensor[4]{$i}=$a[1];
		}
		if($a[0] eq "fan2:") {
			$target_sensor[5]{$i}=$a[1];
		}
	}
}
close(IN);

if($i<$data_num){
    $data_num=$i-1;
}

$time_tag .="< img src=\"http://chart.apis.google.com/chart?&chxt=x,y&chxl=0:|";
$j=$i-$data_num;

while($j < $i){
    if($j==$i-$data_num || $j==$i-int(($data_num-1)/2) || $j==$i-1){
	$time_tag .="$time[$j]";
	$time_tag .="|";
    }
    $j++;
}

$time_tag =~s/\|$//o;
$time_tag .= "&cht=lc&chd=t:";

for($h=0; $h < 6; $h++){
    $j=$i-$data_num;
    while($j<$i){
	$target_sensor[$h]{out} .= $target_sensor[$h]{$j};
	$target_sensor[$h]{out} .= ",";
	$j++;
    }
    
}

for($h=0; $h < 6; $h++){
    $target_sensor[$h]{out}=~s/,$//o;
    $tmp ="$time_tag";
    $tmp .="$target_sensor[$h]{out}";
    $tmp .="&chds=$target_sensor[$h]{min},$target_sensor[$h]{max}&chxr=1,$target_sensor[$h]{min},$target_sensor[$h]{max}&chco=76A4FB&chls=1.0&chs=200x150&chtt=$target_sensor[$h]{sensor}\">\n";
    print "$tmp";
}
exit();


もう少し、コードを短縮化できる余地はありそうだけど、そこそこ可読性がよいので、とりあえずこの版でページ上部のグラフは作成している。

このスクリプトを以下のような周期でcronにて実行し、出力された、部分的なHTMLをWebサイトに取り込むようにすると、最新の情報を表示させることができる。
*/5 * * * * /usr/local/bin/sensorslog2csv_r3.pl /var/log/sensor.log > /path/to/出力ファイル

ちなみにPHPで外部ファイルを取り込むには以下のようなコードをページ内の表示したい箇所に記載すればよい。
<?php
$fname = "/path/to/出力ファイル";
$fp = fopen($fname, 'rb');
while (!feof($fp)) {
    $line = fgets($fp, 1024);
    print "$line\n";
}
fclose ($fp);
?>


Google Chart APIは大変ありがたい機能だと思う。グラフを作るライブラリをいくつか試したけれども、結構CPUパワーをつかい、個人的にはできれば自前ではやりたくない領域だった。いまやURIを生成するだけで画像を表示してくれるなんて、なんてすばらしい機能だろう。 クリック。
人気ブログランキングへ
この記事をはてなブックマーク:

日本の夏、九州の夏

花火の饗宴
花火の饗宴
たまや~
たまや~

夫です。 夏休みを利用して、九州の実家に帰ってきています。
ちょうど実家では花火大会!!ということで、花火の撮影にチャレンジしました。
今回は、EOS5D、EF24-105mm F4L ISを使用しました。
レストランの中から!花火を鑑賞しました(なんてすばらしい体験!)。
このため三脚はなく、テーブルにカメラを置いての撮影。

■花火撮影で難しかったこと

  • 夜間なのでAFがうまく利いてくれない。

MFで設定し、最終的にF値を絞り気味(F22)に設定しました。

この記事をはてなブックマーク:

夏の海と太陽と、日焼け

DSC00321.JPG
DSC00321.JPG

夫です。 久々に(10年ぶり以上??)海で泳ぎました。 幼少のころには水泳を習っていたので、泳げると思っていたけど、思った以上に泳げなかった・・。 泳ぐと大変疲れます。プールに通うと健康的かも。 夏の日差しはとても強く、2日間泳いだだけで、真っ黒になってしまいました。 ちょっと日焼けが強すぎて、ひりひりして痛く、保冷剤で冷やすと気持ちいい。 翌日には早くも皮が剥けてしまいました。。 男性にも日焼け止めは必要ですね。日光が強すぎて、思った以上に日焼けしてしまいます。 クリックをお願いします。

人気ブログランキングへ

この記事をはてなブックマーク:

HDL4-G LANDISK ファイルサイズが大きなファイルコピー時のエラー解消/Corega CG-SW05GTPLBとの相性?

IO Data HDL4-G LANDISKを使用していますが、大きなファイルをWindowsホストからコピーすると途中で以下のようなエラーダイアログがでます。

「ファイル名 をコピーできません。指定されたネットワーク名は利用できません。」

しばらくはうまくいっているのですが、あるタイミングで突然ファイルコピーがNGとなる。
詳細な情報を収集するため、このサイトを参考にtelnetを有効にする。

その後、まずはソフトウェア要因を疑い、詳細なログ情報(dmesg)を解析すると、

eth0: link down
PHY 0x00: 1140 7949 0141 0e11 01e1 0000 0004 2801
PHY 0x08: 0000 0300 0000 0000 0000 0000 0000 3000
PHY 0x10: 6060 8000 0000 0700 0000 0001 0000 0000
PHY 0x18: 0000 0000 0040 0000 0000 0000 0000 0000

この記事をはてなブックマーク:

National ベランダ・テラス用 自動水やりタイマー EY4200 レビュー

化粧箱に入った君
化粧箱に入った君
頼もしき勇姿
頼もしき勇姿

夫です。
夏休みの間、プランターの植物が気になると、妻からの要望で、自動水やりタイマーを導入しました。
導入したはNational ベランダ・テラス用 自動水やりタイマー グレー EY4200-H

いいところは水が18Lも入り、1週間は十分にもつ水量。とても頼もしい。
下手をすれば、妻の気まぐれな1週間の水やりよりも、頼もしいかもしれない。

この記事をはてなブックマーク:

D945GCLF FAN不調、FAN交換(アイネックス ケースファン CF-40FS)

CF-40FS
CF-40FS
ライブ交換の図
ライブ交換の図
妻のすばらしい!アイデアによる「ねじりっこ」+元ねじでの固定
妻のすばらしい!アイデアによる「ねじりっこ」+元ねじでの固定
FAN交換による回転数の遷移
FAN交換による回転数の遷移

夫です。
D945GCLFのマザーボードについているチップセットのFANが、しばらく前から不調です。
だんだんと音が大きくなって、たまにセンサ上も、回転数が0になるなど、早くも故障の傾向が見えてきました。
D945GCLFには40mm、厚さ10mmのファンが使用されています。
このサイズで流体軸受けのファンがあるか探したころ、「アイネックス ケースファン40mm薄型標準タイプ CF-40FS」がサイズぴったりでしたので早速購入。

この記事をはてなブックマーク:

D945GCLF ケースファンにより、チップセットファン停止/回転数低でも温度安定

夫です。
D945GCLFを入れているケースには、Noah 800AL-BKのケース(http://www.dirac.co.jp/dirac/noah800.html)を使用しています。
このケースには側面に大きめ(8cm)のファンが搭載されています。このファンは2000RPM程度で動作しており、動作音が気になることはありません。
しかし先日交換した40cmのファン(http://iktaka.dyndns.org/node/26)は残念ながら、若干高音が気になり出しました。。。
またCHIP_TEMPは、こちらの環境ではほぼ41℃で安定しており、なんと、CHIPファンを停止しても温度が安定しています。熱が異常な状態にならないと動かしても意味なさそう・・。

そこで、Linuxでのファン回転数制御を可能とするpwmconfig/fancontrolを設定しました。
(pwmconfig/fancontrolはlm_sensorsの一部です。)

この記事をはてなブックマーク:

CentOS5.2のXen、DomUインストール後、xm consoleコマンドでは、起動中の情報が非表示。

夫です。
CentOS5.2の仮想マシンマネージャーから、DomUにCentOS5.2をインストールしました。
インストール自体は指定されたオプションを設定することでうまくいき、GUIでの接続はできるのですが、
xmコマンドから接続した場合、下に示すメッセージを表示したまま停止し、ログインプロンプトが表示されるまで、情報が表示されません。

この記事をはてなブックマーク:

Drupalのmultipingモジュールとpostgresqlでのエラー

Drupalは優れたCMSであり、DBとしてMySQLPostgresqlの両者で動作できるようになっている。
しかし歴史的な経緯により、MySQLでの動作のほうが問題が少ない。
というのはDrupalでサイトを構築する場合、数多くのモジュールを使用して、機能追加を行っていくが、それでモジュールDBへのアクセスを行う。
モジュールによっては、ロジックの中でMySQLでしか動作しないSQL処理を行っているものが多数あります。

残念ながら当初はそういった点を見切れず、このサイトではDrupal+Postgresqlを選択して稼動しています。
そのため、いくつかのモジュールで問題が出ることも多数。一度サイトが稼動すると、
なかなかデータベースの移行もままならず、当面はむしろ動かしたいモジュールPostgresqlへ対応させていくこととします。

この記事をはてなブックマーク:

Drupalのbrowscapモジュールとpostgresでのエラー

夫です。

先日に引き続きDrupalモジュールネタです。
potgresqlを使ったDrupalでうまく動かないモジュールとしてbrowscap(http://drupal.org/project/browscap)モジュールがあります。

Browscapモジュールは、サイトを見てくれた人が、どんなブラウザを使っていたのか、統計情報を取得し、上位のモジュールと組み合わせると、ブラウザ、ユーザ環境に特化したHTMLを生成することができるとのことです。

Browscapモジュールは、Browser Capabilities Project(http://browsers.garykeith.com/downloads.asp)から、最新のブラウザ情報一覧を取り込み、基本データベースを生成するのですが、このデータベース生成にMySQL出しか使えない、"REPLACE INTO" 構文が使用されています。

このSQL構文を、普遍的なSQLである、SELECT文の結果を見て、INSERTもしくはUPDATEを行う処理に変更しないと、postgresqlではうまく動いてくれません。

この記事をはてなブックマーク:

APC(Alternative PHP Cache)によるDrupal/Postgresql/CentOSの高速化

Drupal/Postgresqlの構成は初期状態では決して高速な組み合わせではない。
MySQLではクエリー結果をキャッシュする機構があるようだが、Postgresqlにはそのような機能はない模様。
またDrupalPHPもmoduleによっては重たい処理も多々あり、高速化が重要となる。

PHPの処理を高速化するにはキャッシュの機構を導入するのが一般的なようで、Drupalの組み合わせで問題なく動く実績があるのがAPCAlternative PHP Cache)(http://pecl.php.net/package/APC)である。またAPCにはDBクエリの結果もキャッシュする機能があるとのこと。

詳細な導入事例はここ(http://www.doyouphp.jp/tips/tips_apc.shtml)などが大変参考になる。
まずはCentOSPHP-5.2.6環境での導入メモを記載しておく。

必要なパッケージ(yumで導入)

この記事をはてなブックマーク:

ANNESA(アネッサ) パーフェクトスムースサンスクリーンA/パーフェクトスムースサンスクリーンA/パーフェクトUVサンスクリーンA/マイルドサンスクリーン (フェース)A の実力

 

妻です。 ながーいタイトル。。

真っ青な空の下、露天風呂に入りました。 日焼けがー。 九州の太陽に対して無防備すぎる自分。 日傘をさしてお風呂に入っていましたが内風呂へ移動。 目に映る青い空、山の緑。 光が強いせいか、輪郭がくっきり、力強くみえます。 内風呂の石に映りこむ緑も堪能。 リラックス出来るし疲れがとれるし、温泉大好きです。

そうそう、普段は日焼け止めはANNESAを利用しています。 すべての製品を使用したかな? 愛用し始めた理由はグアムに会社の同期で旅行に行った際に、 ANNESAの日焼け止めが一番焼けなかったから。 使用感を以下に書きます。

この記事をはてなブックマーク: