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 件のコメント:
コメントを投稿