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

概要

このページでは、Windows 10(64ビット)上でソースからZabbixエージェントをビルドする方法を説明します。

この手順は、Visual Studio 2022をサポートするWindowsバージョンに適用されます。

Zabbixエージェントのビルドには、以下が必要です。

  • Cコンパイラー(Build Tools for Visual Studio 2022に含まれています)
  • OpenSSL(Zabbixの暗号化機能用)
  • PCRE2(Perl互換正規表現。Zabbixの正規表現パターンマッチング機能用)

以下のいずれかの方法でZabbixエージェントをビルドできます。

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

監視の要件によっては、追加のライブラリが必要になる場合があります。 詳細については、要件を参照してください。

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

  • コマンドを実行するには、十分な権限を持つユーザーで起動した「x64 Native Tools Command Prompt」(Build Tools for Visual Studio 2022に含まれています)を使用してください。保護されたフォルダーへの書き込み権限が必要です。
  • すべてのソースファイルとビルドフォルダー用に、C:\Zabbixに作業ディレクトリを作成することを推奨します。 ただし、コンパイルされたコンポーネントはC:\Program Files\Zabbix\x64にインストールしてください。

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

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

1. Build Tools for Visual Studio 2022 をダウンロードしてインストールします。
インストール中に、vcpkg を使用してエージェントをビルドするために必要なツールが含まれている C++ によるデスクトップ開発 ワークロードを必ず選択してください。

  • C コンパイラー(Microsoft Visual C++)
  • NMake コマンドラインツール
  • vcpkg パッケージマネージャー
  • 「x64 Native Tools Command Prompt」

2. 管理者権限で cmd.exe を開き、vcpkg を初期化して、Zabbix エージェントのビルドに必要な依存関係をインストールします(完了までに時間がかかる場合があります)。

cd C:\Zabbix
vcpkg new --application
vcpkg add port pcre2
vcpkg add port openssl
vcpkg install --triplet x64-windows-static --x-install-root="C:\Program Files\Zabbix\x64"

3. Zabbix ソースアーカイブ をダウンロードし、C:\Zabbix\zabbix-7.4.0 に展開します。

4. Zabbix のビルドディレクトリ(C:\Zabbix\zabbix-7.4.0\build\win32\project)に移動し、次の build.bat スクリプトを作成します。
OpenSSL と PCRE2 がインストールされているディレクトリを正しく指定してください。

:: Set vcpkg installation path:
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static

:: Run the build process:
nmake -f Makefile CPU=AMD64 ^
    PCRE2INCDIR="%vcpkg%\include" ^
    PCRE2LIBDIR="%vcpkg%\lib" ^
    TLS=openssl ^
    TLSINCDIR="%vcpkg%\include" ^
    TLSLIBDIR="%vcpkg%\lib" ^
    LIBS="$(LIBS) Crypt32.lib" ^
    all

5. 「x64 Native Tools Command Prompt」を開き、次のスクリプトを実行して Zabbix エージェントをコンパイルします。

cd C:\Zabbix\zabbix-7.4.0\build\win32\project
build.bat

別のコマンドプロンプトを開いた場合は、最初に Visual Studio のビルド環境を初期化します。

"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
cd C:\Zabbix\zabbix-7.4.0\build\win32\project
build.bat

スペースを含むパスは引用符で囲んでください。

コンパイル後、Zabbix コンポーネントのバイナリは C:\Zabbix\zabbix-7.4.0\bin\win64 に配置されます。
Zabbix エージェントの設定ファイルは C:\Zabbix\zabbix-7.4.0\conf に配置されます。

エージェントを実行するには、zabbix_agent.exe とその設定ファイルを専用フォルダー(例: C:\Zabbix\agent)にコピーしてから、エージェントを実行します。

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.4.0\conf\zabbix_agent.win.conf C:\Zabbix\agent\

C:\Zabbix\agent\zabbix_agent.exe -c C:\Zabbix\agent\zabbix_agent.win.conf

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

この方法は、ビルド環境を完全に制御したいユーザーや、vcpkgの使用ができない制限された環境での利用に適しています。

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

ビルドツールのインストール

1. Build Tools for Visual Studio 2022 をダウンロードしてインストールします。 インストール中に、エージェントを手動でビルドするために必要なツールが含まれる Desktop development with C++ ワークロードを必ず選択してください。

  • C コンパイラー(Microsoft Visual C++)
  • NMake コマンドラインツール
  • 「x64 Native Tools Command Prompt」
OpenSSLのインストール

TLSサポートなしでZabbixエージェントをコンパイルするには、PCRE2のインストールセクションに進んでください。

1. Strawberry Perl(MSIインストーラーとして提供)をダウンロードしてインストールします。 インストール中に、インストール先フォルダーとして C:\Zabbix\Strawberry を指定してください。

2. Text::Template Perlモジュールをインストールします。

cpanm Text::Template

3. Strawberry Perlのインストール中に、Netwide Assembler(NASM、OpenSSLのコンパイルに必要)がコンパイルされたことを確認します。

nasm -v
# NASM version 2.16.01 compiled on May  3 2024

NASMがコンパイルされていない場合は、手動でインストールしてください。 詳細については、NASMのドキュメントを参照してください。

4. OpenSSLのソースアーカイブをダウンロードし、C:\Zabbix\openssl-3.5.0 に展開します。

