突然ですが、我が家のインターネット回線は混雑が多発し、通信品質が良いとは言えない状況です。そこでSmokePingというものを使って回線の状態を計測しています。SmokePingは定期的にPingなどを実行して、その応答のロス率とラウンドトリップタイムを計測します。また計測された情報はSmokePingのUIからグラフとして見ることができ、デフォルトでは3時間、30時間、10日、360日のグラフが用意されています。
デフォルトでは5分間隔で計測されるのですが、より細かくデータを取るために1分間隔に変更して使用しています。前の画像は3時間のグラフですが、しっかりと1分間隔で記録されていることが分かります。しかし実行間隔の変更だけでは保存されるデータが足りずに次の画像のように360日のグラフを描画できないという問題が発生します。これは5分間隔の場合に360日分ちょうど保存されるようになっているためで、1分間隔にした場合には5分の1である72日分しか保存されないことになります。
SmokePingは内部でRRDtoolを使用しており、その集約ステップ数もしくは保存行数を大きくする必要があります。本来はSmokePingの計測先の設定をする前にDatabase設定にある値を変更し、最初から適切なrrdファイルが作成されるようにしておくべきであると思います(この記事を書こうと思ったときに気がつきました)が、今回は既にrrdファイルが作成されていることもありますので、そのrrdファイルの保存行数を拡大することにします。
細かいことはさておき、デフォルトでは計測間隔*144(集約ステップ数)*720(保存行数)となっているところの保存行数を5倍の3600にします。そうすることで1分間隔の計測でも360日分を満たすことになります。rrdファイルはSmokePingのTargets設定で指定された名前でディレクトリに保存されています。そのディレクトリに移動して次のようなコマンドを実行します。rrdtool resizeで保存行数を2880大きくするということをしています。注意点としてrrdtool resizeでは元のファイルは変更されずにresize.rrdというファイルが生成されますので、それを元のファイル名に変更し上書きする必要があります。絶対に元データを失いたくない場合には事前にバックアップしておきましょう。またファイルの所有者にも気をつけてください。ここではsmokepingユーザで実行されるようにsudoを使用しています。なおrrdtool infoコマンドで正しく設定されているかを確認できます。".rows"という文字列でgrepすると分かりやすいかもしれません。
sudo -u smokeping rrdtool resize target.rrd 4 GROW 2880 && sudo -u smokeping mv resize.rrd target.rrd
sudo -u smokeping rrdtool resize target.rrd 5 GROW 2880 && sudo -u smokeping mv resize.rrd target.rrd
sudo -u smokeping rrdtool resize target.rrd 6 GROW 2880 && sudo -u smokeping mv resize.rrd target.rrd
以上でデータ保存期間の拡大は完了なのですが、少し細かい話をすると、SmokePingのrrdファイルは今回保存行数を増やしたデータ以外に、生データやそれらとの間の粒度のデータがあるのですが、そのあたりの設定も変更したほうが良いかもしれないですね。前述のデフォルトで表示されるグラフですと30時間のグラフにも影響がありそうですし、時間指定でグラフを生成する際も、より細かい粒度でのデータがデフォルトより早く失われることになっています。また保存行数だけではなく集約ステップ数も変更についても考えても良さそうですね。その場合はrrdファイルの初期化が必要かもしれませんが。
ということでSmokePingのデータ保存期間の拡大の話でした。ちなみにこれはもう何度かやっていて、ブログに書いておこうと思いながら書いておらずに毎回調べながらやっていたので、ようやくとりあえずのコマンドはメモしておくことができました。次は最適なDatabase設定の値を考えてみますかね。では!