2 WindowsでのZabbixエージェント2のビルド
概要
このページでは、Windows 10(64ビットまたは32ビット)上でソースから Zabbix エージェント 2 をビルドする方法を説明します。
64ビットプラットフォームでは32ビット版と64ビット版の両方をビルドできますが、32ビットプラットフォームでは32ビット版のみビルドできます。
Zabbix エージェント 2 のビルドには、以下が必要です。
- MinGW ビルドツール
- Go プログラミング言語
- OpenSSL(Zabbix の暗号化機能用)
- PCRE2(Perl Compatible Regular Expressions。Zabbix の正規表現パターンマッチング機能用)
Zabbix エージェント 2 は、以下のいずれかの方法でビルドできます。
- vcpkg を使用する—C++ パッケージマネージャーを使用して依存関係の管理を簡素化する自動化された方法です。
- 手動でビルドする—エージェントをコンパイルする前に、すべての依存関係をインストールする必要がある手動の方法です。
ビルドプロセスを開始する前に、以下の点に注意してください。
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
MinGW のバージョンは 最小要件 を満たしている必要があります。
その後、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.4.0 に展開します。
6. Zabbix のビルドディレクトリ(C:\Zabbix\zabbix-7.4.0\build\mingw)に移動し、次の build.bat スクリプトを作成します。
- 64 ビットビルド用:
:: 現在のセッションのシステム `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
- 32 ビットビルド用:
:: 現在のセッションのシステム `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 をコンパイルします。
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
# 64 ビットビルド用:
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
# 32 ビットビルド用:
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を手動でビルドする手順について説明します。
ビルドツールのセットアップ
1. MSYS2 をダウンロードしてインストールします(MSI インストーラーとして提供されています)。
インストール中に、インストール先フォルダーとして C:\Zabbix\msys64 を指定してください。
2. Go をダウンロードしてインストールします(MSI インストーラーとして提供されています。現在サポートされている Go のバージョン を参照してください)。
インストール中に、インストール先フォルダーとして 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
MinGW のバージョンは 最小要件 を満たしている必要があります。
その後、C:\Zabbix\mingw64(32 ビットビルドの場合は C:\Zabbix\mingw32)に展開します。
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 バイナリには OpenSSL が含まれ、外部 DLL は必要ありません。 これは、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 に展開します。
raw ソースリポジトリからソースアーカイブを生成する必要がある場合(カスタムパッチを適用する場合や、最新のソースコードからビルドする場合など)は、Go(Zabbix エージェント 2 の設定に必要)がインストールされた Linux マシンで、次のコマンドを実行します。
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure
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
# 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"
- 32 ビットビルドの場合:
cd C:\Zabbix\zabbix-7.4.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-Win32-350-static"
# TLS サポートなし:
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 のロード可能プラグインのコンパイルに進みます。