メンテナンス後プロキシにキューが溜まりっぱなしになる

お疲れ様です。

zabbix1.8.2をプロキシによる分散監視で利用しております。

バグかどうか明確ではありませんが、質問させてください。

■ 構成
・プロキシによる分散監視
・プロキシは拠点内でDRBD+Hearbeat+FIPで冗長構成
・セントラルノードはデータセンター間でDRBD+Heartbeat+DDNSで冗長構成
・MySQLのinnodb使用

■ ハード
・CPU Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
・MEM 24G

■ proxy設定
LogFile=/var/log/zabbix/zabbix_proxy.log
PidFile=/var/run/zabbix/zabbix_proxy.pid
Server=${親サーバー}
Hostname=${プロキシホスト名}
DBName=zabbix
DBUser=hoge
DBPassword=fuga
DBSocket=/var/lib/mysql/mysql.sock
Timeout=30
AlertScriptsPath=/etc/zabbix/alertscripts
ExternalScripts=/etc/zabbix/externalscripts
ConfigFrequency=600
DataSenderFrequeccy=10
#DebugLevel=4
CacheSize=512M
HistoryCacheSize=512M
TrendCacheSize=256M
HistoryTextCacheSize=512M
#DisableHousekeeping=1
StartIPMIPollers=3

上記構成でメンテナンス設定し、メンテナンス完了後プロキシサーバーにキューがたまりっぱなしとなり、そのプロキシで監視が出来ない状態になります。

セントラルノードは、データセンター間で冗長構成をとっており、アクティブがプロキシと違う拠点(インターネットをはさむ)にある状態です。

アクティブのセントラルノードと同じ拠点内(同セグメント)にあるプロキシは、メンテナンス後もキューがたまらず正常に監視が再開されます。

現状は、プロキシにキューが溜まった場合、プロキシサーバー内のDBを初期化すると、キューが吐けだすので、それで対応しています。

これに関して、キューを強制ではかす方法や、そもそもキューをたまらないようにする方法等ありますでしょうか。

何かありましたらご教授下さい。
また、他に必要な情報等ありましたら追記します。

以上、よろしくお願いします。

コメント表示オプション

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

次のバージョン(1.8.4)で修正されるようです。
https://support.zabbix.com/browse/ZBX-3085

実際に私自身ではやってみてはいませんが、上記のリンク先にある方法を確認してみてください。

ユーザー matsumotor の写真

ありがとうございます。

海外のsupportページにはこういう情報がかなり沢山あるのですね。
勉強になりました。

現状はキューはかすための初期化でうまくいってるので、そっちで対応しおうと思います。

親切にありがとうございました。

ユーザー kodai の写真

ZBX-3085のバグは、プロキシのMySQLを"ProxyOfflineBuffer"で設定した時間以上止めた状態にしておくと発生する問題なので、メンテナンス期間を設定した場合とは異なるかもしれません。

ちなみに、上記ZBX-3085のバグはプロキシにMySQLを使った場合のみ発生する問題で、PostgreSQLやSQLiteを使った場合は発生しません。(Zabbix側の問題ではなく、MySQLのInnoDB側の問題です)

現状はキューはかすための初期化でうまくいってるので

これはどのような操作をされているのでしょう?よければ教えてもらえませんか?

ユーザー matsumotor の写真

お世話になります。

kodaiさんは書きました:
ZBX-3085のバグは、プロキシのMySQLを"ProxyOfflineBuffer"で設定した時間以上止めた状態にしておくと発生する問題なので、メンテナンス期間を設定した場合とは異なるかもしれません。

ちなみに、上記ZBX-3085のバグはプロキシにMySQLを使った場合のみ発生する問題で、PostgreSQLやSQLiteを使った場合は発生しません。(Zabbix側の問題ではなく、MySQLのInnoDB側の問題です)

現状はキューはかすための初期化でうまくいってるので

これはどのような操作をされているのでしょう?よければ教えてもらえませんか?

上記バグとは違う可能性もありますね。
どちらかというと、セントラルノードとプロキシの連携で、セントラルノードと同じL2のセグメントに存在するプロキシはメンテナンス後もキューははけますが、L3を介してインターネットを挟んだ拠点にあるプロキシはメンテ後キューが溜まって監視が一向に始まらないといった現象です。

動作をstraceやtcpdumpでみていくと、プロキシはセントラルノードにデータを送っているようですが、セントラルノードがそれを正常に受け取らないような動きをしていたように思います。

プロキシに保持しているデータとセントラルノードに保持しているデータに齟齬もしくはセッション管理やデータの連携で不具合がおきている?といった印象でした。

そのため、プロキシのDB自体をdropし、再度初期のSQL(data.sql mysql.sql image_mysql.sql)を流しこんで、プロキシのDBをインストール状態にすると、齟齬がなくなりキューがはけだすという事象を確認しました。

もしくは、データの送受信を管理してるテーブルを特定できれば、そいつの値を調整するだけでよいのかもしれません。

ユーザー TNK の写真

もしくは、データの送受信を管理してるテーブルを特定できれば、そいつの値を調整するだけでよいのかもしれません。

このバグ(ZBX-3085)での障害であった場合、最初の返答に書かせて頂いたとおり、一つの対処方法が先にご紹介したURLに書かれています。

より具体的な内容は、先のURLのページに添付されているzbx183-fix_auto_increment.patchをご覧下さい。

 proxy_history
 proxy_dhistory

の2つのテーブルに登録されているデータ数を数えて、0件である場合はauto_incrementの値がリセットされてしまっているので、idsテーブルから各テーブルの次のid番号を取得して、alter tableコマンドで各テーブルのauto_incrementの値に、取得したid番号+1を設定し直すと対処できるようです。