Sidebar

Become a monitoring expert!
Sign up for Zabbix training

Windows版Zabbix agentの構築

概要

このセクションでは、 ソースコードからのWindows版Zabbix agent バイナリファイル作成方法(TLS対応有/無)について説明します。

OpenSSLのコンパイル

以下の手順は、MSのWindows 10(64ビット)でソースからOpenSSLをコンパイルするのに役立ちます。

  1. OpenSSLをコンパイルするために、Windowsマシンでは以下のものが必要です: 1. C compiler (e.g. VS 2017 RC), 2. NASM (https://www.nasm.us/), 3. Perl (e.g. Strawberry Perl from http://strawberryperl.com/), 4. Perl module Text::Template (cpan Text::Template).

  2. OpenSSLのソースをhttps://www.openssl.org/から取得します。ここではOpenSSL 1.1.1 を使います。

  3. OpenSSL のソースを、例えば E:\openssl-1.1.1 に解凍します。

  4. コマンドラインウィンドウを開きます。例:VS 2017 RC の x64 Native Tools Command Prompt

  5. OpenSSL のソースディレクトリ(例:E:\openssl-1.1.1 )に移動します。 1. NASMがあることを確認する:`e:\㏌openssl-1.1.1> nasm --version   NASM バージョン 2.13.01 コンパイル日:2017年5月1日

  6. OpenSSLの設定を行います。 例: e:\openssl-1.1.1> perl E:\openssl-1.1.1:\Configure VC-WIN64A no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method · --api=1.1.0 --prefix=C:\OpenSSL-Win64-111-static --openssldir=C:\OpenSSL-Win64-111-static

-   オプション 'no-shared' に注意してください。
           'no-shared'オプションを使用すると、OpenSSLスタティックライブラリlibcrypto.libとlibssl.libは「自己充足」し、 <br>
           ZabbixバイナリにはOpenSSL が含まれ、外部のOpenSSL DLLは必要ありません。 <br>
       
           Advantage: Zabbix binaries can be copied to other Windows <br>
           machines without OpenSSL libraries. Disadvantage: when a new <br>
           OpenSSL bugfix version is released, Zabbix agent needs to <br>
           recompiled and reinstalled. <br>
       -   If 'no-shared' is not used, then the static libraries <br>
           libcrypto.lib and libssl.lib will be using OpenSSL DLLs at <br>
           runtime. Advantage: when a new OpenSSL bugfix version is <br>
           released, probably you can upgrade only OpenSSL DLLs, without <br>
           recompiling Zabbix agent. Disadvantage: copying Zabbix agent to <br>
           another machine requires copying OpenSSL DLLs, too. <br>
  1. OpenSSLをコンパイルし、テストを実行し、インストールする。
    e:\openssl-1.1.1> nmake
    e:\openssl-1.1.1> nmake test
    ...
    All tests successful.
    Files=152, Tests=1152, 501 wallclock secs ( 0.67 usr + · 0.61 sys = · 1.28 CPU)
    Result: PASS
    e:\openssl-1.1.1> nmake install_sw
    `'install_sw' installs only software components (i.e. libraries,
    header files, but no documentation). If you want everything, use "nmake install".

PCREのコンパイル

  1. PCREまたはPCRE2(Zabbix6.0以降サポート)ライブラリをpcre.orgリポジトリからダウンロードします。
    (https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.zip)

  2. ディレクトリ E:\pcre2-10.39 に解凍します。

  3. CMakeをhttps://cmake.org/download/からインストールします。
    cmakeにパスが通っていることを確認してください (バージョン3.9.4で確認しました)。

  4. ソースディレクトリのサブディレクトリとして、空のビルドディレクトリを作成します。
    例: *E:\pcre2-10.39**build*.

  5. コマンドラインウィンドウを開きます。
    例:x64 Native Tools Command Prompt を開き、そのシェル環境からcmake-guiを実行します。
    この時、WindowsのスタートメニューからCmakeを起動しようとすると、エラーが発生する可能性があります。

  6. ソースディレクトリに E:\pcre2-10.39 、ビルドディレクトリに E:\pcre2-10.39build を入力します。

  7. ”Configure"ボタンをクリックします。

  8. このプロジェクトのジェネレータを指定する場合は、”NMake Makefiles "を選択します。

  9. 空のインストールディレクトリを新規に作成します。
    例 : E:\pcre2-10.39-install

  10. GUIにいくつかの設定オプションが表示されます。以下のオプションが選択されていることを確認します。

  • pcre_support_unicode_properties on
  • pcre_support_utf on
  • CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
  1. もう一度 "Configure"ボタンをクリックします。これで、隣の "Generate"ボタンが有効になります。

  2. ”Generate"ボタンをクリックします。

  3. エラーが発生した場合、CMake ビルドプロセスを繰り返す前に CMake キャッシュを削除することをお勧めします。
    CMake GUI では、キャッシュは"File > Delete Cache" を選択することで削除できます。

  4. ビルドディレクトリには、使用可能なMakefile が含まれているはずです。

  5. コマンドラインウィンドウ(例:VS 2017のx64 Native Tools Command Prompt)を開き、上記のMakefileに移動します。

  6. NMakeコマンドを実行します。
    E:\pcre2-10.39build> nmake install

Zabbixのコンパイル

以下の手順で、Windows 10(64ビット)上でソースからZabbixをコンパイルすることができます。
ZabbixをTLSサポートあり/なしでコンパイルする場合の大きな違いは、手順4のみです。

    • Linuxマシン上で、以下のサイトからソースをチェックアウトしてください。
      git:`$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
      $ cd zabbix
      $ ./bootstrap.sh
      $ ./configure --enable-agent --enable-ipv6 --prefix=
      pwd`
      $ make dbschema
      $ make dist
  1. アーカイブ(zabbix-4.4.0.tar.gz)を Windows マシンにコピーし、解凍します。

  2. ここでは、ソースが e:.0 にあると仮定します。コマンドラインウィンドウ
    (the x64 Native Tools Command Prompt for VS 2017 RC. )を開いて、E:\zabbix-4.4.0\project に移動します。

  3. zabbix_get、zabbix_sender、zabbix_agent をコンパイルします。

  • without TLS: `E:.0> nmake /K PCREINCDIR=E:-10.39-install\include PCRELIBDIR=E:-10.39-install
  • with TLS: E:.0> nmake /K -f Makefile_get TLS=openssl TLSINCDIR=C:-Win64-111-static TLSLIBDIR=C:-Win64-111-staticPCREINCDIR=E:-10.39-install PCRELIBDIR=E:-10.39-install E:.0> nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:-Win64-111-static TLSLIBDIR="C:-Win64-111-static" PCREINCDIR=E:-10.39-install PCRELIBDIR=E:-10.39-install E:.0> nmake /K -f Makefile_agent TLS=openssl TLSINCDIR=C:-Win64-111-static TLSLIBDIR=C:-Win64-111-staticPCREINCDIR=E:-10.39-install PCRELIBDIR=E:-10.39-install`
  1. 新しいバイナリはe:\zabbix-4.4.0\bin\win64に生成されます。 OpenSSLはno-sharedオプションでコンパイルされたため、ZabbixのバイナリはOpenSSLを含んでおり、 OpenSSLを持たない他のマシンにコピーすることができます。

LibreSSLを使用したZabbixのコンパイル

OpenSSLでコンパイルするのと同じような手順ですが、build\win32\projectディレクトリにあるファイルを少し変更する必要があります。

  * In ''Makefile_tls'' delete ''/DHAVE_OPENSSL_WITH_PSK''. i.e. find <code> <br>


CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
/DHAVE_OPENSSL_WITH_PSK</code>and replace it with
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL

  * In ''Makefile_common.inc'' add ''/NODEFAULTLIB:LIBCMT'' i.e. find <code>

/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO
/PDB:$(TARGETDIR)\$(TARGETNAME).pdb</code>and replace it with
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT