Compilazione di Zabbix agent su Windows

Panoramica

Questa pagina mostra come compilare Zabbix agent dai sorgenti su Windows 10 (64 bit).

Queste istruzioni si applicano alle versioni di Windows che supportano Visual Studio 2022.

La compilazione di Zabbix agent richiede:

  • compilatore C (incluso in Build Tools for Visual Studio 2022)
  • OpenSSL (per le funzionalità di crittografia in Zabbix)
  • PCRE2 (Perl Compatible Regular Expressions; per le funzionalità di corrispondenza dei modelli tramite espressioni regolari in Zabbix)

È possibile compilare Zabbix agent utilizzando uno dei seguenti metodi:

  • Utilizzo di vcpkg: un approccio automatizzato che semplifica la gestione delle dipendenze tramite un gestore di pacchetti C++.
  • Compilazione manuale: un approccio manuale che richiede l'installazione di tutte le dipendenze prima di compilare l'agent.

A seconda delle esigenze di monitoraggio, potrebbero essere necessarie librerie aggiuntive. Per ulteriori informazioni, vedere Requisiti.

Prima di iniziare il processo di compilazione, tenere presente quanto segue:

  • Per eseguire i comandi, utilizzare x64 Native Tools Command Prompt (incluso in Build Tools for Visual Studio 2022), avviato da un utente con autorizzazioni sufficienti per scrivere nelle cartelle protette.
  • Si consiglia di creare una directory di lavoro in C:\Zabbix per tutti i file sorgente e le cartelle di compilazione. Tuttavia, i componenti compilati devono essere installati in C:\Program Files\Zabbix\x64.

Compilazione di Zabbix agent con vcpkg

Questa sezione contiene istruzioni per compilare Zabbix agent con vcpkg, un gestore di pacchetti che semplifica la gestione delle dipendenze e l'integrazione con i progetti C++.

1. Scaricare e installare Build Tools for Visual Studio 2022. Durante l'installazione, assicurarsi di selezionare il carico di lavoro Desktop development with C++, che include gli strumenti necessari per compilare l'agent con vcpkg:

  • Compilatore C (Microsoft Visual C++)
  • Strumento da riga di comando NMake
  • Gestore di pacchetti vcpkg
  • x64 Native Tools Command Prompt

2. Inizializzare vcpkg e installare le dipendenze necessarie per compilare Zabbix agent (si noti che questa operazione potrebbe richiedere del tempo):

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. Scaricare l'archivio dei sorgenti di Zabbix ed estrarlo in C:\Zabbix\zabbix-8.0.0.

4. Passare alla directory di compilazione di Zabbix (C:\Zabbix\zabbix-8.0.0\build\win32\project) e creare il seguente script build.bat; assicurarsi di specificare correttamente le directory in cui sono installati OpenSSL e 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. Compilare Zabbix agent eseguendo lo script:

build.bat

Dopo la compilazione, i file binari dei componenti Zabbix si troveranno in C:\Zabbix\zabbix-8.0.0\bin\win64. Il file di configurazione di Zabbix agent si trova in C:\Zabbix\zabbix-8.0.0\conf.

Per eseguire l'agent, copiare zabbix_agent.exe e il relativo file di configurazione in una cartella dedicata (ad esempio, C:\Zabbix\agent) e quindi avviare l'agent:

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

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

Compilazione manuale di Zabbix agent

Questo metodo di compilazione di Zabbix agent è adatto agli utenti che richiedono il pieno controllo dell'ambiente di compilazione o che si trovano in un ambiente con restrizioni in cui l'uso di vcpkg non è possibile.

Questa sezione contiene le istruzioni per compilare manualmente Zabbix agent, inclusa l'installazione degli strumenti di compilazione e delle dipendenze richiesti (Perl, OpenSSL, PCRE2), quindi la compilazione dell'agent.

Installazione degli strumenti di build

1. Scaricare e installare Build Tools for Visual Studio 2022. Durante l'installazione, assicurarsi di selezionare il carico di lavoro Desktop development with C++, che include gli strumenti necessari per compilare manualmente l'agent:

  • Compilatore C (Microsoft Visual C++)
  • Strumento da riga di comando NMake
  • Prompt dei comandi degli strumenti nativi x64
Installazione di OpenSSL

Per compilare Zabbix agent senza supporto TLS, procedere alla sezione Installazione di PCRE2.

1. Scaricare e installare Strawberry Perl (disponibile come programma di installazione MSI). Durante l'installazione, assicurarsi di specificare C:\Zabbix\Strawberry come cartella di installazione.

