RRD ファイルの構造を変更するときに CPAN の RRD::Editor は何かと便利です。
例 DS の type を COUNTER から DERIVE に変更する。
use File::Find;
use RRD::Editor;
$SIG{__DIE__} = sub {
print $File::Find::name, "\n";
};
$| = 1;
$top_dir = "/path/to/rrd/.";
sub process {
return unless (/\.rrd$/);
return unless (-f $File::Find::name);
print $File::Find::name, " ... ";
my ($min_pdp, $max_pdp);
my $rrd = RRD::Editor->new();
$rrd->open($File::Find::name);
foreach $name ($rrd->DS_names()) {
if ($rrd->DS_type($name) eq "COUNTER") {
$rrd->set_DS_type($name, "DERIVE");
}
}
$rrd->save();
$rrd->close();
};
find(\&process, $top_dir);
例 RRA のレコード数を変更する。
use File::Find;
use RRD::Editor;
$SIG{__DIE__} = sub {
print $File::Find::name, "\n";
};
$| = 1;
$top_dir = "/path/to/rrd/.";
sub process {
return unless (/\.rrd$/);
return unless (-f $File::Find::name);
print $File::Find::name, " ... ";
my ($min_pdp, $max_pdp);
my $rrd = RRD::Editor->new();
$rrd->open($File::Find::name);
for ($i=0; $i < $rrd->{rrd}->{rra_cnt}; $i++) {
if ($rrd->{rrd}->{rra}[$i]->{pdp_cnt} == 1) {
if ($rrd->{rrd}->{rra}[$i]->{row_cnt} < 18432) {
$rrd->resize_RRA($i, 18432);
}
}
if ($rrd->{rrd}->{rra}[$i]->{pdp_cnt} == 6) {
if ($rrd->{rrd}->{rra}[$i]->{row_cnt} < 3072) {
$rrd->resize_RRA($i, 3072);
}
}
if ($rrd->{rrd}->{rra}[$i]->{pdp_cnt} == 24) {
if ($rrd->{rrd}->{rra}[$i]->{row_cnt} < 768) {
$rrd->resize_RRA($i, 768);
}
}
if ($rrd->{rrd}->{rra}[$i]->{pdp_cnt} == 288) {
if ($rrd->{rrd}->{rra}[$i]->{row_cnt} < 797) {
$rrd->resize_RRA($i, 797);
}
}
}
$rrd->save();
$rrd->close();
};
find(\&process, $top_dir);
0 件のコメント:
コメントを投稿