php エディターの Yuzi が、今日は Zabbix Agent 2 に関する質問を共有します。あるユーザーは、公式の指示に従ってテスト プラグインを処理しようとしたときにエラーが発生しました。この問題はプラグインの適切な機能に影響を与える可能性があるため、この問題を解決する方法を検討します。見てみましょう!
私は zabbix エージェント 2 の可能性を模索し始め、公式プラグイン作成ガイドに記載されているように段階的にテスト プラグインを作成することにしました。
すべての手順を完了した後、zabbix エージェントは何も実行しようとせず (-h オプションを除く)、次のエラーが表示されます:
zabbix_agent2[10046]: エラー: プラグインを登録できません: エージェントのバージョン strconv.atoi を解析できません: '6.0.13' を解析しています: 無効な構文
これをubuntu 22.04で実行しました。
zabbix エージェント 2 バージョン: 6.0.14。
go バージョン: go1.18.1 linux/amd64
私は apt-get を通じて zabbix エージェント 2 のみをインストールしました。
指示に従ってすべてを行いました:
/etc/zabbix/zabbix_agent2.d/plugins.d
zabbix_agent2 -t myip
そして...機能せず、間違った解析プロキシのバージョンに関するエラーがスローされます。
strconv.atoi
は、zabbix エージェント 2 自体のコード内で何らかの形で間違って処理されていると思いますが、コード エディターを使用してプロジェクト全体を確認したところ、特筆すべき点は見つかりませんでした。
また、zabbixエージェントのバージョンが6.0.14、プラグイン通信プロトコルのバージョンが6.0.13というのも不思議です。なぜプロトコルのバージョンをプロキシのバージョンとして偽装しようとするのか理解できません。
それでは、この問題についてご意見がございましたら、ぜひ表明していただきたいと思います。よろしくお願いします。
解決策を見つけました! (実際、私の職場の同僚がこれを発見しましたが、要点ではありません)
その理由は、ファイルsrc/go/plugins/external/broker.go
にあります。リクエスト構造に文書化されたロジックは、このファイル内で数回変更されました。 Summer '22 では、strconv.Atoi
を介して Zabbix エージェントのバージョン属性を文字列から整数に解析する方法が変更されました。
しかし、2023 年 1 月に、プロキシ バージョン属性が削除され、strconv.Atoi
によって解析され、プロトコル バージョン属性が追加されました。そのため、プロトコルのバージョンをプロジェクトのバージョンとして偽装しようとします。
Plugin Support
パッケージのplugin/container/handler.go
ファイル内のcheckVersion
メソッドも変更されました。これは、プロトコルのバージョン。
つまり、問題は新しい Zabbix Agent 2 と古いプラグイン サポート パッケージにあります。
Zabbix Agent 2 にバージョン 6.4 を使用し、git.zabbix.com/ap/plugin-support/plugin
にバージョン 1.2.2 を使用している場合は、すべて正常に動作します。
以上が公式の指示に従ってテストプラグインを処理しようとすると、Zabbix Agent 2 がエラーをスローしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。