ZABBIX PROXY側のDB容量設定
ZabbbixProxyを利用して関しサーバを分散しようと考えています。
ノードではないので、Proxy側の取得データはメインのサーバに定期的に送られる、という理解をしていますが、
Proxy側のDB用ディスク容量としてはどのぐらいを用意すべきなのでしょうか?
環境によって変わる、といわれるのを承知でたとえばメインサーバの何割ぐらい、などというTipsのようなものは
無いのでしょうか?探した限りでは、このあたりの事が書かれているフォーラムはありませんでした。
また、Zabbix総合監視実践入門にもインストール方法のみが記載されていました。
長時間動機が取れなければそれだけ容量を消費するので、ある程度は必要だとは思うのですが。
何か参考になるようなものがあれば、ぜひご助言ください。
fripper - 投稿数: 495
以下、サーバ側で取得した値です
DB:MySQL 5.5 InnoDB
OS:CentOS 6 x86_64
テーブル名 DB容量 DB内件数 Byte/件
history 792723456 8710520 91.00759266
history_uint 1107296256 13222315 83.74450737
history_str 13631488 36402 374.4708532
history 系平均 1913651200 21969237 87.10594728
これらより、データ1件あたりで 100Bytes 程度を見ておけば保管できそうです
データ件数の少ない history_str 等では、かなりバラつきが大きいので、あまりアテにならないかもですが‥
で、Proxy の場合ですが‥
未同期のデータのうちほとんどは、proxy_history テーブルに保管されているようです。
Proxy 配下のホスト数・アイテム数・監視間隔にもよるとは思いますが
以下、1日あたり195000件のアイテムデータを取得しているproxyでの実測データです
テーブル名 DB容量 DB内件数 Byte/件
proxy_history 29360128 1155 25420.024
あまりにも大きくておかしいと感じたので、テーブルの最適化を行なって、再計測しました
>alter table proxy_history engine=innodb;
テーブル名 DB容量 DB内件数 Byte/件
proxy_history 393216 2189 179.6327089995432
1レコードあたり 200Bytes 程度になるみたいです。
これも、レコード数が少なすぎて、あまりアテにならないかもです
とりあえず、
200 bytes * 期間あたりのデータ取得件数
これに、
「同期が取れていても、insert / delete が繰り返されることから、テーブルのファイルサイズは、
レコード数だけでは想定できないこと
を加味して、
200 bytes x 期間あたりのデータ取得件数 x 1000倍程度
しておけば、安心なのではないでしょうか?
もちろん、mysql の binlog や、その他の領域でも多々使用されますので、
そのあたり加味してください
yas - 投稿数: 43
ありがとうございます、参考になりました。
大きくなりすぎている、と言うのが気になりますが、再構築で減ったと言う事は
一応送信済みの物はちゃんと削除される動きになっていると言う事ですね。
現在の環境から、取得アイテム数も増える想定ですので、そのあたりを加味して
容量を決定しようと思います。
fripper - 投稿数: 495
>大きくなりすぎている、と言うのが気になりますが、再構築で減ったと言う事は
これはレコードが頻繁に追加・削除された結果として、
DBのテーブルファイルサイズが、若干膨らんだものだと思います
いわゆるデータフラグメント化です
その結果、実際にその瞬間に含まれているレコード数だけから見積もれる
ファイルサイズではなくなってしまうので、「余裕をみて」という言い方を
させて頂きました
まぁ、その他の作業ファイル(DBのbin-logや他のテーブル類、zabbix含めログ類)も
考えると、「最低限」はそんなに大きくする必要はないでしょうけど
ある程度余裕を見ておくほうが、運用はラクかと。