5. 展開したディレクトリに移動し、次の例のようにOpenSSLを設定します。

cd C:\Zabbix\openssl-3.5.0
perl Configure VC-WIN64A no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix="C:\Program Files\Zabbix\x64\OpenSSL" --openssldir="C:\Program Files\Zabbix\x64\OpenSSL"

WindowsでZabbixエージェントをコンパイルする際にOpenSSL用のカスタムディレクトリ(例: C:\zabbix または C:\openssl-64bit)を選択する場合は、管理者以外のユーザーからこのディレクトリへの書き込みアクセス権を必ず取り消してください。 そうしないと、エージェントが権限のないユーザーによって変更可能なパスからSSL設定を読み込むことになり、セキュリティ上の脆弱性につながる可能性があります。

  • no-sharedオプションを指定すると、libcrypto.libおよびlibssl.lib OpenSSL静的ライブラリが自己完結型になるため、Zabbixバイナリに外部DLLなしでOpenSSLが含まれます。 これにより、OpenSSLライブラリがない他のWindowsマシンにZabbixバイナリをコピーできます。ただし、新しいOpenSSLのバグ修正版がリリースされた場合は、Zabbixエージェントを再コンパイルする必要があります。
  • no-sharedオプションを指定しない場合、Zabbixは実行時にOpenSSL DLLに依存します。 この場合、OpenSSLの更新時にZabbixエージェントを再コンパイルする必要がない可能性があります。ただし、他のマシンにコピーする際は、OpenSSL DLLもコピーする必要があります。

その他のOpenSSL設定オプションの詳細については、OpenSSLのドキュメントを参照してください。

6. OpenSSLをコンパイルしてテストを実行します(完了までに時間がかかる場合があります)。

管理者権限なしでテストを実行してください。管理者権限で実行すると、予期しない結果やセキュリティリスクにつながる可能性があります。 一部のテストが失敗した場合は、トラブルシューティングについてOpenSSLのドキュメントを参照してください。

nmake
nmake test
...
All tests successful.
Files=325, Tests=3101, 822 wallclock secs ( 4.81 usr +  0.81 sys =  5.62 CPU)
Result: PASS

7. OpenSSLをインストールします。

nmake install

ソフトウェアコンポーネント(ライブラリ、ヘッダーファイル。ただしドキュメントを除く)のみをインストールするには、nmake install_sw を使用できます。

PCRE2のインストール

1. CMake(MSIインストーラーとして利用可能)をダウンロードしてインストールします。
インストール時に、インストールフォルダーとして C:\Zabbix\CMake を指定し、Add CMake to the PATH environment variable オプションを選択してください。

2. PCRE2のソースアーカイブをダウンロードし、C:\Zabbix\pcre2-10.45 に展開します。

3. 展開したPCRE2ディレクトリに build ディレクトリを作成し、そこに移動します。

mkdir C:\Zabbix\pcre2-10.45\build
cd C:\Zabbix\pcre2-10.45\build

4. PCRE2を構成します。

cmake -G "NMake Makefiles" -DPCRE_SUPPORT_UNICODE_PROPERTIES=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\Program Files\Zabbix\x64\PCRE2" "C:\Zabbix\pcre2-10.45"

エラーが発生した場合は、CMakeのビルドプロセスを再試行する前にCMakeキャッシュを削除することを推奨します。
キャッシュ(CMakeCachecache.txt)は、展開したPCRE2ディレクトリのbuildディレクトリにあります。

5. NMakeを使用してPCRE2をビルドします。

nmake

6. PCRE2をインストールします。

cmake --install .
Zabbix エージェントのコンパイル

1. Zabbix ソースアーカイブをダウンロードし、C:\Zabbix\zabbix-7.4.0 に展開します。

raw ソースリポジトリからソースアーカイブを生成する必要がある場合(カスタムパッチを適用する場合や、最新のソースコードからビルドする場合など)は、Linux マシンで次のコマンドを実行します。

git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure
make dist

これによりソースアーカイブが作成されます。作成したアーカイブは Windows マシンにコピーできます。

2. Zabbix のビルドディレクトリに移動し、「x64 Native Tools Command Prompt」を開いて、Zabbix エージェント(またはその他のコンポーネント)をコンパイルします。OpenSSL と PCRE2 がインストールされているディレクトリを正しく指定してください。

# 別のコマンドプロンプトを開いた場合は、最初に Visual Studio のビルド環境を初期化します。
"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64

cd C:\Zabbix\zabbix-7.4.0\build\win32\project

# TLS サポートあり:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"

# TLS サポートなし:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"

スペースを含むパスは引用符で囲んでください。

コンパイル後、Zabbix コンポーネントのバイナリは C:\Zabbix\zabbix-7.4.0\bin\win64 に配置されます。
Zabbix エージェントの設定ファイルは C:\Zabbix\zabbix-7.4.0\conf に配置されます。

エージェントを実行するには、zabbix_agent.exe とその設定ファイルを専用のフォルダー(例: C:\Zabbix\agent)にコピーしてから、エージェントを実行します。

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.4.0\conf\zabbix_agentd.win.conf C:\Zabbix\agent\

C:\Zabbix\agent\zabbix_agentd.exe -c C:\Zabbix\agent\zabbix_agentd.win.conf -f