キューの不可解な動きについて

zabbixのキューが不可解な動きをしており相談させてください。

キューがここ数日、1日毎に非常に多い状態、少ない状態を繰り返しております。
(添付SS)

zabbixサーバー1台+プロキシー2台構成で運用しており、キューは、プロキシー2台にそれぞれに溜まっています。

多い日のキューに溜まっているのはzabbixエージェントのアイテムで、監視間隔が30分以上のアイテムがほとんどなので、
毎日この状態になるのであれば理解はできるのですが、1日置きにキューが多い人と少ない日が現れる理屈がわからないでいます。

2週間ほど前にzabbixを1.8.16から2.2.5にバージョンアップしました。
バージョンアップ前は、キューは少ない状態で推移しており、これほど大きなキューになることはありませんでした。

この間、各プロキシーのstartPollerやStartDBSyncersの値を増やしてみたりしたのですが効果は現れておりません。

今のところ値の取得の漏れがでる等は発生しておらず運用上特に問題はないのですが、現象の原因を確認しておきたいと考えています。

サーバー、プロキシー
OS:CentOS 5.10(32bit)
zabbixバージョン:2.2.5
各サーバーLoadAverageは1程度です。

Zabbixサーバーの状態
-------------------------------------
パラメータ 値 詳細
Zabbixサーバーの起動 はい localhost:10051
ホスト数 (有効/無効/テンプレート) 1079 558 / 439 / 82
アイテム数 (有効/無効/取得不可) 13899 9170 / 4243 / 486
トリガー数 (有効/無効) [障害/正常] 2743 2432 / 311 [8 / 2424]
ユーザー数 (オンライン) 42 2
1秒あたりの監視項目数(Zabbixサーバーの要求パフォーマンス) 125.47 -

プロキシの設定
------------------------------------------
名前 モード ホスト数 アイテム数 要求パフォーマンス (vps)
プロキシ1 パッシブ 434 5817 85.12
プロキシ2 パッシブ 81 3292 31.08

コメント表示オプション

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

利用されているサーバのCPUやメモリサイズはどの程度のものを利
用されていますか?
監視項目が秒間125個を超えていますので、CPUの性能、メモリサイ
ズ、ハードディスクの性能もそれなりに高いものが求められると思
います。
DBMSに何を利用されているかも記載がありませんが、チューニング
することも必要になるでしょう。

また、ZabbixサーバやZabbixプロキシを稼働させているサーバ機の
ロードアベレージだけではなく、どのような処理に時間がかかって
いるのかを確認するために、CPUのUsageなどの情報もご確認くださ
い。
どのプロセスが多くCPUを利用している状態なのかも確認しておい
た方が良いでしょう。

あと、Zabbixの負荷の問題である場合、どのプロセスや処理に負荷
がかかっているのか確認することができます。
1.8系からアップグレードされたのであれば、テンプレートの

 Template_Zabbix_Server

に、

 Zabbix busy ○○ processes, in %

というアイテムがあると思いますので、いずれかのプロセスがbusy
状態になっていないかも確認してみてください。

それ以外にも、ログに何らかの情報が出力されていると思いますの
で、ZabbixサーバやZabbixプロキシのログファイルも確認してみて
ください。

ユーザー ima の写真

TNK様

早速のご回答ありがとうございます。

>利用されているサーバのCPUやメモリサイズはどの程度のものを利
>用されていますか?

zabbixサーバー、プロキシー共にVMWareの仮想上で動作しております。

割り当ては
サーバー: CPU4コア メモリ3GB
プロキシ: CPU2コア メモリ2GB
となっております。

> DBMSに何を利用されているかも記載がありませんが、チューニング
> することも必要になるでしょう。

mysql(ver5.0.95)を使用しています。

my.cnfは以下のようになっています。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
innodb_file_per_table
innodb_buffer_pool_size = 1G
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
old_passwords=1
default-character-set=utf8
skip-character-set-client-handshake
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set = utf8

> また、ZabbixサーバやZabbixプロキシを稼働させているサーバ機の
> ロードアベレージだけではなく、どのような処理に時間がかかって
> いるのかを確認するために、CPUのUsageなどの情報もご確認くださ
> い。
> どのプロセスが多くCPUを利用している状態なのかも確認しておい
> た方が良いでしょう。

サーバーは、3:00-4:30にIOWaitが10%~20%でています。
また、DBのバックアップ(mysqldump)が実施される21:00-22:00にかけてUserTime
が50%程度になりますが、それ以外の時間帯は、95%以上アイドルとなっています。

プロキシは、3:00-4:30に一時的にIOWaitが5~50%出ていますが、それ以外の時間帯は
ほぼアイドルとなっています。

