Zabbixで使用してるデータベースのサイズをすぐに減らす方法

Zabbixでサーバー監視をしているのですが、利用しているデータベースそのものが肥大化した状態になっています。

過去のフォーラムを見ていると
・ヒストリーの期間を短くする
・監視する時間間隔を広くする
・トレンドの値を小さくする

などが見られたのでこれらも対処しようと思うのですが、いかんせんハードディスクのサイズが逼迫しているため手っ取り早く削除できる方法を探しています。できれば直近のもの(例えば30日分)とかは残しておきたいと思っています。

使用しているデータベースはPostgreSQLです。今のところhistoryテーブルとhistory_uintのテーブルが大半を占めているというところまではわかっています。

宜しくお願いします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

まずは、

・ヒストリーの期間を短くする
・監視する時間間隔を広くする
・トレンドの値を小さくする

の設定を行って下さい。
あと、
 管理 -> 一般設定 -> データの保存期間
にデータの保存期間の設定もあったと思いますので、ここの日数も
小さくしておいたほうが良いでしょう。

その後、zabbix_serverプロセスを再起動するか、1時間程度経過す
ると

3327:20110831:170853.420 Executing housekeeper
3327:20110831:170900.489 Deleted 38396 records from history and trends

というようにログが出力され古いデータが削除されるはずです。

あとは、PostgreSQLを利用されているようですので、VACUUM FULL
を実行すれば良いのではないでしょうか?
もしくは、pg_dumpでバックアップを取得してDBを作成しなおすこ
とになると思います。

利用されているPostgreSQLのバージョンがわかりませんが、古いバ
ージョンだとVACUUM実行中はDBにアクセスできなくなったり、新し
いバージョンでもレスポンスの低下が発生したりすると思いますの
で、zabbix_serverも停止して作業された方が良いと思います。

ユーザー tommy の写真

TNK様

回答ありがとうございます。教えていただいた方法を早速試してみます。

利用しているPostgreSQLのバージョンは8.4.4です。Vacuum Full等を実行しようと思ったのですが、ほぼディスクフルの状態(10GB程度残っている状態)ですので難しい気がしてきました。

ちなみにpg_dumpでダンプして作り直したい場合は空のデータベースを作成後にダンプ内容をリストアするだけで問題ないと思ってよろしいでしょうか?それとも何か設定が必要になりますでしょうか?

ユーザー TNK の写真

通常のPostgreSQLのDBバックアップとリカバリの手順で問題無かった
と思います。

ユーザー tommy の写真

TNK様

試しにvacuume fullを試したのですが半日たっても一向に終わる見込みもなかったため、設定ファイルをエクスポートしてZabbixデータベースを再構築しました。

今後は履歴保存期間を短くして運用するようにします。ありがとうございました。