メンテナンス後プロキシにキューが溜まりっぱなしになる
お疲れ様です。
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 - 投稿数: 4769
次のバージョン(1.8.4)で修正されるようです。
https://support.zabbix.com/browse/ZBX-3085
実際に私自身ではやってみてはいませんが、上記のリンク先にある方法を確認してみてください。
matsumotor - 投稿数: 7
ありがとうございます。
海外のsupportページにはこういう情報がかなり沢山あるのですね。
勉強になりました。
現状はキューはかすための初期化でうまくいってるので、そっちで対応しおうと思います。
親切にありがとうございました。
kodai - 投稿数: 1341
ZBX-3085のバグは、プロキシのMySQLを"ProxyOfflineBuffer"で設定した時間以上止めた状態にしておくと発生する問題なので、メンテナンス期間を設定した場合とは異なるかもしれません。
ちなみに、上記ZBX-3085のバグはプロキシにMySQLを使った場合のみ発生する問題で、PostgreSQLやSQLiteを使った場合は発生しません。(Zabbix側の問題ではなく、MySQLのInnoDB側の問題です)
これはどのような操作をされているのでしょう?よければ教えてもらえませんか?
matsumotor - 投稿数: 7
お世話になります。
上記バグとは違う可能性もありますね。
どちらかというと、セントラルノードとプロキシの連携で、セントラルノードと同じL2のセグメントに存在するプロキシはメンテナンス後もキューははけますが、L3を介してインターネットを挟んだ拠点にあるプロキシはメンテ後キューが溜まって監視が一向に始まらないといった現象です。
動作をstraceやtcpdumpでみていくと、プロキシはセントラルノードにデータを送っているようですが、セントラルノードがそれを正常に受け取らないような動きをしていたように思います。
プロキシに保持しているデータとセントラルノードに保持しているデータに齟齬もしくはセッション管理やデータの連携で不具合がおきている?といった印象でした。
そのため、プロキシのDB自体をdropし、再度初期のSQL(data.sql mysql.sql image_mysql.sql)を流しこんで、プロキシのDBをインストール状態にすると、齟齬がなくなりキューがはけだすという事象を確認しました。
もしくは、データの送受信を管理してるテーブルを特定できれば、そいつの値を調整するだけでよいのかもしれません。
TNK - 投稿数: 4769
このバグ(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を設定し直すと対処できるようです。