You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

WindowsでのZabbix agent 2のビルド

概要

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

64ビットプラットフォームでは32ビット版と64ビット版の両方をビルドできますが、32ビットプラットフォームでは32ビット版のみビルドできます。

Zabbix agent 2のビルドには以下が必要です:

  • MinGWビルドツール
  • Goプログラミング言語
  • OpenSSL (Zabbixの暗号化機能用)
  • PCRE2 (Perl Compatible Regular Expressions; Zabbixの正規表現パターンマッチング機能用)

Zabbix agent 2は、次のいずれかの方法でビルドできます:

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

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

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

vcpkgを使用したZabbix agent 2のビルド

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

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 agent 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-8.0.0に展開します。

6. Zabbixビルドディレクトリ(C:\Zabbix\zabbix-8.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 agent 2をコンパイルします:

build.bat

コンパイル後、Zabbix agent 2のバイナリはC:\Zabbix\zabbix-8.0.0\bin\win64(64ビットビルドの場合)またはC:\Zabbix\zabbix-8.0.0\bin\win32(32ビットビルドの場合)に配置されます。 Zabbix agent 2の設定ファイルはC:\Zabbix\zabbix-8.0.0\src\go\confにあります。

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

mkdir C:\Zabbix\agent2
       
       # 64ビットビルドの場合:
       copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
       
       # 32ビットビルドの場合:
       copy C:\Zabbix\zabbix-8.0.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\
       
       copy C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
       xcopy /E /I C:\Zabbix\zabbix-8.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 agent 2のロード可能プラグインのコンパイルを続行してください。

Zabbix agent 2 ロード可能プラグインのコンパイル

1. Zabbix agent 2 のバージョンに一致するZabbixプラグインソース(例:zabbix-agent2-plugin-postgresql-8.0.0.tar.gz)をダウンロードし、C:\Zabbixに展開します。

プラグインをインストールする前に、READMEファイルを確認してください。 特定の要件やインストール手順が記載されている場合があります。

2. 展開したプラグインディレクトリに移動し、プラグインをコンパイルします:

cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-8.0.0
       
       # 64ビットビルドの場合:
       mingw32-make ARCH=AMD64
       
       # 32ビットビルドの場合:
       mingw32-make ARCH=x86

コンパイル後、Zabbix agent 2 プラグインのバイナリとその設定ファイルは同じプラグインディレクトリに配置されます。

プラグインの実行ファイルは、Zabbix agent 2 からロード可能であれば、どこに配置してもかまいません。 プラグインの設定ファイル(例:PostgreSQLプラグインの場合はpostgresql.conf)で、プラグインバイナリへのパスを指定します:

Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql

プラグイン設定ファイルへのパスは、Zabbix agent 2 の設定ファイルのIncludeパラメータで指定する必要があります:

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

プラグインの設定の詳細については、セットアップに進んでください。

Zabbix agent 2 の手動ビルド

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

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

ビルドツールのセットアップ

1. MSYS2(MSIインストーラーとして利用可能)をダウンロードしてインストールします。 インストール時に、インストールフォルダとして C:\Zabbix\msys64 を指定してください。

2. Go(MSIインストーラーとして利用可能。現在サポートされているGoバージョンを参照)をダウンロードしてインストールします。 インストール時に、インストールフォルダとして 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)に展開します。

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

3. 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ディレクトリのbuildディレクトリ内にあります。

4. PCRE2をインストールします:

make install
Zabbix agent 2 のコンパイル

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

生のソースリポジトリからソースアーカイブを生成する必要がある場合(例:カスタムパッチを適用する場合や最新のソースコードからビルドする場合)、GoがインストールされたLinuxマシンで以下のコマンドを実行します(Zabbix agent 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 agentをコンパイルします。 OpenSSLおよびPCRE2がインストールされているディレクトリを正しく指定してください:

  • 64ビットビルドの場合:
cd C:\Zabbix\zabbix-8.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-8.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 agent 2 のバイナリはC:\Zabbix\zabbix-8.0.0\bin\win64(32ビットビルドの場合はC:\Zabbix\zabbix-8.0.0\bin\win32)に配置されます。 Zabbix agent 2 の設定ファイルはC:\Zabbix\zabbix-8.0.0\src\go\confにあります。

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

mkdir C:\Zabbix\agent2
       copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
       copy C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
       xcopy /E /I C:\Zabbix\zabbix-8.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 agent 2 ロード可能プラグインのコンパイルを続行してください。