1 Compilazione di Zabbix agent su Windows

Panoramica

Questa pagina illustra come compilare l'agent Zabbix dal codice sorgente su Windows 10 (64 bit).

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

Per compilare l'agent Zabbix sono necessari:

  • Compilatore C (incluso in Build Tools for Visual Studio 2022)
  • OpenSSL (per le funzionalità di crittografia in Zabbix)
  • PCRE2 (espressioni regolari compatibili con Perl; per le funzionalità di ricerca tramite pattern di espressioni regolari in Zabbix)

È possibile compilare l'agent Zabbix 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 della compilazione dell'agent.

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

Prima di avviare 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 dell'agent Zabbix con vcpkg

Questa sezione contiene le istruzioni per compilare l'agent Zabbix 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 Sviluppo desktop con 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. Aprire cmd.exe con privilegi di amministratore, inizializzare vcpkg e installare le dipendenze necessarie per compilare l'agent Zabbix (l'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-7.4.0.

4. Accedere alla directory di compilazione di Zabbix (C:\Zabbix\zabbix-7.4.0\build\win32\project) e creare il seguente script build.bat; assicurarsi di specificare correttamente le directory in cui sono installati OpenSSL e PCRE2:

:: Imposta il percorso di installazione di vcpkg:
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static

:: Esegue il processo di compilazione:
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. Aprire "x64 Native Tools Command Prompt" e compilare l'agent Zabbix eseguendo lo script:

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

Se è stato aperto un prompt dei comandi diverso, inizializzare prima l'ambiente di compilazione di 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

Racchiudere tra virgolette i percorsi che contengono spazi.

Al termine della compilazione, i file binari dei componenti Zabbix si troveranno in C:\Zabbix\zabbix-7.4.0\bin\win64. Il file di configurazione dell'agent Zabbix si trova in C:\Zabbix\zabbix-7.4.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), quindi eseguire l'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

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 compilazione

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

  • Compilatore C (Microsoft Visual C++)
  • Strumento da riga di comando NMake
  • "x64 Native Tools Command Prompt"
Installazione di OpenSSL

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

1. Scaricare e installare Strawberry Perl (disponibile come programma di installazione MSI). Durante l'installazione, 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; necessario 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 del codice sorgente di OpenSSL ed estrarlo in C:\Zabbix\openssl-3.5.0.

5. Accedere 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 agli utenti non amministratori. In caso contrario, agent caricherà le impostazioni SSL da un percorso che può essere modificato da utenti senza privilegi, causando una potenziale vulnerabilità di sicurezza.

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

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

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

Eseguire i test senza privilegi amministrativi; in caso contrario, potrebbero verificarsi risultati imprevisti o rischi per la sicurezza. Se alcuni test hanno esito negativo, 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 e file di intestazione, ma non la documentazione), è possibile utilizzare 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 sorgente di Zabbix ed estrarlo in C:\Zabbix\zabbix-7.4.0.

Se è necessario generare un archivio sorgente dal repository del codice sorgente (ad esempio, per applicare patch personalizzate o compilare a partire 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
make dist

Verrà creato un archivio sorgente, che potrà quindi essere copiato su una macchina Windows.

2. Accedere alla directory di compilazione di Zabbix, aprire il prompt dei comandi "x64 Native Tools Command Prompt" e compilare Zabbix agent (o altri componenti); assicurarsi di specificare correttamente le directory in cui sono installati OpenSSL e PCRE2:

# Se è stato aperto un prompt dei comandi diverso, inizializzare prima l'ambiente di compilazione di 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

# Con il supporto 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"

# Senza il supporto 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"

Racchiudere tra virgolette i percorsi che contengono spazi.

Al termine della compilazione, i file binari dei componenti Zabbix si troveranno in C:\Zabbix\zabbix-7.4.0\bin\win64. Il file di configurazione di Zabbix agent si trova in C:\Zabbix\zabbix-7.4.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), quindi eseguire l'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