2 WindowsでのZabbixエージェント2のビルド
概要
このページでは、Windows 10(64ビットまたは32ビット)でソースからZabbixエージェント2をビルドする方法を説明します。
64ビットプラットフォームでは32ビット版と64ビット版の両方をビルドできますが、32ビットプラットフォームでは32ビット版のみビルドできます。
Zabbixエージェント2のビルドには、以下が必要です。
- MinGWビルドツール
- Goプログラミング言語
- OpenSSL(Zabbixの暗号化機能用)
- PCRE2(Perl互換正規表現。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-16.1.0-release-win32-seh-msvcrt-rt_v14-rev0.7z - 32 ビットビルド用:
i686-16.1.0-release-win32-dwarf-msvcrt-rt_v14-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.0.0 に展開します。
6. Zabbix のビルドディレクトリ(C:\Zabbix\zabbix-7.0.0\build\mingw)に移動し、次の build.bat スクリプトを作成します。
- 64 ビットビルド用:
:: 現在のセッションで MinGW と Go をシステムの `PATH` 変数に追加します:
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 ビットビルド用:
:: 現在のセッションで MinGW と Go をシステムの `PATH` 変数に追加します:
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.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 ビットビルド用:
copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
# 32 ビットビルド用:
copy C:\Zabbix\zabbix-7.0.0\bin\win32\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 の ロード可能なプラグイン のコンパイルを続けてください。
Zabbix エージェント 2 のロード可能プラグインのコンパイル
1. お使いの Zabbix エージェント 2 のバージョンに一致する Zabbix プラグインのソース(例: zabbix-agent2-plugin-postgresql-7.0.0.tar.gz)をダウンロードし、C:\Zabbix に展開します。
プラグインをインストールする前に、README ファイルを確認してください。 そこには、固有の要件やインストール手順が記載されている場合があります。
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 から読み込める限り、任意の場所に配置できます。 プラグイン設定ファイルでプラグインバイナリへのパスを指定してください。たとえば、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-16.1.0-release-win32-seh-msvcrt-rt_v14-rev0.7z - 32 ビットビルド用:
i686-16.1.0-release-win32-dwarf-msvcrt-rt_v14-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
- 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 ディレクトリのビルドディレクトリにあります。
4. PCRE2 をインストールします。
make install
Zabbix エージェント 2 のコンパイル
1. Zabbix ソースアーカイブをダウンロードし、C:\Zabbix\zabbix-7.0.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.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-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-Win32-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 のロード可能モジュールのコンパイルに進みます。