2019の10日目の記事です。Zabbix関連のニュースをご覧になっていらっしゃる方は、「ZabbixエージェントがGo言語で書かれるようになった」とのニュースがあったことを覚えていらっしゃると思います。4.4リリース時点では、旧来のC言語で記述されたZabbixエージェントが無くなったわけではなく、旧来のZabbixエージェントとZabbixエージェント2と呼ばれるGo言語で記述されたものの2つのエージェントが存在しています。現時点のリリースでは、Zabbixエージェント2は実験的(experimental)なリリースという状態です。先日のオープンソースカンファレンスでもご紹介しましたが、その概要とインストールについてまとめておこうと思います。Zabbixエージェント2とはZabbixエージェント2というのは、既存のZabbixエージェントをGo言語を使用して書き直したエージェントです。C言語の実装をそのままGo言語に移植したのではなく、設計の見直しを行って、これまでの課題を解決することも視野にいれて開発されました。2019での説明では、旧来の以下の課題があると考えているようです。高速な拡張にはC言語での実装が必要で敷居が高いアクティブチェックでは監視間隔のカスタマイズに対応していないアクティブチェックのプロセスがサーバーに対して1つしかない(処理並列度が低い)他のプロセスやシステムからのイベントをエージェントで受け取ってサーバーに通知するような機能が無い課題に対する対応状況それらの課題に対して、現時点は以下のような改善が行われているそうです。AGENT」もご参照ください。Zabbixエージェント2のインストールそれでは、早速使ってみましょう。8)用であれば、公式のリポジトリからZabbixエージェント2のパッケージを取得できるので、Zabbixエージェントの代わりに、Zabbixエージェント2をインストールします。Zabbixエージェントをインストール済みであったならば、一度アンインストールします。zabbix-agentZabbixエージェント2をインストールするには、以下のようにコマンドを実行します。zabbix-agent2Zabbixエージェント2の設定ファイルである/etc/zabbix/zabbix_agent2.conf内のHostnameやServer、ServerActiveなどの値が環境に合っているか確認します。基本的な設定は、以前のZabbixエージェントと同様です。将来的には、設定項目が追加されて、より柔軟な監視設定が可能となると思われます。マニュアルを見ると、Zabbixエージェント2では、従来のZabbixエージェントの設定とは以下の部分が異なっているようです。削除されたもの:AllowRootHostInterfaceHostInterfaceItemLoadModuleLoadModulePathStartAgentsUser追加されたもの:ControlSocketPluginsStatusPort追加されたものは、-Rオプションでのランタイムコマンド受付用ソケット、プラグインごとの設定追加、エージェントの状態を返却するためのポート番号などです。詳細は、マニュアルをご参照ください。設定が確認できたら、エージェントの起動と自動起動の設定を行います。旧来のZabbixエージェントと比較すると、設定から削除されていることからもお分かりの通り、ダイナミックライブラリを使用した機能拡張を使用することができません。AllowRootとUserを指定してrootユーザーで起動することもできません。プラグインを追加して新しい監視対象や監視方法に対応するためには、プラグインのソースを追加してエージェントをビルドし直すことが必要です。機能として、プラグインごとにタイムアウトの設定が可能になるような機能構成になってはいるようなのですが、現時点ではタイムアウトの設定としては、旧来のTimeoutのみとなっているように見えます。この部分は、正式リリース時には改善されるでしょう。4.4リリース時点では、UNIX系OSのみの対応となっています。Windows版は開発中だそうです。C言語で記述されたライブラリにも一部依存しているので、Go言語だけで記述されたものではありません。5.0で正式なリリースとなり、Windowsプラットフォームへも対応するそうです。5.0のロードマップを近日公開予定とのことですので、次バージョンがどうなるか興味のある方はウォッチしておいてください。明日は、誰でしょう?どなたかよろしくお願いします。