> Zabbix busy ○○ processes, in %
>
> というアイテムがあると思いますので、いずれかのプロセスがbusy
> 状態になっていないかも確認してみてください

3:00-4:30は若干高くなりますが、それ以外ではほぼ一定で、
Zabbix busy icmp pinger processes, in% が平均33.32%
Zabbix busy unreachable poller processes,in % が平均14.1%
Zabbix busy poller processes, in % が平均8.98%
Zabbix busy housekeeper processes, in% が平均2.98%
程度です。
(housekeeperは、3:30-4:00,21:15-21:30に一時的に100%になります。)

> それ以外にも、ログに何らかの情報が出力されていると思いますの
> で、ZabbixサーバやZabbixプロキシのログファイルも確認してみて
> ください。

ログを確認したところ、両プロキシサーバーのzabbix_proxy.logに一日あたり10件~20件程度、以下のエラー
が記録されていました。
first network error, wait for 15 seconds
another network error, wait for 15 seconds
(zabbix agentとsnmp agentの物があり。傾向はありそうだが、1つの対象だけではなく複数の対象で起こっている。
表題の件に関連するかは微妙だが、タイムアウトを調整したほうがよい?)

ユーザー zinten の写真

imaさん

2.2.6で以下の修正が入っていますが
キューが溜まっているときに「キュー」ページを確認してみてください。
Webの「管理」⇒「キュー」⇒「詳細」を表示したときに時間が44yとかになってないですか?

[ZBX-8488] fixed items being shown in queue with a delay of more than 44 years

ユーザー ima の写真

zinten様

今日はキューが溜まらない日の方ですので明日改めて確認しますが、44yにはなっていなかった
と思います。(サーバープロセス再起動直後には44yとなっていたような気がしますが、一度実行される
と変わったと思います。)

ユーザー ima の写真

本日も4:30を境にキューが溜まり始めました。

溜まっているキューは、ほとんどは監視間隔が長いもので、遅延時間も44yではなく正しい物が表示されています。

ユーザー ima の写真

本日も4:30を境にキューが溜まり始めました。

溜まっているキューは、ほとんどは監視間隔が長いもので、遅延時間も44yではなく正しい物が表示されています。

ユーザー TNK の写真

キューが溜まり始める4:30前後の状態が重要になると思うのですが、
iowaitが大きくなっているのであれば、ディスクの書き込みが遅れ
てDBのレスポンスも低下してタイムアウトが発生してしまっている
可能性は十分考えられます。

その時間帯にZabbixサーバがZabbixプロキシ経由でアイテムの値を
取得するのにどのくらいのレスポンスになっているのかにもよりま
すが、Timeoutの値は余裕を持たせた方が良いでしょう。

「Zabbix busy ○○ processes, in %」に関して、3:00-4:30に若
干高くなるとのことでしたが、それぞれどのような値であったので
しょうか?

また、監視の対象が多ければ、該当する時間帯には性能的にも余裕
がなくなってしまって、処理できないアイテムがキューに雪だるま
式に滞留してしまう可能性も十分考えられます。

あと、今回の症状とは一致してはいないようですが、zintenさんが
書かれていたように、Zabbixのバージョンによってはプロキシを利
用した場合にキューの滞留が発生したりしていたようです。
それと、ZabbixサーバとZabbixプロキシのサーバの時刻が合ってい
なかったりした場合にも遅延が発生する場合があるようです。

最初にあげたTimeoutの調整、そして、2.2系であれば、2.2.6を利
用することの検討と各サーバの時刻同期も確認してみてください。

ユーザー ima の写真

TNK様

ご回答ありがとうございます。

> 「Zabbix busy ○○ processes, in %」に関して、3:00-4:30に若
> 干高くなるとのことでしたが、それぞれどのような値であったので
> しょうか?

4:30前後について確認したところ、housekeeper processesが 100%になっていました。
(日によってブレがあるが、3:00-4:40の間で20分程度)

この間、zabbixサーバー、プロキシーサーバー共にIO Waitが高くなっており、
他の時間帯ではみられない「resuming Zabbix agent checks on host "xxx": connection restored」
が、複数のクライアントで出力されていました。

> 最初にあげたTimeoutの調整、そして、2.2系であれば、2.2.6を利
> 用することの検討と各サーバの時刻同期も確認してみてください。

まずは、サーバーのTimeout,StartPooler,DBSynerを調整し様子を見てみようと思います。

改善しないようであれば、ヒストリの削除処理を一時無効にし状況がかわるか確認してみます。

2.2.6へのアップデートもあわせて検討します。

各サーバーの時刻は同期していました。