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

概要

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

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

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

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

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

  • vcpkgを使用 - C++パッケージマネージャーを使用して依存関係管理を簡素化する自動化アプローチ。
  • 手動ビルド - エージェントをコンパイルする前にすべての依存関係をインストールする必要がある手動アプローチ。

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

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

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

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

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

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

インストール時に、C++ によるデスクトップ開発 ワークロードを選択してください。このワークロードには、vcpkg を使用してエージェントをビルドするために必要なツールが含まれています。

  • C コンパイラ (Microsoft Visual C++)
  • NMake コマンドライン ツール
  • vcpkg パッケージ マネージャー
  • x64 Native Tools コマンド プロンプト

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

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

:: vcpkg のインストールパスを設定します。
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static

:: ビルドプロセスを実行します。
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.以下のスクリプトを実行して、Zabbix エージェントをコンパイルします。

build.bat

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

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

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

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

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

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

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

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

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

  • C コンパイラ (Microsoft Visual C++)
  • NMake コマンドラインツール
  • x64 Native Tools コマンドプロンプト
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 バージョン 2.16.01 は 2024 年 5 月 3 日にコンパイルされました

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

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

5.解凍したディレクトリに移動し、OpenSSL を設定します。例:

cd C:\Zabbix\openssl-3.5.0
perl 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が含まれます。 つまり、ZabbixバイナリはOpenSSLライブラリのない他のWindowsマシンにコピーできます。ただし、新しいOpenSSLバグ修正バージョンがリリースされた場合、Zabbixエージェントを再コンパイルする必要があります。
  • no-sharedオプションがない場合、Zabbixは実行時にOpenSSL DLLに依存します。 つまり、OpenSSLのアップデートではZabbixエージェントの再コンパイルは不要ですが、他のマシンにコピーする場合はOpenSSL DLLもコピーする必要があります。

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

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

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

nmake
nmake test
...
すべてのテストが成功しました。
ファイル数: 325、テスト数: 3101、ウォールクロック時間: 822 秒 (ユーザー使用率 4.81 + システム使用率 0.81 = CPU 使用率 5.62)
結果: 合格

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.0.0 に展開します。

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

git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent --enable-ipv6 --prefix=`pwd`
make dist

これによりソースアーカイブが作成され、その後 Windows マシンにコピーできます。

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

cd C:\Zabbix\zabbix-7.0.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.0.0\bin\win64 に配置されます。
Zabbixエージェントの設定ファイルは C:\Zabbix\zabbix-7.0.0\conf にあります。

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

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

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