このセクションでは、Zabbixエージェント2 (Windows)をソースコードからビルドする方法を説明します。
このセクションでは、C++ プロジェクトとの依存関係管理と統合を簡素化するパッケージマネージャーである vcpkg を使用して Zabbix エージェントをビルドする手順について説明します。
1. Build Tools for Visual Studio 2022 をダウンロードしてインストールします。
インストール時に、vcpkg パッケージマネージャーを含むC++ によるデスクトップ開発ワークロードを選択してください。
2. Go (MSI インストーラーとして入手可能) をダウンロードしてインストールします。
インストール時に、インストールフォルダーとして C:\Zabbix\Go
を指定してください。
3. Microsoft Visual C ランタイムライブラリを使用する MinGW ディストリビューション をダウンロードします。例:
x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
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
# 64 ビットビルドの場合:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64
# 32 ビットビルドの場合:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86
5. Zabbix ソースアーカイブ をダウンロードし、C:\Zabbix\zabbix-7.0.0
に解凍します。
6. Zabbix ビルドディレクトリ (C:\Zabbix\zabbix-7.0.0\build\mingw
) に移動し、以下の build.bat
スクリプトを作成します。
:: 現在のセッションのシステム `PATH` 変数に MinGW と Go を追加します。
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%
:: vcpkg のインストールパスを設定します。
set vcpkg="C:\Zabbix\x64\x64-mingw-static"
:: Crypt32 ライブラリのリンカーフラグを設定します。
SET CGO_LDFLAGS="-lCrypt32"
:: ビルドプロセスを実行します。
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
:: 現在のセッションのシステム `PATH` 変数に MinGW と Go を追加します:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%
:: vcpkg のインストールパスを設定します:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"
:: Crypt32 ライブラリのリンカーフラグを設定します:
SET CGO_LDFLAGS="-lCrypt32"
:: ビルドプロセスを実行します:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
7. 以下のスクリプトを実行して、Zabbix エージェント 2 をコンパイルします。
コンパイル後、Zabbix エージェント 2 のバイナリは C:\Zabbix\zabbix-7.0.0\bin\win64
(64 ビットビルドの場合) または C:\Zabbix\zabbix-7.0.0\bin\win32
(32 ビットビルドの場合) に保存されます。 Zabbix エージェント 2 の設定ファイルは C:\Zabbix\zabbix-7.0.0\src\go\conf
に保存されます。
エージェントを実行するには、zabbix_agent2.exe
とその設定ファイルを専用のフォルダ(例:C:\Zabbix\agent2
)にコピーし、エージェントを実行します。
mkdir C:\Zabbix\agent2
# 64ビットビルドの場合:
C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent2.exe を C:\Zabbix\agent2\ にコピーします。
# 32ビットビルドの場合:
C:\Zabbix\zabbix-7.0.0\bin\win32\zabbix_agent2.exe を C:\Zabbix\agent2\ にコピーします。
C:\Zabbix\zabbix-7.0.0\src\go\conf\zabbix_agent2.win.conf を C:\Zabbix\agent2\ にコピーします。
xcopy /E /I C:\Zabbix\zabbix-7.0.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のロード可能なプラグインのコンパイルを続行します。
1. ご利用の Zabbix エージェント 2 のバージョンに合った Zabbix プラグインソース (例: zabbix-agent2-plugin-ember-plus-7.0.0.tar.gz
) をダウンロードし、C:\Zabbix
に解凍します。
2.解凍したプラグインディレクトリに移動し、プラグインをコンパイルします。
cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-7.0.0
# 64ビットビルドの場合:
mingw32-make ARCH=AMD64
# 32ビットビルドの場合:
mingw32-make ARCH=x86
コンパイル後、Zabbixエージェント2プラグインのバイナリとその設定ファイルが同じプラグインディレクトリに配置されます。
プラグインの実行ファイルは、Zabbixエージェント2がロードできる限り、どこにでも配置できます。 プラグインバイナリへのパスは、プラグイン設定ファイル(例:Ember+プラグインの場合はember.conf)に指定してください。
プラグイン設定ファイルへのパスは、Zabbixエージェント2設定ファイルのIncludeパラメータに指定する必要があります。
この Zabbix エージェント 2 のビルド方法は、ビルド環境を完全に制御する必要があるユーザー、または vcpkg の使用 が不可能な制限された環境にいるユーザーに適しています。
このセクションでは、必要なビルドツールと依存関係のインストール、そしてエージェントのコンパイルを含む、Zabbix エージェント 2 の手動ビルド手順について説明します。
1. SJLJ (set jump/long jump)例外処理と Windowsスレッドを備えたMinGW-w64をダウンロードします (例: x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z)
2. 解凍して、c:\mingwへ移動します。
3. 環境変数の設定をします。
コンパイル時に、MinGWが提供するMSYSターミナルの代わりにWindowsプロンプトを使用します。
TLS サポートなしで Zabbix エージェントをコンパイルするには、PCRE2 のインストール セクションに進んでください。
1. 管理者権限で MSYS2 MSYS ターミナルを開き、以下のコマンドを実行します。
2. OpenSSL ソースアーカイブ をダウンロードし、C:\Zabbix\openssl-3.5.0
に解凍します。
3.展開した OpenSSL ディレクトリに移動し、以下の build.sh
スクリプトを作成します。
#!/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
#!/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 が含まれます。 つまり、Zabbix バイナリは OpenSSL ライブラリがなくても他の Windows マシンにコピーできます。ただし、新しい OpenSSL バグ修正バージョンがリリースされた場合は、Zabbix エージェントを再コンパイルする必要があります。no-shared
オプションを指定しないと、Zabbix は実行時に OpenSSL DLL に依存します。 つまり、OpenSSL の更新時に Zabbix エージェントの再コンパイルが不要になる場合があります。ただし、他のマシンにコピーする場合は、OpenSSL DLL もコピーする必要があります。その他の OpenSSL 設定オプションの詳細については、OpenSSL ドキュメント を参照してください。
4.スクリプトを実行して OpenSSL を設定およびインストールします(時間がかかる場合があります)。
1. PCRE2ソースアーカイブをダウンロードし、C:\Zabbix\pcre2-10.45
に解凍します。
2. MSYS2 MSYSターミナルを管理者権限で開きます。 次に、解凍したPCRE2ディレクトリ内にbuild
ディレクトリを作成し、そこに移動します。
# 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 ディレクトリのビルドディレクトリにあります。
4. PCRE2 をインストールします。
1. Zabbix ソースアーカイブ をダウンロードし、C:\Zabbix\zabbix-7.0.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 がインストールされているディレクトリを正しく指定してください。
cd C:\Zabbix\zabbix-7.0.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
# TLS サポートあり:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"
# TLS サポートなし:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
cd C:\Zabbix\zabbix-7.0.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%
# TLSサポートあり:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"
# TLSサポートなし:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"
コンパイル後、Zabbixエージェント2のバイナリはC:\Zabbix\zabbix-7.0.0\bin\win64
(または32ビットビルドの場合はC:\Zabbix\zabbix-7.0.0\bin\win32
です。 Zabbixエージェント2の設定ファイルはC:\Zabbix\zabbix-7.0.0\src\go\conf
にあります。
エージェントを実行するには、zabbix_agent2.exe
バイナリとその設定ファイルを専用のフォルダ(例:C:\Zabbix\agent2
)にコピーし、エージェントを実行します。
mkdir C:\Zabbix\agent2
copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-7.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-7.0.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のロード可能プラグインのコンパイルに進みます。