Top過去ログ目次掲示板

作成日:2005年09月21日 作成:おやじ
掲示板で過去に質問された内容です。

No.5194 HotSaNICでDISKIOのデータが取得できません


No.5194 投稿時間:2005年09月21日(Wed) 18:54 投稿者名:わっきー URL:
タイトル:HotSaNICでDISKIOのデータが取得できません

始めまして、ワキタともうします。
現在HDDのI/O等を監視するため、HotSaNICをインストールしようとしています。

環境は、
カーネル2.6.11-1
FC4
rrdtool-1.0.49-5
hotsanic-0.5.0-pre6-snapshot
となります。

./rrdgraph startを実行すると

/usr/local/HotSaNIC/var/log/HotSaNIC.logに下記のようなエラーがでます。
----------------------------------------------------------------------
[05-09-21 12:53:55] - DISKIO [17861]: process forked to background.
[05-09-21 12:53:55] - rrdtimer [17850]: --- end start module "diskio" ---
[05-09-21 12:53:55] - rrdtimer [17850]: "diskio" running on PID 17861
Use of uninitialized value in multiplication (*) at ./platform/linux.pm line
110, <FILE> line 19 (#1)
(W uninitialized) An undefined value was used as if it were already
defined. It was interpreted as a "" or a 0, but maybe it was a mistake.
To suppress this warning assign a defined value to your variables.

To help you figure out what was undefined, perl tells you what operation
you used the undefined value in. Note, however, that perl optimizes your
program and the operation displayed in the warning may not necessarily
appear literally in your program. For example, "that $foo" is
usually optimized into "that " . $foo, and the warning will refer to
the concatenation (.) operator, even though there is no . in your
program.

Use of uninitialized value in multiplication (*) at ./platform/linux.pm line
110, <FILE> line 20 (#1)
----------------------------------------------------------------------

./makeindex.plを実行しているので、グラフは表示されます。
また、modules/diskio/setting で設定した数のDISKIOのグラフが表示されているのですが、
データが取得できていないという現象でした。

----------------------------
# vi modules/diskio/setting
KERNEL="2.6"
SOURCE="diskstats" (変更しました。オリジナルはSOURCE="stat")
DEV="8_0,/dev/sda" (追加しました)
DEV="8_1,/dev/sdb" (追加しました)
DEV="8_2,/dev/sdc" (追加しました)
----------------------------

platform/linux.pm は変更していない為、
公開されているファイルと同じでした。
http://cvs.sourceforge.net/viewcvs.py/hotsanic/HotSaNIC/modules/diskio/platform/linux.pm?rev=1.14&view=auto


HotSaNIC.logで指摘されている行は、
HotSaNICmod::do_rrd($device,"U",time,$racc,$rsect*$sectsize,$wacc,$wsect*$sectsize);
です。初期化されていないといわれ、perlをつかってチェックできるとのアドバイスしてくれているのですが、
肝心のperlを理解していないため、問題解決できずにいます。



platform/linux.pm を一部抜粋
----------------------------------------------------------------------
elsif ($args{KERNEL} eq "2.6") {
# diskstats: major minor name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq
# 3 64 hdb 524233 57272 91269016 6239457 233008 24726677 199678904 73630251 0 6331127 79891245
# 3 64 hdb 524298 57274 91284864 6239742 233012 24726679 199678952 73630252 0 6331403 79891531
open FILE,"/proc/diskstats";
while ($entry = <FILE>) {
$entry =~ s/^\s*//; # strip leading whitespaces
my ($major,$minor,undef,$racc,undef,$rsect,undef,$wacc,undef,$wsect)=split(/\s+/,$entry);
$device=$major."_".$minor;
if (defined $DEVS{$device}) {
my $sectsize=512;
HotSaNICmod::do_rrd($device,"U",time,$racc,$rsect*$sectsize,$wacc,$wsect*$sectsize);
}
}
close FILE;
}
}
----------------------------------------------------------------------

あきらかに私の知識不足が原因ですが、
何かご存知でしたらご教授いただけないでしょうか。

情報不足でしたら、申し訳ございません。ご指摘下さい。
よろしくお願いします。



掲示板▲頁先頭