WindowsでのZabbix agent 2のビルド
概要
このページでは、Windows 10 (64ビットまたは32ビット) でZabbix agent 2をソースからビルドする方法を説明します。
64ビットプラットフォームでは32ビット版と64ビット版の両方をビルドできますが、32ビットプラットフォームでは32ビット版のみビルドできます。
Zabbix agent 2のビルドには以下が必要です:
- MinGWビルドツール
- Goプログラミング言語
- OpenSSL (Zabbixの暗号化機能用)
- PCRE2 (Perl Compatible Regular Expressions; Zabbixの正規表現パターンマッチング機能用)
Zabbix agent 2は、次のいずれかの方法でビルドできます:
ビルドプロセスを開始する前に、次の点にご注意ください:
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-8.0.0 に展開します。
6. Zabbix のビルドディレクトリ (C:\Zabbix\zabbix-8.0.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-8.0.0\bin\win64(64 ビットビルドの場合)または C:\Zabbix\zabbix-8.0.0\bin\win32(32 ビットビルドの場合)に配置されます。
Zabbix エージェント 2 の設定ファイルは C:\Zabbix\zabbix-8.0.0\src\go\conf にあります。
エージェントを実行するには、zabbix_agent2.exe とその設定ファイルを専用フォルダー(例: C:\Zabbix\agent2)にコピーしてから、エージェントを実行します。
mkdir C:\Zabbix\agent2
# For 64-bit builds:
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
# For 32-bit builds:
copy C:\Zabbix\zabbix-8.0.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-8.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 の ロード可能プラグイン のコンパイルを続けてください。
Zabbix エージェント 2 のロード可能なプラグインのコンパイル
1. お使いの Zabbix エージェント 2 のバージョンに一致する Zabbix プラグインソース(例: zabbix-agent2-plugin-postgresql-8.0.0.tar.gz)をダウンロードし、C:\Zabbix に展開します。
プラグインをインストールする前に、README ファイルを確認してください。 特定の要件やインストール手順が記載されている場合があります。
2. 展開したプラグインディレクトリに移動し、プラグインをコンパイルします。
cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-8.0.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 agent 2 の手動ビルド
この方法は、ビルド環境を完全に制御する必要がある場合や、vcpkg の使用ができない制限された環境での利用に適しています。
このセクションでは、必要なビルドツールや依存関係のインストール、エージェントのコンパイルを含む、Zabbix agent 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
その後、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バイナリが外部DLLを必要とせずにOpenSSLを含むようにします。 つまり、ZabbixバイナリをOpenSSLライブラリなしで他の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 agent 2 のコンパイル
1. Zabbix ソースアーカイブをダウンロードし、C:\Zabbix\zabbix-8.0.0に展開します。
生のソースリポジトリからソースアーカイブを生成する必要がある場合(例:カスタムパッチを適用する場合や最新のソースコードからビルドする場合)、GoがインストールされたLinuxマシンで以下のコマンドを実行します(Zabbix agent 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 agentをコンパイルします。 OpenSSLおよびPCRE2がインストールされているディレクトリを正しく指定してください:
- 64ビットビルドの場合:
cd C:\Zabbix\zabbix-8.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"
- 32ビットビルドの場合:
cd C:\Zabbix\zabbix-8.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 agent 2 のバイナリはC:\Zabbix\zabbix-8.0.0\bin\win64(32ビットビルドの場合はC:\Zabbix\zabbix-8.0.0\bin\win32)に配置されます。
Zabbix agent 2 の設定ファイルはC:\Zabbix\zabbix-8.0.0\src\go\confにあります。
エージェントを実行するには、zabbix_agent2.exeバイナリとその設定ファイルを専用のフォルダ(例:C:\Zabbix\agent2)にコピーし、エージェントを実行します:
mkdir C:\Zabbix\agent2
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-8.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 agent 2 ロード可能プラグインのコンパイルを続行してください。