VMware上のZabbixServerから、HostにしているWindows 10 ProのZabbix Agentの監視データが取得できない

以前、3925「Windows 10の監視設定ができません。「Get value from agent failed: ZBX_TCP_READ() failed: [104] Connection reset by peer」ということで質問していて自己解決した件とほぼ同じ内容ですが、再びうまく行きません。

【質問内容】
 Windows 10 Pro上にインストールした、VMwareWorkstation 14 に作成したVM CentoOS 7.5(2018/04) 設定した Zabbix Server (3.0LTS) [IP address 192.168.0.51] において、ホストOSであるWindows 10Proの監視の設定がどうしてもできません。
状況は、同WIndows上のGoogle Chromeから見ている画面で、[Configuration]=>[Hosts]を選んだ状態で、Availabilityの部分、
[ZBX][SNMP][JMX][IPMI]の [ZBX]が赤く表示されたままで、

「Get value from agent failed: ZBX_TCP_READ() failed: [104] Connection reset by peer」

というメッセージが表示されています。念のために、ログも見てみました。

13248:20180831:201828.238 failed to accept an incoming connection: connection from "192.168.0.51" rejected, allowed hosts: "127.0.0.1"

のようなエラーが連続しております。現在の自宅評価環境は、以下の通りですが、他のWindowsも設定が難航したものも
ありましたが本件に1台を残して全て正常に監視できるようになりました。

【システムの状況】
Network Address (192.168.0.0/24)
実機Windows 10 Pro (.247) ─┬─ VMwareWS14(2)───仮想Windows 7 Pro (.246)
実機Windows 10 Pro (.248) ─┼─ VMwareWS14(1)─┬─仮想CentOS(DNS) (.2)
実機Windows 10 Pro (.249) ─┤          ├─仮想CentOS(Zabbix Server 3.0LTS) (.51)
実機Windows 10 Pro (.250) ─┤
実機Windows 7 Ult (.251)  ─┘

 (ZabbixのVersionは、ServerもAgentも全て 3.0LTSです。)

 前回3925では、設定がうまくいっている他の実機Windows の設定ファイルと、失敗しているホスト機の違いを見比べて揃えたら
うまくいきましたので、それ以上原因を追及することなく質問を取り下げました。
 今回も、それに倣って設定の共通部分を揃えてみましたがうまく行きませんでしたので、上のようにログを添えて質問させて
いただくことにしました。

・3645に似た報告がありますがOSがLinuxで状況もzabbixのVersion Upなので理由は異なるのかなと考えています。
・957のようなこと(監視設定やconfigファイルをホスト名で指定したり、IPに戻してみたり)も試して見ました。
・他に、https://networkengineer.it-study.info/zabbix/troubleshooting20170103.html で指摘があるような、
 「Firewallで10050だけでなく10051も解放する」などいろいろ試して見ました(別のうまくいっていないものが
 2台これで解決しましたがなぜ10051なのか理由は不明のまま)がホストOSのWindows機はNGのままでした。

コメント表示オプション

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

Zabbixエージェントのログに出力されていることが原因ではないで
しょうか?

直訳すれば、

 192.168.0.51からの接続を拒否した。
 許可されているのは127.0.0.1。

です。

Windows 10 Professional上のzabbix_agentd.confのServerにどの
ように設定していますか?
コメントアウトしたままでデフォルトの設定値(127.0.0.1)を使う
ようにするか、明示的に127.0.0.1を指定していませんか?

192.168.0.51から監視したいのであれば、ServerにそのIPを記述し
てください。

ユーザー fess1965 の写真

>TNKさま
コメントありがとうございます。
VmwareWS14のHostOSであるWindows10Proに設定したzabbixの設定ファイル zabbix_agentd.win.conf で有効な行は次の通りです。

LogFile=C:\zabbix_agentd.log
DebugLevel=4
Server=192.168.0.51
ServerActive=192.168.0.51
Hostname=philadelphia.crescent.local (これはWindows10Proに名付けて、仮想CentOS7上のDNSサーバで名前解決もできています.)

既に同じ設定で過去に(3925で)監視できた実績もあったので謎が深まっています。

ユーザー TNK の写真

そのように設定されているのであれば、ログメッセージと一致して
いません。
設定ファイルを変更したらZabbixエージェントの再起動が必要です
ので、Zabbixエージェントのサービスを再起動してみてください。

再起動しても反映されないのであれば、Zabbixエージェントがその
設定ファイルを読み込んでいないのかもしれません。
Zabbix Agentサービスのプロパティを確認して、実行ファイルのパ
ス内に想定している設定ファイルを読み込むよう登録されているか
を確認してみてください。

ユーザー fess1965 の写真

>TNK様
たびたびありがとうございます。

Windows 10 pro(Philadelphia)のサービス内でプロパティを確認したところ次のようになっていました。

