first network error, wait for 15 secondsについて

お世話になります。

zabbix_server.logに「first network error, wait for 15 seconds」が頻繁に記録されます。
snmp agentとipmi agentによる監視でのみ発生しております。

snmp agentは特定のホスト(複数台)にのみ起こっており、そのホストは若干の遅延があります。(5ms程度)

《動作環境》
OS:CentOS6.4
zabbix:2.2.2
Mysql:5.6.15
Apache:2.2.15

[zabbix_server.conf]
StartPollers=200
StartIPMIPollers=20
StartPollersUnreachable=20
StartPingers=10
StartHTTPPollers=5
StartVMwareCollectors=5
VMwareFrequency=120
VMwareCacheSize=128M
CacheSize=1024M
HistoryCacheSize=512M
TrendCacheSize=128M
ValueCacheSize=128
Timeout=30

[zabbix_agent.conf]
Timeout=30

[my.cnf]
innodb_file_per_table
innodb_buffer_pool_size=3G
innodb_log_file_size=256M
innodb_log_files_in_group=2
innodb_flush_method=O_DIRECT
max_connections = 512
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so

そのホストに対してはicmpping,icmppingsecも取得しておりますが、そちらは「first network error, wait for 15 seconds」は発生しておりません。
snmp agentも「first network error, wait for 15 seconds」の後、暫くして「resuming SNMP agent checks on host "***": connection restored」で再接続されます。どれか特定のアイテムのみ発生しているわけでなくsnmpの監視項目はランダムに発生したします。
snmpエージェントの監視項目が多すぎるのかと思い、検証用で別のzabbixサーバをたて該当のホスト群のみを監視対象に実施しましたが、
同様に症状になります。キューの滞留は特になく、ネットワーク遅延の影響かと思いますが、RTT5ms程度でも対象ホストの近くにproxyなどを置かないと監視は厳しいでしょうか。またserver.conf agent.conf以外に別のTimeout値はございますでしょうか。

それともう一点のipmi agentの「first network error, wait for 15 seconds」ですが、こちらはRTT 1ms以下ですが、「first network error, wait for 15 seconds」が頻繁に記録されます。こちらはzabbix agent 系のアイテムの監視もしておりますが、そちらは「first network error, wait for 15 seconds」が発生致しません。

何卒よろしくお願い致します。

コメント表示オプション

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

遅延が5ms程度とのことですが、SNMPを利用して値を取得する際に
もその程度のレスポンスを維持できていますか?

ネットワーク機器のCPUは、あまり高性能ではないものが利用され
ている場合もあるので、pingの応答時間が早くても、SNMPの値取得
処理に時間がかかっている場合も考えられます。

snmpwalkコマンドなどを利用して、Zabbixサーバーを稼働させてい
るサーバーからSNMPを利用して値を取得するのにどのくらいの時間
がかかっているか試してみてください。
また、ネットワーク機器のCPU負荷状況も確認してみてください。

キューに溜まっていないとのことですし、Timeoutも30秒に設定さ
れているようですので、値の取得に30秒以上かかっているのでなけ
れば、対象の機器が正常に応答している限りnetwork errorは出な
いと思われます。

ipmi側もIPMIの機器に負荷がかかってしまっていることも考えられ
るので、値取得の頻度を下げてみてはいかがでしょうか。

ユーザー foot9839 の写真

ご返信ありがとうございます。

walkでデータを取得する際も他の機器(遅延のない環境)と体感上変わりはありません。
CPUの負荷状況ですが、どのスイッチも7%程度です。
アイテムの取得頻度も600秒まで間隔を広げて試してみてはいたのですが、やはり症状は改善されず打つ手が見つからない状況です。

ユーザー TNK の写真

今回の症状や環境に合致していないかもしれませんが、Juniperの
機器を監視していて、local-engine-idが重複している場合にもエ
ラーが発生することがあるようです。
https://www.zabbix.com/forum/showthread.php?t=41363

もしくは、SNMPでの値取得時のUDPのパケットがドロップされてし
まった場合などリトライ処理が不十分なのではないかとの指摘もあ
るようです。
https://support.zabbix.com/browse/ZBX-7426

ユーザー foot9839 の写真

TNK様

お世話になります。
情報のご提供ありがとうございます。
本日スイッチ側、zabbix側両方でパケットキャプチャを実施しましたが、UDPのドロップはされていないようでした。
また、zabbix側からのリクエストからスイッチ側からのレスポンスの返しはほぼすべてのアイテムが1秒以内に返ってきておりました。
snmpの値も正常に取得出来ておりますが、なぜかログ上にエラーとして出力されております。
zabbix側のバグでしょうか?

ユーザー KAZ の写真

foot9839さん

「first network error, wait for 15 seconds」ですが、Zabbix2.2.2ではzabbix-2.2.2\src\zabbix_server\poller\poller.cのget_values関数でNETWORK_ERRORなるとログに出力されるようです。

switch (items[i].type)
{
case ITEM_TYPE_ZABBIX:
case ITEM_TYPE_SNMPv1:
case ITEM_TYPE_SNMPv2c:
case ITEM_TYPE_SNMPv3:
case ITEM_TYPE_IPMI:
case ITEM_TYPE_JMX:
ZBX_STRDUP(port, items[i].interface.port_orig);
substitute_simple_macros(NULL, NULL, NULL, NULL, &items[i].host.hostid, NULL, NULL,
&port, MACRO_TYPE_COMMON, NULL, 0);
if (FAIL == is_ushort(port, &items[i].interface.port))
{
SET_MSG_RESULT(&results[i], zbx_dsprintf(NULL, "Invalid port number [%s]",
items[i].interface.port_orig));
errcodes[i] = NETWORK_ERROR;
continue;
}
break;
}

確認ですが、ログに「Invalid port number」は出力されていますか?
できればログレベル=4でZabbixサーバを動かして頂き、起動から初めに「first network error, wait for 15 seconds」でるまでのログを提示願えませんか?

ユーザー foot9839 の写真

KAZ様

お世話になります。
レベル4で取得したログを添付致します。
zabbix-server をリスタートした直後から「first network error, wait for 15 seconds」になります。ホスト名など一部伏せさせて頂いております。
ご了承ください。
テスト用のzabbixで実施しましたので上記のパラメータとは若干違う部分もございますが、Timeoutなど関係しそうなところ、OS,Zabbixのバージョンなどはすべて合わせております。
ログ上に「Invalid port number」は本番稼動しているZabbixにも出力されていませんでした。

https://support.zabbix.com/browse/ZBX-7426
の様な事象かなと思い現在試行錯誤しております。

何かお気づきの点ございましたらご教示頂ける喜びます。

ユーザー foot9839 の写真

お世話になります。

色々検証してみた結果ソースのzabbix-2.2.2\src\zabbix_server\poller\checks_snmp.cの中を変更し、インストールしたところ
「first network error, wait for 15 seconds」が発生しなくなりました。

・設定変更した値

session.retries = 0; /* number of retries after failed attempt */
/* (net-snmp default = 5) */
session.timeout = CONFIG_TIMEOUT * 1000 * 1000; /* timeout of one attempt in microseconds */
/* (net-snmp default = 1 second) */

session.timeoutの値を増やすことで改善致しました。

インストールした後でこのsession timeoutを変更することは可能でしょうか。
お解りになれば教えて頂けると喜びます。
何卒よろしくお願い致します。

ユーザー KAZ の写真
foot9839さん

返信遅くなりすいません。m(__)m

インストールした後でこのsession timeoutを変更することは可能でしょうか。
ソースをCONFIG_TIMEOUTをgrepしてみましたが変更できなさそうです。 2014.6.4 間違い訂正
zabbix_server.confのTimeoutがCONFIG_TIMEOUTです。1〜30秒まで設定できます。2014.6.4 間違い訂正
ユーザー foot9839 の写真

KAZ様

お世話になります。
ご回答ありがとうございます。
再度、環境を構築することに致します。
ちなみにzabbixの監視の設定(監視データは含まない)を一括で移行する良い方法はございますでしょうか。
GUIからエクスポートを掛けるとwebシナリオ、メンテナンスなど色々な項目を取りこぼしてしまうのですが、
コマンドなどでエクスポート可能でしょうか。
お解りになりましたらご教示頂けると喜びます。

ユーザー KAZ の写真

foot9839さん

同じバージョン&マイナーバージョンのZabbixならDBをダンプして、インポートすればOKです。
違うバージョン&マイナーバージョンの場合はエクスポート・インポートしかないと思います。

ユーザー foot9839 の写真

KAZ様

お世話になります。
やはりダンプしかないですよね。
承知しました。
色々ご教示頂きまして、誠にありがとうございます。

ユーザー KAZ の写真

foot9839さん

いまさらですが、間違いを訂正させて下さい。

ソースをCONFIG_TIMEOUTをgrepしてみましたが変更できなさそうです。

変更できます。

Zabbix_server.confのTimeoutがCONFIG_TIMEOUTです。

誠に申し訳ないです。m(__)m