Compilazione di Zabbix agent 2 su Windows

Panoramica

Questa pagina illustra come compilare Zabbix agent 2 dai sorgenti su Windows 10 (a 64 bit o a 32 bit).

È possibile compilare le versioni a 32 bit e a 64 bit su una piattaforma a 64 bit, ma su una piattaforma a 32 bit è possibile compilare solo la versione a 32 bit.

Per compilare Zabbix agent 2 sono necessari:

  • Strumenti di compilazione MinGW
  • Linguaggio di programmazione Go
  • OpenSSL (per le funzionalità di crittografia in Zabbix)
  • PCRE2 (Perl Compatible Regular Expressions; per le funzionalità di corrispondenza dei pattern delle espressioni regolari in Zabbix)

È possibile compilare Zabbix agent 2 utilizzando uno dei seguenti metodi:

  • Utilizzo di vcpkg—un approccio automatizzato che semplifica la gestione delle dipendenze utilizzando un gestore di pacchetti C++.
  • Compilazione manuale—un approccio manuale che richiede l'installazione di tutte le dipendenze prima della compilazione dell'agent.

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

  • Per eseguire i comandi, utilizzare il Prompt dei comandi, avviato da un utente con autorizzazioni sufficienti per scrivere nelle cartelle protette. Tuttavia, durante l'installazione di OpenSSL e PCRE2, utilizzare il terminale MSYS2.
  • È consigliabile 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:\Zabbix\x64 (o in C:\Zabbix\x86 per le compilazioni a 32 bit).

Compilazione di Zabbix agent 2 con vcpkg

Questa sezione contiene le 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 Sviluppo desktop con C++, che include il gestore di pacchetti vcpkg.

2. Scaricare e installare Go (disponibile come programma di installazione MSI). Durante l'installazione, specificare C:\Zabbix\Go come cartella di installazione.

3. Scaricare la distribuzione MinGW che utilizza la libreria runtime Microsoft Visual C; ad esempio:

  • Per le compilazioni a 64 bit: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • Per le compilazioni a 32 bit: i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z

La versione di MinGW deve soddisfare i requisiti minimi.

Quindi, estrarla in C:\Zabbix\mingw64 (o C:\Zabbix\mingw32 per le compilazioni a 32 bit).

