このページでは、Windows 10 (64bit)上でZabbixエージェントをソースからビルドする方法を説明します。
これらの手順は、Visual Studio 2022をサポートするWindowsバージョンに適用されます。
Zabbixエージェントのビルドには以下が必要です:
Zabbixエージェントは、以下のいずれかの方法でビルドできます:
監視のニーズによっては、追加のライブラリが必要になる場合があります。詳細については、要件を参照してください。
ビルドプロセスを開始する前に、以下の点にご注意ください:
C:\Zabbix
に作成することをお勧めします。ただし、コンパイル済みのコンポーネントはC:\Program Files\Zabbix\x64
にインストールする必要があります。このセクションでは、vcpkg を使用して Zabbix エージェントをビルドする手順を説明します。vcpkg は、C++ プロジェクトとの依存関係管理と統合を簡素化するパッケージ マネージャーです。
1. Build Tools for Visual Studio 2022 をダウンロードしてインストールします。
インストール時に、C++ によるデスクトップ開発 ワークロードを選択してください。このワークロードには、vcpkg を使用してエージェントをビルドするために必要なツールが含まれています。
2. vcpkg を初期化し、Zabbix エージェントのビルドに必要な依存関係をインストールします(時間がかかる場合があります)
cd C:\Zabbix
vcpkg new --application
vcpkg add port pcre2
vcpkg add port openssl
vcpkg install --triplet x64-windows-static --x-install-root="C:\Program Files\Zabbix\x64"
3. Zabbix ソースアーカイブ をダウンロードし、C:\Zabbix\zabbix-7.0.0
に解凍します。
4. Zabbix ビルドディレクトリ (C:\Zabbix\zabbix-7.0.0\build\win32\project
) に移動し、以下の build.bat
スクリプトを作成します。 OpenSSL と PCRE2 がインストールされているディレクトリを正しく指定してください。
:: vcpkg のインストールパスを設定します。
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static
:: ビルドプロセスを実行します。
nmake -f Makefile CPU=AMD64 ^
PCRE2INCDIR="%vcpkg%\include" ^
PCRE2LIBDIR="%vcpkg%\lib" ^
TLS=openssl ^
TLSINCDIR="%vcpkg%\include" ^
TLSLIBDIR="%vcpkg%\lib" ^
LIBS="$(LIBS) Crypt32.lib" ^
all
5.以下のスクリプトを実行して、Zabbix エージェントをコンパイルします。
コンパイル後、Zabbix コンポーネントのバイナリは C:\Zabbix\zabbix-7.0.0\bin\win64
に保存されます。 Zabbix エージェントの設定ファイルは C:\Zabbix\zabbix-7.0.0\conf
に保存されます。
エージェントを実行するには、zabbix_agent.exe
とその設定ファイルを専用のフォルダ(例:C:\Zabbix\agent
)にコピーし、エージェントを実行します。
mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.0.0\conf\zabbix_agent.win.conf C:\Zabbix\agent\
C:\Zabbix\agent\zabbix_agent.exe -c C:\Zabbix\agent\zabbix_agent.win.conf
この Zabbix エージェントのビルド方法は、ビルド環境を完全に制御する必要があるユーザー、または vcpkg の使用 が不可能な制限された環境にいるユーザーに適しています。
このセクションでは、必要なビルドツールと依存関係があるもの (Perl、OpenSSL、PCRE2) をインストールし、エージェントをコンパイルする手順を含む、Zabbix エージェントの手動ビルド手順について説明します。
1. Build Tools for Visual Studio 2022 をダウンロードしてインストールします。 インストール時に、C++ によるデスクトップ開発 ワークロードを選択してください。このワークロードには、エージェントを手動でビルドするために必要なツールが含まれています。
TLS サポートなしで Zabbix エージェントをコンパイルするには、PCRE2 のインストール セクションに進んでください。
1. Strawberry Perl (MSI インストーラーとして入手可能) をダウンロードしてインストールします。 インストール中は、インストールフォルダとして C:\Zabbix\Strawberry
を指定してください。
2. Text::Template
Perl モジュールをインストールします。
3. Strawberry Perl のインストール中に、Netwide Assembler (NASM; OpenSSL のコンパイルに必要) がコンパイルされていることを確認します。
NASM がコンパイルされていない場合は、手動でインストールしてください。詳細については、NASM のドキュメント を参照してください。
4. OpenSSL ソースアーカイブ をダウンロードし、C:\Zabbix\openssl-3.5.0
に解凍します。
5.解凍したディレクトリに移動し、OpenSSL を設定します。例:
cd C:\Zabbix\openssl-3.5.0
perl VC-WIN64A を設定 no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix="C:\Program Files\Zabbix\x64\OpenSSL" --openssldir="C:\Program Files\Zabbix\x64\OpenSSL"
Windows 上で Zabbix エージェントをコンパイルする際に、OpenSSL 用にカスタムディレクトリ (例: C:\zabbix
または C:\openssl-64bit
) を選択した場合は、管理者以外のユーザーによるこのディレクトリへの書き込み権限を必ず無効にしてください。 そうでない場合、エージェントは権限のないユーザーが変更できるパスからSSL設定をロードするため、潜在的なセキュリティ脆弱性が生じます。
no-shared
オプションは、libcrypto.libおよびlibssl.lib OpenSSL静的ライブラリを自己完結型にするため、Zabbixバイナリには外部DLLを必要とせずにOpenSSLが含まれます。 つまり、ZabbixバイナリはOpenSSLライブラリのない他のWindowsマシンにコピーできます。ただし、新しいOpenSSLバグ修正バージョンがリリースされた場合、Zabbixエージェントを再コンパイルする必要があります。no-shared
オプションがない場合、Zabbixは実行時にOpenSSL DLLに依存します。 つまり、OpenSSLのアップデートではZabbixエージェントの再コンパイルは不要ですが、他のマシンにコピーする場合はOpenSSL DLLもコピーする必要があります。OpenSSL のその他の設定オプションの詳細については、OpenSSL ドキュメント を参照してください。
6. OpenSSL をコンパイルし、テストを実行します(時間がかかる場合があります)。
管理者権限なしでテストを実行してください。管理者権限がない場合、予期しない結果やセキュリティリスクが発生する可能性があります。 一部のテストが失敗した場合は、OpenSSL ドキュメント を参照してトラブルシューティングしてください。
nmake
nmake test
...
すべてのテストが成功しました。
ファイル数: 325、テスト数: 3101、ウォールクロック時間: 822 秒 (ユーザー使用率 4.81 + システム使用率 0.81 = CPU 使用率 5.62)
結果: 合格
7. OpenSSL をインストールします:
ソフトウェアコンポーネント(ライブラリ、ヘッダーファイル、ドキュメントは含まない)のみをインストールするには、nmake install_sw
を使用します。
PCREまたはPCRE2ライブラリをダウンロードします (https://pcre.org/)。
ディレクトリE:\pcre2-10.39に解凍します。
CMakeをhttps://cmake.org/download/からインストールします。インストール中に次を選択し、cmake\bin がパス上にあることを確認してください (テスト済みバージョン3.9.4)。
新しい空のビルドディレクトリ、できればソースディレクトリのサブディレクトリを作成します。例: E:\pcre2-10.39\build。
コマンドラインウィンドウを開きます。例えばx64 Native Tools Command Prompt for VS 2017を使用し、そのシェル環境からcmake-guiを実行します。エラーが発生する可能性があるため、WindowsのスタートメニューからCmakeを起動しないでください。
ソースディレクトリとビルドディレクトリにそれぞれE:\pcre2-10.39とE:\pcre2-10.39\buildを入力します。
"Configure"ボタンをクリックします。
このプロジェクトのジェネレーターを指定する場合は、"NMake Makefiles"を選択します。
新しい空のインストールディレクトリを作成します。例: E:\pcre2-10.39-install。
GUIにはいくつかの設定オプションがリストされます。次のオプションが選択されていることを確認してください。
もう一度"Configure"をクリックします。隣接する"Generate"ボタンがアクティブになるはずです。
"Generate"をクリックします。
エラーが発生した場合は、CMakeビルドプロセスを繰り返す前にCMakeキャッシュを削除することをお勧めします。CMake GUI では、"File > Delete Cache"を選択してキャッシュを削除できます。
ビルドディレクトリには、使用可能なビルドシステムMakefileが含まれているはずです。
コマンドラインウィンドウを開きます。例えばx64 Native Tools Command Prompt for VS 2017を使用し、上記のMakefileに移動します。
NMakeコマンドを実行する。
E:\pcre2-10.39\build> nmake install
次の手順は、MS Windows 10 (64bit)上のソースからZabbixをコンパイルするのに役立ちます。 TLSサポートの有無にかかわらずZabbixをコンパイルする場合、唯一の大きな違いはステップ4です。
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent --enable-ipv6 --prefix=`pwd`
make dbschema
make dist
Windowsマシン上で、アーカイブをコピーして解凍します。例: zabbix-7.0.0.tar.gz。
ソースがe:\zabbix-7.0.0にあると仮定します。コマンドラインウィンドウ、例えばx64 Native Tools Command Prompt for VS 2017を開き、次へ移動します。
E:\\zabbix-7.0.0\\build\\win32\\project
E:\zabbix-7.0.0\build\win32\project> nmake /K PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib
E:\zabbix-7.0.0\build\win32\project> nmake /K -f Makefile_get TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib
E:\zabbix-7.0.0\build\win32\project> nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include TLSLIBDIR="C:\OpenSSL-Win64-111-static\lib" PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib
E:\zabbix-7.0.0\build\win32\project> nmake /K -f Makefile_agent TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib