公式のdockerで構築したZabbixからVMwareの監視ができない(Timeout was reached)
公式のDocker Composeを使ってZabbix環境を構築しました。
監視対象はvSphere7です(vCenterがない環境)
下記の内容で2ヶ月前くらいに試した際は問題なくHypervisorや仮想マシンの情報が取得できましたが、
全く同じ設定であるにも関わらず1ヶ月前くらいから急に取得できなくなりました。
具体的には以下の通りです。
※参考にしたサイトは、https://scribble.washo3.com/docker-zabbix6.html、です。
■環境
・使用したDocker ConposeファイルはZabbix公式のもの(https://github.com/zabbix/zabbix-docker)
・docker-compose_v3_ubuntu_mysql_latest.yamlをdocker-compose.yamlにリネーム
・env_vars/.env_srvのファイルの以下の部分をコメントインして一部修正
ZBX_STARTJAVAPOLLERS=5
ZBX_STARTVMWARECOLLECTORS=2
ZBX_VMWAREFREQUENCY=60
ZBX_VMWAREPERFFREQUENCY=60
ZBX_VMWARECACHESIZE=8M
ZBX_VMWARETIMEOUT=10
・上記設定後に、docker-compose.yamlがあるディレクトリでdocker-compose up -dを実行
・WebブラウザからZabbixのURLに接続し、デフォルト値を入力してログイン(Admin / zabbix)
・サイト(https://qiita.com/infra_buld/items/80a415c6f8ec6b7646f0)を参考にしてホスト(ESXi)を登録
ホストタブ
ホスト名:localhost.localdomain
表示名:esxi
テンプレート:VMware
ホストグループ:Virtual machines
インターフェース:127.0.0.1 接続方法 DNS ポート 10050
マクロタブ
{$VMWARE.PASSWORD}
値にESXiのパスワードを入力
{$VMWARE.URL}
値にhttps://<ESXiのIPアドレス>/sdk
{$VMWARE.USERNAME}
root
■エラーの内容
Zabbixの左のメニューの「監視データ」>「最新データ」で表示されるESXIをクリックすると、
VMware: Event log
VMware: Full name
VMware: Version
の3つしか表示されておらず(仮想マシンの情報も取得・表示されない)、また、3つとも「Timeout was reached」と表示されています。
ESXiのIPアドレス、ユーザ名、パスワードは確認しましたが間違えておりません。
また、zabbix serverのコンテナから対象のESXiへpingは通ります。
想定しうる原因と対応方法を教えてください。
TNK - 投稿数: 4754
ネットワーク的に到達できて、API呼び出し用のURLにも誤りがない
のであれば、エラーメッセージにある通り、タイムアウトが発生し
ている可能性が考えられます。
タイムアウトまでの時間を伸ばしてみてください。
仮想マシンなどの情報は、VMwareのAPIを呼び出して成功すれば、
自動的にディスカバリ処理を用いて登録され値が取得できるように
なるはずです。
hm - 投稿数: 14
ご返信ありがとうございます。
一度docker-compose downした後に、env_vars/.env_srvの以下の部分を修正して再びdocker-compose up -dしましたが状況はかわりませんでした。
ZBX_TIMEOUT=30
ZBX_VMWARETIMEOUT=30
■補足
上記の他に、こちらのサイト(https://ityorozuya.hatenablog.com/entry/2021/12/23/000000_1)を参考にzabbixのコンテナにcurlを入れようとしましたが、そもそもcurlをインストールできませんでした。
$ docker exec -it -u root <zabbixのコンテナID> bash
root@<zabbixのコンテナID>:/var/lib/zabbix# apt install curl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package curl
hm - 投稿数: 14
上記の他に、こちらのサイト(https://ityorozuya.hatenablog.com/entry/2021/12/23/000000_1)を参考にzabbixのコンテナにcurlを入れようとしましたが、そもそもcurlをインストールできませんでした。
自己解決です。
コンテナ上で apt updateした後にapt install curlするとcurlをインストールできました。
次にcurlをzabbixコンテナ上にインストールした後、下記のようにcurlコマンドを実行しました。
root@<zabbixのコンテナID>:/var/lib/zabbix# curl -k -l https://<ESXiのIPアドレス>/sdk
下記のようなエラーが発生しました。どこ(ログ等)を調査すればよろしいでしょうか?
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to <ESXiのIPアドレス>:443
TNK - 投稿数: 4754
Connection reset by peerが発生するのであれば、その通信経路内
にFirewallなどによって通信が遮断されている可能性があります。
ネットワークの構成やFirewallなどの設定をご確認ください。