さまよう大アリクイ

横浜市に住む。ホームページを作っていたりするが、最近滞り気味。

Gangliaのデータの保存期間を拡大する

Gangliaのデータの保存期間はデフォルトで最大約1年で、rrdtoolを使っているので古いデータが廃棄されます。しかし、もっと長く保存したいので保存期間を拡大します。最初からわかっていれば、gmetad.confのRRAsの設定を、例えば、 RRAs "RRA:AVERAGE:0.5:1:244" "RRA:AVERAGE:0.5:24:244" "RRA:AVERAGE:0.5:168:244" "RRA:AVERAGE:0.5:672:244" "RRA:AVERAGE:0.5:5760:1900" とかすればいいのですが、今回は後からデータを残したまま拡大する事になりました。

rrdtool resizeでデータサイズを大きく出来るので、これで変更すればよいのですが、データ更新をしながら拡大するので、トロトロ作業するわけにはいきません。で、スクリプトでパッと拡張作業をするようにしました。スクリプトは以下のとおりです。

#!/bin/sh

if [ $# -lt 1 ]

then

    echo `basename $0` rrdfile [rrdfile...] >&2

    exit 1

fi

for f in $*

do

    fsize=`wc -c $f | awk '{print $1}'`

    fstep=`/usr/bin/rrdtool info $f | awk '$1=="step"{print $3}'`

    case "${fsize}_${fstep}" in

    24425_15)

        echo Already expanded : $f

        ;;

    23648_15)

        echo Ignore ganglia summary info: $f

        ;;

    12216_15)

        # GANGLIA FILE PTN1

        /usr/bin/rrdtool resize $f 4 GROW 1526

        /bin/cp -f resize.rrd $f

        /bin/rm -f resize.rrd

        echo Expanded ganglia rrd: $f

        ;;

    *)

        echo Error : File= $f Size= $fsize Step= $fstep

        ;;

    esac

done

exit 0

rrdtool resizeは、サイズを変更したファイルをresize.rrdに出力するので、これを元のファイルに書き戻すようにしています。gangliaのファイルは、ホストのデータは1 rowにつき8バイト、サマリのデータは1 rowにつき16バイト(sumとnumの2つのデータがある)になります。