zabbix-proxy経由でのデータ取得が歯抜けとなる

お世話になっております。

ただいまZabbix-Serverの構築を行っており、Zabbix-Proxyを経由した機器の監視を実施したいと思っております。

<Zabbix-Serverバージョン>
 OS:CentOS 7.3
 Zabbix-Server:2.4.8

<Zabbix-Proxyバージョン>
 OS:CentOS 6.5
 Zabbix-Proxy:2.2.5

現状の状態としては、全くServer-Proxy間で通信ができていないわけではないのですが、Proxyからデータ取得に失敗して
しまう場合があり、zabbix_server.logに下記のようなログが出力されてしまいます。

 cannot connect to proxy "プロキシサーバ名": cannot connect to [[X.X.X.X]:10051]: [110] Connection timed out

ただ、Web画面上の[管理]-[プロキシ]から「最新データ受信時刻」を参照すると、60秒周期ほどで更新されておりますので、
通信自体はできているように思われますので、データの取得に何かしらの異常があるのではないかと考えております。

本件、どういった原因が考えられますでしょうか?

コメント表示オプション

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

Proxy を利用する構成の場合、Server・Proxyのバージョン系列を揃える必要があります
x.y.z の x.y の部分までが同じでなければいけません

2.2系サーバには2.2系プロキシ
2.4系サーバには2.4系プロキシ
3.0系サーバには3.0系プロキシ
3.2系サーバには3.2系プロキシ

バージョンが異なる場合、相互間の情報通信方式に互換性がなく、正常動作しません
いずれかのバージョンを変更して、バージョンを揃えてみてください

先ほどZabbix-Proxyのバージョンを同一バージョンの2.4.8にアップグレードし、1時間ほど様子を見たのですが、
状況が変わらず、Web画面上の[管理]-[プロキシ]から「最新データ受信時刻」の数値は更新されるものの、
[監視データ]-[最新データ]で取得されているデータは、データが更新されたりされなかったといった状況です。

 ※10分おきに更新されたと思えば、1時間ほど更新されない場合もあり、不安定な状態となっております。

この状況はどういった場合に発生するとかんがえられますでしょうか?

ユーザー fripper の写真

zabbix proxy の動作モードはどちらとなっていますでしょうか?

ProxyMode=0 or 1

アクティブproxyの場合
 proxyが自発的にserverへ接続し、自分の配下となっているエージェント・ホストの監視設定情報リストを入手
  proxy.conf の ConfigFrequency毎に実行される
 proxyが監視・収集を実施
 proxyが自発的にserverへ接続し、監視・収集結果を報告
  proxy.conf の DataSenderFrequency毎に、新規の収集結果があれば実行される

パッシブproxyの場合
 serverからproxyへ接続し、proxy配下となるエージェント・ホストの監視設定情報リストをpush
  server.conf の ProxyConfigFrequency毎に実行される
 proxyが監視・収集を実施
 serverからproxyへ接続し、proxy配下となるエージェント・ホストの監視・収集結果をget
  server.conf の ProxyDataFrequency毎に実行される

Proxy側に新規の収集項目が多すぎて大量の新規収集データがServerへ報告しきれないまま
溜まってしまい、server側への収集結果伝達が遅延してしまうことも起こりえます

現状はパッシブモードで動作しております。

かつ、元々稼働していたZabbix-Serverを別のサーバにリプレース(それぞれ別のリージョン)し、移行期間中であるが現在は、
2台あるZabbix-Serverの双方からデータを収集しに行っている状況になります。

もしかするとそのあたりで遅延につながっている可能性があるかもしれません。

現在6台のZabbix-Proxyが稼働しており、それぞれの要求パフォーマンスは『5.72』『25.59』『5.47』『2.93』『5.84』『22.54』と
なっておりますが、これくらいの要求パフォーマンスは許容範囲となるのでしょうか?

ユーザー fripper の写真

Proxy に対して Server が2台ある状況なのですね

Proxyは、収集した個々のデータをServerへ報告し終わったか否かを管理していて
報告済の古いデータから捨てていくような動作をしています
 proxy.conf 内 ProxyOfflineBuffer だけは報告済データもDB内保持

ServerAとServerBの両方からポーリングを受けて、各々へ
「前回Serverに報告してから現在まで」を繰り返しているせいで、
 ServerAに報告され届いたデータはServerBには報告されず‥
 ServerBに報告され届いたデータはServerAには報告されず‥
といったことが起きているのでは‥?

もしかするとそうかもしれません。
実際にはデータを取得できている時刻が全く一致しているわけではないので、片方のみにしかデータが飛んでいないかどうかは
確認できないのですが、一度、旧サーバ側のプロキシ設定を削除してみようと思います。

プロキシのデータを削除する方法としては、Web画面上の[管理]-[分散監視(もしくはプロキシ)]から削除するだけで問題ないでしょうか?

ユーザー fripper の写真

2台あるServerの各々で、概要など収集結果データが一覧できるページから、
プロキシ配下の監視対象ホストに設定されているアイテム項目で
収集間隔の短いアイテムを選択して「最新500件」とかを見ると、
時系列での収集データが確認できます