2. Installare il modulo Perl Text::Template:

cpanm Text::Template

3. Verificare che il Netwide Assembler (NASM; richiesto per compilare OpenSSL) sia stato compilato durante l'installazione di Strawberry Perl:

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

Se NASM non è stato compilato, installarlo manualmente. Per ulteriori informazioni, consultare la documentazione di NASM.

4. Scaricare l'archivio dei sorgenti di OpenSSL ed estrarlo in C:\Zabbix\openssl-3.5.0.

5. Passare alla directory estratta e configurare OpenSSL, ad esempio:

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"

Se si sceglie una directory personalizzata per OpenSSL durante la compilazione di Zabbix agent su Windows (ad esempio, C:\zabbix o C:\openssl-64bit), assicurarsi di revocare l'accesso in scrittura a questa directory per gli utenti non amministratori. In caso contrario, l'agent caricherà le impostazioni SSL da un percorso che può essere modificato da utenti senza privilegi, con conseguente potenziale vulnerabilità di sicurezza.

  • L'opzione no-shared rende le librerie statiche OpenSSL libcrypto.lib e libssl.lib autonome, in modo che i binari di Zabbix includano OpenSSL senza richiedere DLL esterne. Ciò significa che i binari di Zabbix possono essere copiati su altre macchine Windows senza le librerie OpenSSL; tuttavia, quando viene rilasciata una nuova versione OpenSSL con correzioni di bug, sarà necessario ricompilare Zabbix agent.
  • Senza l'opzione no-shared, Zabbix si basa sulle DLL OpenSSL in fase di esecuzione. Ciò significa che gli aggiornamenti di OpenSSL potrebbero non richiedere la ricompilazione di Zabbix agent; tuttavia, quando lo si copia su altre macchine, sarà necessario copiare anche le DLL OpenSSL.

Per ulteriori informazioni su altre opzioni di configurazione di OpenSSL, consultare la documentazione di OpenSSL.

6. Compilare OpenSSL ed eseguire i test (si noti che questa operazione potrebbe richiedere del tempo):

Eseguire i test senza privilegi amministrativi; in caso contrario, ciò potrebbe portare a risultati imprevisti o a rischi per la sicurezza. Se alcuni test non riescono, consultare la documentazione di OpenSSL per la risoluzione dei problemi.

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. Installare OpenSSL:

nmake install

Per installare solo i componenti software (librerie, file di intestazione, ma non la documentazione), è possibile usare nmake install_sw.

Installazione di PCRE2

1. Scaricare e installare CMake (disponibile come programma di installazione MSI). Durante l'installazione, assicurarsi di specificare C:\Zabbix\CMake come cartella di installazione e di selezionare l'opzione Add CMake to the PATH environment variable.

2. Scaricare l'archivio sorgente di PCRE2 ed estrarlo in C:\Zabbix\pcre2-10.45.

3. Creare una directory build nella directory PCRE2 estratta e accedervi:

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

4. Configurare 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"

Se si verificano errori, si consiglia di eliminare la cache di CMake prima di tentare di ripetere il processo di build con CMake. La cache (CMakeCachecache.txt) si trova nella directory build della directory PCRE2 estratta.

5. Compilare PCRE2 utilizzando NMake:

nmake

6. Installare PCRE2:

cmake --install .
Compilazione di Zabbix agent

1. Scaricare l'archivio dei sorgenti di Zabbix ed estrarlo in C:\Zabbix\zabbix-8.0.0.

Se è necessario generare un archivio dei sorgenti dal repository dei sorgenti grezzi (ad esempio, per applicare patch personalizzate o compilare dal codice sorgente più recente), eseguire i seguenti comandi su una macchina Linux:

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

Verrà così creato un archivio dei sorgenti, che potrà poi essere copiato su una macchina Windows.

2. Passare alla directory di build di Zabbix e compilare Zabbix agent (o altri componenti); assicurarsi di specificare correttamente le directory in cui sono installati OpenSSL e PCRE2:

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

# With TLS support:
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"

# Without TLS support:
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"

Dopo la compilazione, i file binari dei componenti di Zabbix si troveranno in C:\Zabbix\zabbix-8.0.0\bin\win64. Il file di configurazione di Zabbix agent si trova in C:\Zabbix\zabbix-8.0.0\conf.

Per eseguire l'agent, copiare zabbix_agent.exe e il relativo file di configurazione in una cartella dedicata (ad esempio, C:\Zabbix\agent) e quindi avviare l'agent:

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.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