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++パッケージマネージャーを使用して依存関係の管理を簡素化する、自動化された方法。
  • 手動ビルド — エージェントをコンパイルする前に、すべての依存関係をインストールする必要がある手動の方法。

ビルドプロセスを開始する前に、次の点にご注意ください。

  • コマンドの実行には、保護されたフォルダへの書き込みに十分な権限を持つユーザーが起動したコマンドプロンプトを使用してください。ただし、OpenSSLのインストールおよびPCRE2のインストールでは、MSYS2ターミナルを使用してください。
  • すべてのソースファイルおよびビルドフォルダ用の作業ディレクトリとして、C:\Zabbix を作成することを推奨します。ただし、コンパイル済みコンポーネントは C:\Zabbix\x64(32ビットビルドの場合は C:\Zabbix\x86)にインストールする必要があります。

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

# 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 versions を参照してください)。 インストール中に、インストール先フォルダーとして C:\Zabbix\Go を指定してください。

3. Microsoft Visual C ランタイムライブラリを使用する MinGW distribution をダウンロードします。例えば、次のものがあります。

  • 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
  1. 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 に解凍します。

生のソースリポジトリからソースアーカイブを生成する必要がある場合(カスタムパッチの適用や最新のソースコードからのビルドなど)は、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.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-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のロード可能プラグインのコンパイルに進みます。