"C:\Program Files\Zabbix_Agent\zabbix_agentd.exe" --config "C:\Program Files\Zabbix_Agent\zabbix_agentd.win.conf"

これはコマンドで流し込んだものと合致していて意図したものです。もしかしたら内部的におかしくなって
いるのかもしれませんね。一旦殺して再度インストールしたら解決するかもしれませんが、他に見た方が
いい場所はないでしょうか?

ユーザー fess1965 の写真

 ZabbixAgentを停止、削除、その後、故意に設定ファイルを削除して、別のフォルダconfを作成して、
そちらに設定を実施、再度、ZabbixAgentを配置、起動(新しいフォルダの設定を指定)とやっても同じく
ダメでした。

 Serverは関係無いと思いつつ、別のホストPC(実機)上のVMwareWorkstationに移しても状況は
変わらずでした。つまり、Zabbixが乗っているServerのHypervisorのホストOSであることに関係は
ないようで、エラーメッセージも

 「Get value from agent failed: ZBX_TCP_READ() failed: [104] Connection reset by peer」

ですので、やはり、何かが原因で、Windows上での動作が言うことを聞かなくなっているのかな?
と思っています。

ユーザー TNK の写真

Windows上のFirewallの設定を確認してみてください。
ZabbixサーバーからZabbixエージェントにアクセスできるよう設定していますか?

ユーザー fess1965 の写真

>TNKさま
ありがとうございます。
Firewallは一番最初の段階で、TCPの10050と、10051を解放しています。
Firewall自体を一時解除してもダメだったのでFirewallの設定がネックではないかなと考えています。

ユーザー TNK の写真

現時点の状態を具体的かつ正確お伝えください。

Firewallの設定に問題がなく、ZabbixサーバーからZabbixエージェ
ントに対して、デフォオルトであれば、ポート番号10050で接続で
きるのであれば、Connection reset by peerのエラーにはなりませ
ん。

また、

 failed to accept an incoming connection: connection from "192.168.0.51" rejected, allowed hosts: "127.0.0.1"

のエラーは、zabbix_agentd.confのServerの設定に誤りがあります。

ZabbixサーバーやZabbixエージェントのログを確認して、現時点で
何の問題が発生しているのかを再確認してください。
別の確認方法として、Zabbixサーバーを稼働しているサーバーから
zabbix_getコマンドを使用して、何らかの値をエージェントから取
得できるかも確認してみてください。

ユーザー fess1965 の写真

>TNKさん
zabbix_getで何かを取得してみることを進められたので agent.hostname で実施してみました。

◎ 監視に成功している ホスト ではホスト名が得られましたが、
[root@livzab1 livzab1_80909_01_setZabbix]# zabbix_get -s 192.168.0.247 -p 10050 -k agent.hostname
newcastle.crescent.local

× 監視に失敗している ホスト ではGUIやログに出力されていたエラーメッセージがここでも出ました。
[root@livzab1 livzab1_80909_01_setZabbix]# zabbix_get -s 192.168.0.248 -p 10050 -k agent.hostname
zabbix_get [2846]: Get value error: ZBX_TCP_READ() failed: [104] Connection reset by peer
zabbix_get [2846]: Check access restrictions in Zabbix agent configuration

Zabbix Agentの設定で制限がないか(vCheck access restrictions in Zabbix agent configuration)
とのことですが、これでは原因がわからないので、再起動した直後からのログをもう少し
全体を見直してみますと、

9244:20180909:182636.178 using configuration file: C:\Program Files\ZabbixAgent\zabbix_agentd.win.conf
9244:20180909:182636.180 agent #0 started [main process]
11488:20180909:182636.181 agent #1 started [collector]
10344:20180909:182636.181 agent #3 started [listener #2]
1244:20180909:182636.182 agent #2 started [listener #1]
6328:20180909:182636.182 agent #5 started [active checks #1]
7556:20180909:182636.183 agent #4 started [listener #3]
6328:20180909:182637.187 active check configuration update from [127.0.0.1:10051] started to fail (cannot connect to [[127.0.0.1]:10051]: Connection refused.)
7556:20180909:182706.990 failed to accept an incoming connection: connection from "192.168.0.51" rejected, allowed hosts: "127.0.0.1"
1244:20180909:182719.915 failed to accept an incoming connection: connection from "192.168.0.51" rejected, allowed hosts: "127.0.0.1"

見当違いかもしれませんが、zabbix_agentからつなごうとしているのは自分自身のポート10051から、自分自身の10051のポート
につなごうとしていると言っているかのように見えます。
cannot connect to 自分じゃなくて、本当は can connect to 192.168.51(zabbixサーバ)であって何も表示されないで欲しいの
ですが。

有効な設定が

LogFile=C:\zabbix_agentd.log
DebugLevel=4
Server=192.168.0.51
ServerActive=192.168.0.51
Hostname=philadelphia.crescent.local