そちらで、お互いのサーバの歯抜けになっている時間帯を確認して
相互に補完しあうような状況となっているならば、
先のコメントで申し上げたとおり、
ServerAに送ったデータはServerBに報告される時点では送信対象外となり
ServerBに送ったデータはServerAに報告される時点では送信対象外となり‥と
いった事態に陥っているのだと確定できるかと思います

zabbix-proxyを一時的に無効化にして、片方のZabbix-Serverのみで正常にデータが収集できるかを確認したいのですが、
Zabbix-Server上に登録されているプロキシを一時的に停止させる方法はございますでしょうか?

一度削除してしまうと、万が一再度プロキシを登録する際に、再度ホストの登録を一からやり直す必要があるかと思いまして。
(ホスト情報をエクスポートしておけばよいのかもしれませんが。)

ユーザー fripper の写真

■管理→分散監視
プロキシの一覧画面で、一時的に監視を中断させたいプロキシにチェックを付けて
画面下側のコンボボックスで「選択を無効」すれば出来ると思います

片側のサーバだけでこれを実施すれば、残ったサーバ側のみがデータ収集するようになるはずです

ご教示いただいた通り、「分散監視」メニューから無効にしたいプロキシを選択し、無効化を実施いたしましたが、
1時間ほど経過しても無効化したプロキシサーバの「最新データ受信実行」が更新され続けており、データが取得され
続けてしまっております。

これはプロキシ側に蓄積されているデータがZabbix-Server側に流れきっていない等が考えられますでしょうか?
ある程度時間が経過することで自動的にデータの収集は停止するのでしょうか?

もご確認の程、よろしくお願いいたします。

やはり2台存在Zabbix-Serverのうち、片方のZabbix-Serverの「分散監視」から、特定のプロキシを無効化いたしましたが、
現在も正常にデータが収集できない状態は変わらないようです。

データを収集できていないサーバのキューを見てみると、ほとんどが「10分以上」のキューに溜まってしまっていることから、
Zabbix-Server全体として正常にデータの更新情報を受け取ることができていないのではないかと思われますが、
この点はどういった方法で改善することが可能でしょうか?

添付がキューの状態になります。

ユーザー fripper の写真

Proxyはパッシブモード(ProxyMode=1)として設定されている
ServerA側はProxyをPassiveModeとして登録
ServerB側はProxyをPassiveModeとして登録、Proxy設定画面から当該Proxyを無効化(先述コメントの方法)
‥となっているとして‥

・ServerB側で新しいデータが収集されなくなっていることの確認
 「最新データ受信時刻」が無効化した頃の時間帯となっているはずです
 コレが無効化後も更新され続けているようだと、Proxy設定が無効化出来ておらず、
 いまだにServerB側へデータが流れてしまっている可能性があります

上記がすべて問題ないうえで‥
・ServerA側のデータ収集状況確認
 ・「最新データ受信時刻」は、定期的に更新され続けている
 ・しかし、データが歯抜けになっていて、項目によっては「10分以上」のキューに溜まってしまっている‥
 ・「cannot connect to proxy "プロキシサーバ名": cannot connect to [[X.X.X.X]:10051]: [110] Connection timed out」
  となることがある
から想像できるのは2点

1.Proxy 側のStartTrappersが不足している
 Proxy側のtrapperプロセスが不足していて、Serverからの「監視対象コレだよよろしく」接続や
 「集めたデータちょうだい」接続が受け入れできていない
 Trapperは、Proxy配下のAgentから、アクティブなアイテムの収集結果報告を受けたりするのに
 使われるので、そちらで埋まってしまうと、Serverからの接続がうまく行かなくなっている可能性があります
1.そもそもの回線が不安定
 ServerA上からServerAのプロキシ設定に登録しているIP・Port(proxy.confのListenPort)への接続が不安定で、
 接続できたりできなかったり‥、接続できても途中で切れたりする‥という状況だとすると、
 これ以上は、Zabbixの設定ではなく、経路となるネットワーク側の問題となってしまいます‥

色々とご教示いただきありがとうございます。

この度、/etc/my.cnfのパラメータを下記のように値を増やしたところ、安定してデータが取得できるようになりました。

 innodb_buffer_pool_size = 1536M
 innodb_log_file_size = 256M

一旦このあたりで様子を見てみようと思っております。

ユーザー fripper の写真

Server側でDBへの格納が追いついていなかった‥ということでしょうか‥?
症状が改善したのは良いと思うのですが‥

そのように見えるんですが、やはり複数存在するzabbix-proxyのうちの、一部データが収集できない状態に
戻ってしまったものがございました。

やはり現状もキューに多数の処理が蓄積されてしまっている状況でございますので、キューが蓄積されている
状態となっておりますので、このあたりが改善されていない状況であるかと思われます。

> 1.Proxy 側のStartTrappersが不足している
>  Proxy側のtrapperプロセスが不足していて、Serverからの「監視対象コレだよよろしく」接続や
>  「集めたデータちょうだい」接続が受け入れできていない
>  Trapperは、Proxy配下のAgentから、アクティブなアイテムの収集結果報告を受けたりするのに
>  使われるので、そちらで埋まってしまうと、Serverからの接続がうまく行かなくなっている可能性があります

上記でおっしゃられている状態になってしまっているかもしれません。
本件の改善には、Proxy側で「StartTrappers」の値を増加させることで改善可能でございますでしょうか?