2 WindowsでのZabbixエージェント2のビルド
概要
このセクションでは、Zabbixエージェント2 (Windows)をソースコードからビルドする方法を説明します。
vcpkg を使用した Zabbix エージェント 2 のビルド
このセクションでは、C++ プロジェクトにおける依存関係の管理と統合を簡素化するパッケージマネージャー vcpkg を使用して、Zabbix エージェントをビルドする手順を説明します。
1. Build Tools for Visual Studio 2022 をダウンロードしてインストールします。
インストール時には、vcpkg パッケージマネージャーを含む Desktop development with C++ ワークロードを必ず選択してください。
2. Go をダウンロードしてインストールします(MSI インストーラーを利用できます)。
インストール時には、インストール先フォルダーとして C:\Zabbix\Go を指定してください。
3. Microsoft Visual C ランタイムライブラリを使用する MinGW ディストリビューション をダウンロードします。例:
- 64 ビットビルド用:
x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z - 32 ビットビルド用:
i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z
その後、これを C:\Zabbix\mingw64 に展開します(32 ビットビルドの場合は C:\Zabbix\mingw32)。
4. vcpkg を初期化し、Zabbix エージェント 2 のビルドに必要な依存関係をインストールします(これにはしばらく時間がかかる場合があります)。
cd C:\Zabbix
set PATH=%PATH%;"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\vcpkg"
vcpkg new --application
vcpkg add port pcre2
vcpkg add port libiconv
vcpkg add port openssl
# For 64-bit builds:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64
# For 32-bit builds:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86
5. Zabbix ソースアーカイブ をダウンロードし、C:\Zabbix\zabbix-7.4.0 に展開します。
6. Zabbix のビルドディレクトリ (C:\Zabbix\zabbix-7.4.0\build\mingw) に移動し、以下の build.bat スクリプトを作成します。
- 64 ビットビルド用:
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%
:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x64\x64-mingw-static"
:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"
:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
- 32 ビットビルド用:
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%
:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"
:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"
:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
7. スクリプトを実行して Zabbix エージェント 2 をコンパイルします。
build.bat
コンパイル後、Zabbix エージェント 2 のバイナリは C:\Zabbix\zabbix-7.4.0\bin\win64(64 ビットビルドの場合)または C:\Zabbix\zabbix-7.4.0\bin\win32(32 ビットビルドの場合)に配置されます。
Zabbix エージェント 2 の設定ファイルは C:\Zabbix\zabbix-7.4.0\src\go\conf にあります。
エージェントを実行するには、zabbix_agent2.exe とその設定ファイルを専用フォルダー(例: C:\Zabbix\agent2)にコピーしてから、エージェントを実行します。
mkdir C:\Zabbix\agent2
# For 64-bit builds:
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
# For 32-bit builds:
copy C:\Zabbix\zabbix-7.4.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.d C:\Zabbix\agent2\zabbix_agent2.d\
C:\Zabbix\agent2\zabbix_agent2.exe -c C:\Zabbix\agent2\zabbix_agent2.win.conf
必要に応じて、Zabbix エージェント 2 の ロード可能プラグイン のコンパイルに進んでください。
Zabbix エージェント 2 のロード可能なプラグインのコンパイル
1. お使いの Zabbix エージェント 2 のバージョンに一致する Zabbix プラグインのソース(例: zabbix-agent2-plugin-postgresql-7.4.0.tar.gz)をダウンロードし、C:\Zabbix に展開します。
プラグインをインストールする前に、README ファイルを確認してください。 固有の要件やインストール手順が記載されている場合があります。
2. 展開したプラグインディレクトリに移動し、プラグインをコンパイルします。
cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-7.4.0
# 64 ビットビルドの場合:
mingw32-make ARCH=AMD64
# 32 ビットビルドの場合:
mingw32-make ARCH=x86
コンパイル後、Zabbix エージェント 2 プラグインのバイナリとその設定ファイルは、同じプラグインディレクトリに配置されます。
プラグインの実行ファイルは、Zabbix エージェント 2 からロード可能である限り、任意の場所に配置できます。 プラグイン設定ファイルで、プラグインバイナリへのパスを指定してください。たとえば、PostgreSQL プラグインの postgresql.conf では次のように指定します。
Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql
プラグイン設定ファイルへのパスは、Zabbix エージェント 2 設定ファイルの Include パラメータで指定する必要があります。
Include=/path/to/plugin/configuration/file/postgresql.conf
プラグインの設定の詳細については、セットアップ に進んでください。
Zabbixエージェント2を手動でビルドする
このZabbixエージェント2のビルド方法は、ビルド環境を完全に制御する必要があるユーザー、またはvcpkgの使用が不可能な制限された環境にいるユーザーに適しています。
このセクションでは、必要なビルドツールと依存関係のインストール、およびその後のエージェントのコンパイルを含む、Zabbixエージェント2を手動でビルドする手順について説明します。
MinGWコンパイラのインストール
1. SJLJ (set jump/long jump)例外処理と Windowsスレッドを備えたMinGW-w64をダウンロードします (例: x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z)\
- 解凍して、c:\mingwへ移動します。\
-
環境変数の設定をします。
@echo off set PATH=%PATH%;c:\mingw\bin cmd
コンパイル時に、MinGWが提供するMSYSターミナルの代わりにWindowsプロンプトを使用します。
OpenSSLのインストール
TLSサポートなしでZabbixエージェントをコンパイルする場合は、PCRE2のインストールセクションに進んでください。
1. 管理者権限でMSYS2 MSYSターミナルを開き、次のコマンドを実行します。
pacman -S perl-Locale-Maketext-Simple
pacman -S nasm
pacman -S make
pacman -S cmake
2. OpenSSLソースアーカイブをダウンロードし、C:\Zabbix\openssl-3.5.0 に展開します。
3. 展開したOpenSSLディレクトリに移動し、次の build.sh スクリプトを作成します。
- 64ビットビルドの場合:
#!/usr/bin/env bash
export PATH="/c/Zabbix/mingw64/bin:$PATH"
export d="/c/Zabbix/x64/OpenSSL-Win64-350-static"
perl Configure mingw64 no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method thread_scheme=winthreads --api=1.1.0 --prefix=$d --openssldir=$d
make
make install
- 32ビットビルドの場合:
#!/usr/bin/env bash
export PATH="/c/Zabbix/mingw32/bin:$PATH"
export d="/c/Zabbix/x86/OpenSSL-Win64-350-static"
perl Configure mingw no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method thread_scheme=winthreads --api=1.1.0 --prefix=$d --openssldir=$d
make
make install
C:\Zabbix\x64\OpenSSL-Win64-350-static ディレクトリに対する非管理者ユーザーの書き込み権限を必ず取り消してください。
そうしないと、エージェントが権限のないユーザーによって変更可能なパスからSSL設定を読み込むことになり、潜在的なセキュリティ脆弱性につながります。
no-sharedオプションを指定すると、libcrypto.lib および libssl.lib のOpenSSL静的ライブラリが自己完結型となるため、Zabbixバイナリには外部DLLを必要とせずにOpenSSLが含まれます。 これは、OpenSSLライブラリがなくてもZabbixバイナリを他のWindowsマシンにコピーできることを意味します。ただし、新しいOpenSSLのバグ修正版がリリースされた場合は、Zabbixエージェントを再コンパイルする必要があります。no-sharedオプションを指定しない場合、Zabbixは実行時にOpenSSL DLLに依存します。 これは、OpenSSLの更新時にZabbixエージェントの再コンパイルが不要になる可能性があることを意味します。ただし、他のマシンにコピーする際には、OpenSSL DLLもあわせてコピーする必要があります。
その他のOpenSSL設定オプションの詳細については、OpenSSLドキュメントを参照してください。
4. スクリプトを実行してOpenSSLを設定およびインストールします(これにはしばらく時間がかかる場合があります)。
cd /c/Zabbix/openssl-3.5.0
./build.sh
PCRE2のインストール
1. PCRE2ソースアーカイブをダウンロードし、C:\Zabbix\pcre2-10.45 に展開します。
2. 管理者権限でMSYS2 MSYSターミナルを開きます。
次に、展開したPCRE2ディレクトリ内に build ディレクトリを作成し、そこに移動します。
mkdir /c/Zabbix/pcre2-10.45/build
cd /c/Zabbix/pcre2-10.45/build
3. PCRE2を設定します。
# 64ビットビルドの場合:
export PATH="/c/Zabbix/mingw64/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x64/PCRE2" ..
# 32ビットビルドの場合:
export PATH="/c/Zabbix/mingw32/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-m32 -O2 -g" -DCMAKE_EXE_LINKER_FLAGS="-Wl,-mi386pe" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x86/PCRE2" ..
エラーが発生した場合は、CMakeビルドプロセスを再実行する前にCMakeキャッシュを削除することを推奨します。
キャッシュ(CMakeCachecache.txt)は、展開したPCRE2ディレクトリのbuildディレクトリにあります。
4. PCRE2をインストールします。
make install
Zabbixエージェント 2のコンパイル
1. Zabbixソースアーカイブをダウンロードし、C:\Zabbix\zabbix-7.4.0 に展開します。
生のソースリポジトリからソースアーカイブを生成する必要がある場合(例: カスタムパッチを適用する場合や、最新のソースコードからビルドする場合)は、Go がインストールされた Linux マシン上で以下のコマンドを実行してください(Zabbixエージェント 2の設定に必要です)。
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent2 --enable-ipv6 --prefix=`pwd`
make dist
これによりソースアーカイブが作成され、その後 Windows マシンにコピーできます。
2. 管理者権限でコマンドプロンプトを開きます。
次に、Zabbixのビルドディレクトリに移動してZabbixエージェントをコンパイルします。
OpenSSL および PCRE2 がインストールされているディレクトリを正しく指定してください。
- 64ビットビルドの場合:
cd C:\Zabbix\zabbix-7.4.0\build\mingw
set PATH=C:\Zabbix\mingw64\bin;%PATH%
mklink /D C:\Zabbix\x64\OpenSSL-Win64-350-static\lib C:\Zabbix\x64\OpenSSL-Win64-350-static\lib64
# With TLS support:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"
# Without TLS support:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
- 32ビットビルドの場合:
cd C:\Zabbix\zabbix-7.4.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%
# With TLS support:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"
# Without TLS support:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"
コンパイル後、Zabbixエージェント 2 のバイナリは C:\Zabbix\zabbix-7.4.0\bin\win64 に配置されます(32ビットビルドの場合は C:\Zabbix\zabbix-7.4.0\bin\win32)。
Zabbixエージェント 2 の設定ファイルは C:\Zabbix\zabbix-7.4.0\src\go\conf にあります。
エージェントを実行するには、zabbix_agent2.exe バイナリとその設定ファイルを専用フォルダ(例: C:\Zabbix\agent2)にコピーしてから、エージェントを実行します。
mkdir C:\Zabbix\agent2
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.d C:\Zabbix\agent2\zabbix_agent2.d\
C:\Zabbix\agent2\zabbix_agent2.exe -c C:\Zabbix\agent2\zabbix_agent2.win.conf
必要に応じて、Zabbixエージェント 2 のロード可能プラグインのコンパイルに進んでください。