zabbix agentのTCPポート枯渇について

サーバ:centos8 zabbix server 5.2.6
クライアント:Win2012R2 zabbix agent 5.2.6(2ではない)

掲題の件、クライアントサーバのTCPポートが枯渇する事象が発生しました。zabbix_agentd.logを確認したところ以下のログが記録されていました。

--------------------------------------------------------------------------------------------------------------------------------
75332:20210916:044551.131 no active checks on server [zabbix-server:10051]: host [Windows host] not found
75332:20210916:044751.631 active check configuration update from [zabbix-server:10051] started to fail (cannot connect to [[zabbix-server]:10051]: [0x00002747] システムのバッファー領域が不足しているか、またはキューがいっぱいなため、ソケット操作を実行できませんでした。)
75332:20210916:045651.708 active check configuration update from [zabbix-server:10051] is working again
75332:20210916:045651.712 no active checks on server [zabbix-server:10051]: host [Windows host] not found
75332:20210916:045851.269 active check configuration update from [zabbix-server:10051] started to fail (cannot connect to [[zabbix-server]:10051]: [0x00002747] システムのバッファー領域が不足しているか、またはキューがいっぱいなため、ソケット操作を実行できませんでした。)
--------------------------------------------------------------------------------------------------------------------------------
※「host [Windows host] not found」はzabbix_agentd.confでHostnameを設定していないため、2分毎に出力されています。

以下はzabbix agentが原因だったために出力されたメッセージでしょうか?
[0x00002747] システムのバッファー領域が不足しているか、またはキューがいっぱいなため、ソケット操作を実行できませんでした。

なお、zabbix agentのローカルTCPポート使用範囲確認のために、
CMDで「netstat -nao」コマンドを実行したところ、200ぐらいでした。これはzabbix agentのデフォルトなのでしょうか?

また、Windowsイベントログ(システムログ)を確認したところ、4時42分にイベント4231(Tcpip)が記録されていました。

「すべてのポートが使用中だったため、グローバル TCP ポート範囲から短いポート番号を割り当てる要求に失敗しました。」

切り分け手法や本件に関して何かご存じであれば、ご教示いただけると幸いです。

コメント表示オプション

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

以下はzabbix agentが原因だったために出力されたメッセージでしょうか?
[0x00002747] システムのバッファー領域が不足しているか、またはキューがいっぱいなため、ソケット操作を実行できませんでした。

Zabbixエージェントが出力しているログですが、リソースを確保し
ようとしてOSからエラーを受け取ったというログのようです。
リソースを確保しようとしただけなので、ZabbixエージェントがOS
をリソースを確保できないような状態にした原因であるかは、その
ログだけでは判断できません。

そのWindowsサーバー上で何を動かされているのかわかりませんが、
他のソフトウェアやサービスでソケットを多用している可能性も考
えられます。

なお、zabbix agentのローカルTCPポート使用範囲確認のために、
CMDで「netstat -nao」コマンドを実行したところ、200ぐらいでした。これはzabbix agentのデフォルトなのでしょうか?

それは、Zabbixエージェントが使用しているポート番号に絞った数
ということでよろしいでしょうか?
環境や監視設定に依存するのですが、恐らく、ソケットの状態が
「TIME_WAIT」となっているものが多いと思います。それらは、処
理が終了して、ソケットが解放されるのを待っている状態です。
時間の経過によって自動的に解放されます。

Windowsの設定にも依存するとは思いますが、デフォルトで1万以上
のポートのリソースは確保されているはずですので、200程度で他
のソケットが確保できなくなるようなことはまず考えられないと思
います。

他のソフトウェアやサービスによって、どの程度のポートが使用さ
れているかも確認してください。
それらのソフトウェアやサービスを稼働し運用するために、OSに設
定されている動的ポートの範囲で不足があるのであれば、拡張する
こともご検討ください。

ご参考:
https://atmarkit.itmedia.co.jp/ait/articles/1609/23/news001.html
https://docs.microsoft.com/ja-JP/troubleshoot/windows-server/networking/...

ユーザー unda88 の写真

TNK さん

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

>>Zabbixエージェントが出力しているログですが、
>>リソースを確保しようとしてOSからエラーを受け取ったというログのようです。

Zabbixエージェント起因ではないこと安心しました。ありがとうございます。

>>それは、Zabbixエージェントが使用しているポート番号に絞った数
>>ということでよろしいでしょうか?
>>環境や監視設定に依存するのですが、恐らく、ソケットの状態が
>>「TIME_WAIT」となっているものが多いと思います。それらは、処
>>理が終了して、ソケットが解放されるのを待っている状態です。
>>時間の経過によって自動的に解放されます。

失礼しました。ZabbixエージェントのTCPセッションに絞った数です。
エージェントのアイテムとトリガーの合計がだいたい200ぐらいなので、
その分のTCPセッションを張っているのかと考えています。
全て「TIME_WAIT」でした。勉強になりました。ありがとうございます。

サーバのクローンを作成し、クローズド環境で
その他システムを含め改めてTCPセッション数の推移を調査したいと思います。