4. Inizializzare vcpkg e installare le dipendenze necessarie per compilare Zabbix agent 2 (l'operazione potrebbe richiedere del tempo):

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

# Per le compilazioni a 64 bit:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64

# Per le compilazioni a 32 bit:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86

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

6. Accedere alla directory di compilazione di Zabbix (C:\Zabbix\zabbix-8.0.0\build\mingw) e creare il seguente script build.bat:

  • Per le compilazioni a 64 bit:
:: Aggiungere MinGW e Go alla variabile di sistema `PATH` per la sessione corrente:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: Impostare il percorso di installazione di vcpkg:
set vcpkg="C:\Zabbix\x64\x64-mingw-static"

:: Impostare i flag del linker per la libreria Crypt32:
SET CGO_LDFLAGS="-lCrypt32"

:: Eseguire il processo di compilazione:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all
  • Per le compilazioni a 32 bit:
:: Aggiungere MinGW e Go alla variabile di sistema `PATH` per la sessione corrente:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: Impostare il percorso di installazione di vcpkg:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"

:: Impostare i flag del linker per la libreria Crypt32:
SET CGO_LDFLAGS="-lCrypt32"

:: Eseguire il processo di compilazione:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all

7. Compilare Zabbix agent 2 eseguendo lo script:

build.bat

Al termine della compilazione, il binario di Zabbix agent 2 si troverà in C:\Zabbix\zabbix-8.0.0\bin\win64 (per le compilazioni a 64 bit) o in C:\Zabbix\zabbix-8.0.0\bin\win32 (per le compilazioni a 32 bit). I file di configurazione di Zabbix agent 2 si trovano in C:\Zabbix\zabbix-8.0.0\src\go\conf.

Per eseguire l'agent, copiare zabbix_agent2.exe e i relativi file di configurazione in una cartella dedicata (ad esempio C:\Zabbix\agent2), quindi eseguire l'agent:

mkdir C:\Zabbix\agent2

# Per le compilazioni a 64 bit:
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\

# Per le compilazioni a 32 bit:
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.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.conf

Se necessario, continuare con la compilazione dei plugin caricabili di Zabbix agent 2.

Compilazione dei plugin caricabili di Zabbix agent 2

1. Scaricare il codice sorgente del plugin Zabbix che corrisponde alla versione di Zabbix agent 2 in uso (ad esempio, zabbix-agent2-plugin-postgresql-8.0.0.tar.gz) ed estrarlo in C:\Zabbix.

Prima di installare un plugin, verificare il relativo file README. Potrebbe contenere requisiti specifici e istruzioni di installazione.

2. Passare alla directory del plugin estratto e compilare il plugin:

cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-8.0.0

# Per build a 64 bit:
mingw32-make ARCH=AMD64

# Per build a 32 bit:
mingw32-make ARCH=x86

Dopo la compilazione, il binario del plugin di Zabbix agent 2 e il relativo file di configurazione si troveranno nella stessa directory del plugin.

L'eseguibile del plugin può essere collocato in qualsiasi posizione, purché sia caricabile da Zabbix agent 2. Specificare il percorso del binario del plugin nel file di configurazione del plugin, ad esempio in postgresql.conf per il plugin PostgreSQL:

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

Il percorso del file di configurazione del plugin deve essere specificato nel parametro Include del file di configurazione di Zabbix agent 2:

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

Per ulteriori dettagli sulla configurazione dei plugin, consultare setup.

Compilazione manuale di Zabbix agent 2

Questo metodo di compilazione di Zabbix agent 2 è 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 2, inclusa l'installazione degli strumenti di compilazione e delle dipendenze richiesti, seguita dalla compilazione dell'agent.

Configurazione degli strumenti di compilazione

1. Scarica e installa MSYS2 (disponibile come programma di installazione MSI). Durante l'installazione, assicurati di specificare C:\Zabbix\msys64 come cartella di installazione.

2. Scarica e installa Go (disponibile come programma di installazione MSI; vedi le versioni di Go attualmente supportate). Durante l'installazione, assicurati di specificare C:\Zabbix\Go come cartella di installazione.

3. Scarica la distribuzione MinGW che utilizza la libreria runtime Microsoft Visual C; ad esempio:

  • Per build a 64 bit: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • Per build a 32 bit: i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z

La versione di MinGW deve soddisfare i requisiti minimi.

Quindi, estraila in C:\Zabbix\mingw64 (oppure in C:\Zabbix\mingw32 per le build a 32 bit).

Installazione di OpenSSL

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

1. Aprire il terminale MSYS2 MSYS con privilegi di amministratore ed eseguire i seguenti comandi:

pacman -S perl-Locale-Maketext-Simple
pacman -S nasm
pacman -S make
pacman -S cmake

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

3. Accedere alla directory di OpenSSL estratta e creare il seguente script build.sh:

  • Per le build a 64 bit:
#!/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
  • Per le build a 32 bit:
#!/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

Assicurarsi di revocare agli utenti non amministratori l'accesso in scrittura alla directory C:\Zabbix\x64\OpenSSL-Win64-350-static. In caso contrario, l'agent caricherà le impostazioni SSL da un percorso modificabile 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 Zabbix includano OpenSSL senza richiedere DLL esterne. Ciò significa che i binari 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 affida alle 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.

4. Configurare e installare OpenSSL eseguendo lo script (l'operazione potrebbe richiedere del tempo):

cd /c/Zabbix/openssl-3.5.0
./build.sh
Installazione di PCRE2

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

2. Aprire il terminale MSYS2 MSYS con privilegi di amministratore. Quindi, creare una directory build nella directory PCRE2 estratta e accedervi:

mkdir /c/Zabbix/pcre2-10.45/build
cd /c/Zabbix/pcre2-10.45/build

3. Configurare PCRE2:

# Per build a 64 bit:
export PATH="/c/Zabbix/mingw64/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x64/PCRE2" ..

# Per build a 32 bit:
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" ..

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.

4. Installare PCRE2:

make install
Compilazione di Zabbix agent 2

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 non elaborati (ad esempio, per applicare patch personalizzate o compilare dal codice sorgente più recente), eseguire i seguenti comandi su una macchina Linux con Go installato (necessario per configurare Zabbix agent 2):

git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure
make dist

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

2. Aprire il Prompt dei comandi con privilegi di amministratore. Quindi, accedere alla directory di compilazione di Zabbix e compilare Zabbix agent; assicurarsi di specificare correttamente le directory in cui sono installati OpenSSL e PCRE2:

  • Per le compilazioni a 64 bit:
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

# Con il supporto TLS:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"

# Senza il supporto TLS:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
  • Per le compilazioni a 32 bit:
cd C:\Zabbix\zabbix-8.0.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%

# Con il supporto TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win32-350-static"

# Senza il supporto TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"

Al termine della compilazione, il binario di Zabbix agent 2 si troverà in C:\Zabbix\zabbix-8.0.0\bin\win64 (oppure in C:\Zabbix\zabbix-8.0.0\bin\win32 per le compilazioni a 32 bit). I file di configurazione di Zabbix agent 2 si trovano in C:\Zabbix\zabbix-8.0.0\src\go\conf.

Per eseguire l'agent, copiare il binario zabbix_agent2.exe e i relativi file di configurazione in una cartella dedicata (ad esempio, C:\Zabbix\agent2), quindi eseguire l'agent:

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.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.conf

Se necessario, continuare con la compilazione dei plugin caricabili di Zabbix agent 2.