Zabbix Server が MySQL DB へ書き込みを実施する際の duplicate entry に関して
2台のActive/Active構成のZabbix Serverにて同じDBを参照しています。
環境は以下となります。
Zabbix Server のバージョンは 4.0.23
DBは MySQL 8.0.11
それぞれを Active 1, Active 2 とします。
監視対象のWindowsサーバでFireWallのポートをActive 2だけあえて閉じました。
元々 Active 1 からは監視できていたので監視サーバのWebUI上ではWindowsサーバの
ステータスを取れていました。
そこであえてActive 1のzabbix-server.serviceのプロセスを落とし、Active 2のみを残したところ
想定通り、FireWallによって拒否されている為、Windowsサーバのステータスが取れなくなりました。
agent pingもマネージャから見て通っていない状況ですが、監視対象の Windows Server が
「Zabbix agent on hostname is unreachable for 5 minites」となりません。
Zabbix Server側のログを確認したところ、以下のようなログが吐かれておりました。
◆ログ
```
3117:20201014:140001.389 [Z3005] query failed: [1062] Duplicate entry '28500-1602648000' for key 'PRIMARY' [insert into trends (itemid,clock,num,value_min,
value_avg,value_max) values (28500,1602648000,60,0.000000,0.000000,0.000000);
]
3117:20201014:140001.459 [Z3005] query failed: [1062] Duplicate entry '28801-1602648000' for key 'PRIMARY' [insert into trends_uint (itemid,clock,num,value
_min,value_avg,value_max) values (28801,1602648000,60,1,1,4),(28741,1602648000,60,2122424320,2122818150,2123386880);
]
3117:20201014:140002.589 [Z3005] query failed: [1062] Duplicate entry '28802-1602648000' for key 'PRIMARY' [insert into trends_uint (itemid,clock,num,value
_min,value_avg,value_max) values (28802,1602648000,60,88,88,89);
]
3117:20201014:140003.698 [Z3005] query failed: [1062] Duplicate entry '28803-1602648000' for key 'PRIMARY' [insert into trends_uint (itemid,clock,num,value
_min,value_avg,value_max) values (28803,1602648000,6,1602633830,1602633830,1602633830);
]
3117:20201014:140004.767 [Z3005] query failed: [1062] Duplicate entry '28804-1602648000' for key 'PRIMARY' [insert into trends_uint (itemid,clock,num,value
_min,value_avg,value_max) values (28804,1602648000,60,41,66,83);
]
3117:20201014:140005.849 [Z3005] query failed: [1062] Duplicate entry '28805-1602648000' for key 'PRIMARY' [insert into trends (itemid,clock,num,value_min,
value_avg,value_max) values (28805,1602648000,60,0.000000,0.000167,0.010000);
]
3117:20201014:140006.955 [Z3005] query failed: [1062] Duplicate entry '28806-1602648000' for key 'PRIMARY' [insert into trends (itemid,clock,num,value_min,
value_avg,value_max) values (28806,1602648000,60,0.000000,0.003667,0.150000);
```
これはつまりActive 1, Active 2共に同じDBをみている為、データベース側で重複したエントリーとなっており
正しく現在のステータスが書き込みできない為、unreachable のステータスがWebUI上でも出てこなければ
アラートとしても上がらないという事でしょうか。
TNK - 投稿数: 4769
2台同時にActiveで同じDBを使用する構成では機能しません。
記載頂いたログにあるように、複数のZabbixサーバーが同時に同じ
データベースを使用しようとしてしまうと、テーブル内で唯一のも
のとする(ユニークにする)ためのIDが重複してしまい、テーブルへ
の履歴データを保存できなくなります。
2台でActive/ActiveのZabbixサーバーとしたいのであれば、データ
ベースも別の物を使用するようにしてください。
ANZ - 投稿数: 2
ご回答ありがとうございます。
例えば Active/Standby 構成に変更した場合もDBを分離する必要がありますでしょうか?