Zabbix で「ホスト名を解決できませんでした: ホストを解決できませんでした:」

Zabbix で「ホスト名を解決できませんでした: ホストを解決できませんでした:」

Zabbix アクティブ エージェントの DNS とホスト名は正しいのに、Zabbix サーバーで「ホスト名を解決できませんでした: ホストを解決できませんでした: example.zabbixagent.com; 名前またはサービスが不明です」というメッセージが表示されます。これは Zabbix のバグですか、それとも構成ミスですか? 助けてください。

答え1

コマンドラインから名前をコピーして貼り付ける (再入力しない) ことでこの問題が解決する場合は、 を変更した可能性がありますresolv.conf。Zabbix の以前のバージョンでは、そのファイルを変更した後にデーモンを再起動する必要があります。Zabbix のバージョンを指定していないため、お使いのバージョンでも再起動が必要であると想定されます。

それでも問題が解決しない場合は、ホストのプロパティからホストの DNS をコピーし、サーバー ボックスから または同様の操作を実行して、ホスト設定を正しい名前に調整してくださいpingdig

答え2

答えはコメントによるユーザー427751:

問題は、その特定のホストに対して最近設定された新しいドメイン名で更新されていない外部 DNS 以外の何かにあることがわかりました。新しいドメイン名を追加し、DNS リストから古いものを削除した後、Zabbix サーバーはホスト解決の問題を解決できました。

答え3

質問には記載されていないので、おそらくそうではないと思いますが、zabbix が docker 内で実行されている場合、docker のネットワーク構成が原因でこのエラーが発生する可能性があります。

解決策は、dockerデーモン設定に明示的なDNSエントリを追加するのように:

{
        ...
        "dns":["208.67.222.222","208.67.220.220"],
        ...
}

これは私の場合はうまくいきました。代わりに、提案されているように追加のホストネットワークエントリを追加するといいと思います。この答えこれも機能するかもしれません:

services:
  mycontainer:
    ...
    networks:
      ...
      - bridge
...
networks:
  ...
  bridge:
    external: true

テストの際には、curlのドメイン名解決はpingよりも厳密であることに留意してください。例えば、

$ docker exec -ti mycontainer ping -c 3 myhost.example.com   # Works
$ docker exec -ti mycontainer curl myhost.example.com        # Fails

また、zabbix の Web モニタリングは curl を使用/依存しているため、「ping が正常に動作する」だけでは十分なテストとは言えません。

関連情報