の5行で、監視がうまくいっている 192.168.0.247 との違いが、ホスト部だけでnslookupやpingの確認で名前解決もできているようです。

philadelphiaのファイアウォールは外してもZabbix監視が有効になりませんでしたが、初期状態に戻して再度ポートを設定してみましたが
状況は変わらずです。telnetやsshが扱いにくいので、nmapでWindows10でポートが有効かも見てみました。

監視できないホスト(philadelphia)
[root@livzab1 ~]# nmap -p 10050-10051 192.168.0.248

Starting Nmap 6.40 ( http://nmap.org ) at 2018-09-09 19:04 JST
Nmap scan report for philadelphia.crescent.local (192.168.0.248)
Host is up (0.00014s latency).
PORT STATE SERVICE
10050/tcp open unknown (ポートは空いている)
10051/tcp filtered unknown
MAC Address: D0:17:C2:9D:02:88 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 1.26 seconds

監視できているホスト
[root@livzab1 ~]# nmap -p 10050-10051 192.168.0.247

Starting Nmap 6.40 ( http://nmap.org ) at 2018-09-09 19:04 JST
Nmap scan report for newcastle.crescent.local (192.168.0.247)
Host is up (0.0011s latency).
PORT STATE SERVICE
10050/tcp open unknown
10051/tcp filtered unknown
MAC Address: 30:9C:23:0D:5C:D6 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 1.26 seconds
[root@livzab1 ~]#

VMwareWorkstation上のVM(CentOS7.5 もしくは、Rhel7.5 Zabbix Server)はBridge接続で、物理ネットワークの状態を複製するという
設定方法で臨んでいます。故意にチェックを外したりしても確認してみましたが関係はなさそうでした。

さらに、次のようなサイトでの報告も見つけましたので、私の環境は、NATやVPNではないですが、
https://networkengineer.it-study.info/zabbix/troubleshooting20161231.html

ログメッセージで、毎回出ている
failed to accept an incoming connection: connection from "192.168.0.51" rejected, allowed hosts: "127.0.0.1"
を上のサイトの対処法に当てはめて、configファイル内の当該箇所を

Server=127.0.0.1,192.168.0.51

のように(あるいはその逆も)書いて再起動してみましたが、再起動後最初にログの出力される内容は、
active check configuration update from [127.0.0.1:10051] started to fail (cannot connect to [[127.0.0.1]:10051]: Connection refused.)
なので根本的に改善しないようです。

ユーザー TNK の写真

zabbix_agentd.win.confのServerやServerActiveの設定が読み込め
ていないように見受けられます。

一度、Zabbixエージェントをアンインストールして、UACなどの影
響を受けないよう、

 C:\ZabbixAgent

などとProgram Files以下以外のディレクトリにZabbixエージェン
トを配置してインストールしてみてください。
zabbix_agentd.win.confは、新規に作成して

LogFile=C:\zabbix_agentd.log
Server=192.168.0.51
ServerActive=192.168.0.51
Hostname=philadelphia.crescent.local

だけにしてみてください。

ユーザー fess1965 の写真

>TNKさま
 アドバイスいただいた内容を試してようやく監視に成功しました。

そもそもまず不思議な点が一点起きました。
c:\Program files\zabbixAgent内に配置していたファイルを丸ごと
c:\zabbix_agent (すいません。少し名前が違いますが)にコピーをしてしまいました。
この時点で言われたとおり正確にはしていませんが、zabbix_agentd.win.confファイル
を開いて変更しようとしたときに、ServerやServerActiveが127.0.0.1に戻っていました。
元のファイルを見に行ったら変更した内容になっています。これは明らかにおかしい
現象でWindowsの問題かな(!?)と思います。

ただ私の作業にも致命的なしかし極めて単純な問題がありそれに気付けないでいました。

c:\Program Files 直下での作業時は、zabbix_agentというフォルダにしていたつもりで
したが、実際にはZabbixAgentというフォルダ名になっていました。インストールする際に、
毎回参考にしているサイト
 https://www.server-world.info/query?os=CentOS_7&p=zabbix30&f=8

にコマンド

zabbix_agentd.exe --config "C:\Program Files\Zabbix_Agent\zabbix_agentd.win.conf" --install

を取りに行っていました。これではうまくいく筈がありません。
ちなみにうまく行っていた他のサーバのフォルダは、zabbix_agentとなっていたので直接の
原因はまたもケアレスミスということになると思います。

 このサーバの内部の状態は怪しいかもしれないんで、自分の設定方法ではなく、TNKさまの
ご指定の内容のままで当面は評価していくことにしました。

 アンダースコアは習慣的に入れているのですが、キーボードを多言語にしているので
たまに日本語からずれてしまったときに失敗したことに気付けないでいることがあるので
開発用のマシンは単言語で作業するようにしました。

長らく、御指導いただきありがとうございました。また、乱文すみません。