This is a translation of the original English documentation page. Help us make it better.

2 WindowsでのZabbixエージェント2のビルド

概要

このセクションでは、Zabbixエージェント2 (Windows)をソースコードからビルドする方法を説明します。

vcpkg を使用した Zabbix エージェント 2 のビルド

このセクションでは、C++ プロジェクトとの依存関係管理と統合を簡素化するパッケージマネージャーである vcpkg を使用して Zabbix エージェントをビルドする手順について説明します。

1. Build Tools for Visual Studio 2022 をダウンロードしてインストールします。

インストール時に、vcpkg パッケージマネージャーを含む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 ビットビルドの場合:
:: 現在のセッションのシステム `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.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のロード可能なプラグインのコンパイルを続行します。

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)に指定してください。

Plugins.EmberPlus.System.Path=/path/to/executable/zabbix-agent2-plugin-ember-plus

プラグイン設定ファイルへのパスは、Zabbixエージェント2設定ファイルのIncludeパラメータに指定する必要があります。

Include=/path/to/plugin/configuration/file/ember.conf

Zabbix エージェント 2 の手動ビルド

この Zabbix エージェント 2 のビルド方法は、ビルド環境を完全に制御する必要があるユーザー、または vcpkg の使用 が不可能な制限された環境にいるユーザーに適しています。

このセクションでは、必要なビルドツールと依存関係のインストール、そしてエージェントのコンパイルを含む、Zabbix エージェント 2 の手動ビルド手順について説明します。

MinGWコンパイラのインストール

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. 環境変数の設定をします。

@echo off
       set PATH=%PATH%;c:\mingw\bin
       cmd

コンパイル時に、MinGWが提供するMSYSターミナルの代わりにWindowsプロンプトを使用します。

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のロード可能プラグインのコンパイルに進みます。