Compilazione di Zabbix agent 2 su Windows
Panoramica
Questa pagina mostra come compilare Zabbix agent 2 dai sorgenti su Windows 10 (64 bit o 32 bit).
Sia la versione a 32 bit sia quella a 64 bit possono essere compilate su una piattaforma a 64 bit, ma su una piattaforma a 32 bit può essere compilata solo la versione a 32 bit.
La compilazione di Zabbix agent 2 richiede:
- 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 modelli tramite 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 tramite un gestore di pacchetti C++.
- Compilazione manuale: un approccio manuale che richiede l'installazione di tutte le dipendenze prima di compilare l'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, per installare OpenSSL e PCRE2, utilizzare il terminale MSYS2.
- Si consiglia di creare una directory di lavoro in
C:\Zabbixper tutti i file sorgente e le cartelle di compilazione. Tuttavia, i componenti compilati devono essere installati inC:\Zabbix\x64(oppureC:\Zabbix\x86per le compilazioni a 32 bit).
Compilazione di Zabbix agent 2 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 il gestore di pacchetti vcpkg.
2. Scaricare e installare Go (disponibile come programma di installazione MSI).
Durante l'installazione, assicurarsi di specificare C:\Zabbix\Go come cartella di installazione.
3. Scaricare 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
Quindi, estrarla in C:\Zabbix\mingw64 (oppure C:\Zabbix\mingw32 per build a 32 bit).
4. Inizializzare vcpkg e installare le dipendenze richieste per compilare Zabbix agent 2 (si noti che questa 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 build a 64 bit:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64
# Per build 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. Passare alla directory di build di Zabbix (C:\Zabbix\zabbix-8.0.0\build\mingw) e creare il seguente script build.bat:
- Per build 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 build:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
- Per build 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 build:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
7. Compilare Zabbix agent 2 eseguendo lo script:
build.bat
Dopo la compilazione, il file binario di Zabbix agent 2 si troverà in C:\Zabbix\zabbix-8.0.0\bin\win64 (per build a 64 bit) oppure in C:\Zabbix\zabbix-8.0.0\bin\win32 (per build 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) e quindi avviare l'agent:
mkdir C:\Zabbix\agent2
# Per build a 64 bit:
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
# Per build 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.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
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 corrispondente 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, controllare il relativo file README. Potrebbe contenere requisiti specifici e istruzioni di installazione.
2. Accedere 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 file 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 ovunque, purché possa essere caricato da Zabbix agent 2. Specificare il percorso del file 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, procedere alla sezione configurazione.
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 build
1. Scaricare e installare MSYS2 (disponibile come installer MSI).
Durante l'installazione, assicurarsi di specificare C:\Zabbix\msys64 come cartella di installazione.
2. Scaricare e installare Go (disponibile come installer MSI; vedere le versioni di Go attualmente supportate).
Durante l'installazione, assicurarsi di specificare C:\Zabbix\Go come cartella di installazione.
3. Scaricare 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
Quindi, estrarla in C:\Zabbix\mingw64 (oppure C:\Zabbix\mingw32 per build a 32 bit).
Installazione di OpenSSL
Per compilare Zabbix agent senza 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. Passare alla directory di OpenSSL estratta e creare il seguente script build.sh:
- Per 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 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 l'accesso in scrittura agli utenti non amministratori per la directory C:\Zabbix\x64\OpenSSL-Win64-350-static.
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-sharedrende le librerie statiche OpenSSL libcrypto.lib e libssl.lib autosufficienti, 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, fare riferimento alla documentazione di OpenSSL.
4. Configurare e installare OpenSSL eseguendo lo script (si noti che questa 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 grezzi (ad esempio, per applicare patch personalizzate o compilare a partire dal codice sorgente più recente), eseguire i seguenti comandi su una macchina Linux con Go installato (richiesto per configurare 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
Verrà così creato un archivio dei sorgenti, che potrà poi essere copiato su una macchina Windows.
2. Aprire il Prompt dei comandi con privilegi di amministratore. Quindi, passare alla directory di build di Zabbix e compilare Zabbix agent; assicurarsi di specificare correttamente le directory in cui sono installati OpenSSL e PCRE2:
- Per build 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 supporto TLS:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"
# Senza supporto TLS:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
- Per build a 32 bit:
cd C:\Zabbix\zabbix-8.0.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%
# Con supporto TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"
# Senza supporto TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"
Dopo la compilazione, il file 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 build 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 file binario zabbix_agent2.exe e i relativi file di configurazione in una cartella dedicata (ad esempio, C:\Zabbix\agent2) e quindi avviare 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.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
Se necessario, continuare con la compilazione dei plugin caricabili di Zabbix agent 2.