Compilation de l'agent Zabbix 2 sous Windows
Aperçu
Cette page montre comment compiler Zabbix agent 2 à partir des sources sous Windows 10 (64 bits ou 32 bits).
Les versions 32 bits et 64 bits peuvent toutes deux être compilées sur une plateforme 64 bits, mais seule la version 32 bits peut être compilée sur une plateforme 32 bits.
La compilation de Zabbix agent 2 nécessite :
- les outils de compilation MinGW
- le langage de programmation Go
- OpenSSL (pour les fonctionnalités de chiffrement dans Zabbix)
- PCRE2 (Perl Compatible Regular Expressions ; pour les fonctionnalités de correspondance de motifs par expressions régulières dans Zabbix)
Vous pouvez compiler Zabbix agent 2 en utilisant l’une des méthodes suivantes :
- Utilisation de vcpkg — une approche automatisée qui simplifie la gestion des dépendances à l’aide d’un gestionnaire de paquets C++.
- Compilation manuelle — une approche manuelle qui nécessite l’installation de toutes les dépendances avant de compiler l’agent.
Avant de commencer le processus de compilation, veuillez garder à l’esprit ce qui suit :
- Pour exécuter les commandes, utilisez l’invite de commandes, lancée par un utilisateur disposant de permissions suffisantes pour écrire dans des dossiers protégés. Toutefois, lors de l’installation de OpenSSL et de PCRE2, utilisez le terminal MSYS2.
- Il est recommandé de créer un répertoire de travail dans
C:\Zabbixpour tous les fichiers source et dossiers de compilation. Toutefois, les composants compilés doivent être installés dansC:\Zabbix\x64(ouC:\Zabbix\x86pour les compilations 32 bits).
Compilation de Zabbix agent 2 avec vcpkg
Cette section contient des instructions pour compiler Zabbix agent avec vcpkg, un gestionnaire de paquets qui simplifie la gestion des dépendances et l’intégration avec les projets C++.
1. Téléchargez et installez Build Tools for Visual Studio 2022. Lors de l’installation, veillez à sélectionner la charge de travail Desktop development with C++, qui inclut le gestionnaire de paquets vcpkg.
2. Téléchargez et installez Go (disponible sous forme d’installateur MSI).
Lors de l’installation, veillez à spécifier C:\Zabbix\Go comme dossier d’installation.
3. Téléchargez la distribution MinGW qui utilise la bibliothèque d’exécution Microsoft Visual C ; par exemple :
- Pour les compilations 64 bits :
x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z - Pour les compilations 32 bits :
i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z
Ensuite, extrayez-la vers C:\Zabbix\mingw64 (ou C:\Zabbix\mingw32 pour les compilations 32 bits).
4. Initialisez vcpkg et installez les dépendances requises pour compiler Zabbix agent 2 (notez que cela peut prendre un certain temps) :
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
# For 64-bit builds:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64
# For 32-bit builds:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86
5. Téléchargez l’archive des sources de Zabbix et extrayez-la vers C:\Zabbix\zabbix-8.0.0.
6. Accédez au répertoire de compilation de Zabbix (C:\Zabbix\zabbix-8.0.0\build\mingw) et créez le script build.bat suivant :
- Pour les compilations 64 bits :
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%
:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x64\x64-mingw-static"
:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"
:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
- Pour les compilations 32 bits :
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%
:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"
:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"
:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
7. Compilez Zabbix agent 2 en exécutant le script :
build.bat
Après la compilation, le binaire de Zabbix agent 2 se trouvera dans C:\Zabbix\zabbix-8.0.0\bin\win64 (pour les compilations 64 bits) ou C:\Zabbix\zabbix-8.0.0\bin\win32 (pour les compilations 32 bits).
Les fichiers de configuration de Zabbix agent 2 se trouvent dans C:\Zabbix\zabbix-8.0.0\src\go\conf.
Pour exécuter l’agent, copiez zabbix_agent2.exe et ses fichiers de configuration dans un dossier dédié (par exemple, C:\Zabbix\agent2), puis exécutez l’agent :
mkdir C:\Zabbix\agent2
# For 64-bit builds:
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
# For 32-bit builds:
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
Si nécessaire, poursuivez avec la compilation des plugins chargeables de Zabbix agent 2.
Compilation des plugins chargeables de Zabbix agent 2
1. Téléchargez les sources du plugin Zabbix correspondant à votre version de Zabbix agent 2 (par exemple, zabbix-agent2-plugin-postgresql-8.0.0.tar.gz) et extrayez-les dans C:\Zabbix.
Avant d'installer un plugin, veuillez consulter son fichier README. Il peut contenir des exigences spécifiques et des instructions d'installation.
2. Accédez au répertoire du plugin extrait et compilez le plugin :
cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-8.0.0
# Pour les compilations 64 bits :
mingw32-make ARCH=AMD64
# Pour les compilations 32 bits :
mingw32-make ARCH=x86
Après la compilation, le binaire du plugin Zabbix agent 2 et son fichier de configuration se trouveront dans le même répertoire du plugin.
L'exécutable du plugin peut être placé n'importe où, à condition qu'il puisse être chargé par Zabbix agent 2. Indiquez le chemin vers le binaire du plugin dans le fichier de configuration du plugin, par exemple dans postgresql.conf pour le plugin PostgreSQL :
Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql
Le chemin vers le fichier de configuration du plugin doit être indiqué dans le paramètre Include du fichier de configuration de Zabbix agent 2 :
Include=/path/to/plugin/configuration/file/postgresql.conf
Passez à la section configuration pour plus de détails sur la configuration des plugins.
Compilation manuelle de Zabbix agent 2
Cette méthode de compilation de Zabbix agent 2 convient aux utilisateurs qui ont besoin d’un contrôle total sur l’environnement de compilation ou qui se trouvent dans un environnement restreint où l’utilisation de vcpkg n’est pas possible.
Cette section contient des instructions pour compiler manuellement Zabbix agent 2, notamment l’installation des outils de compilation et des dépendances requis, puis la compilation de l’agent.
Configuration des outils de compilation
1. Téléchargez et installez MSYS2 (disponible sous forme d’installateur MSI).
Pendant l’installation, veillez à spécifier C:\Zabbix\msys64 comme dossier d’installation.
2. Téléchargez et installez Go (disponible sous forme d’installateur MSI ; voir les versions de Go actuellement prises en charge).
Pendant l’installation, veillez à spécifier C:\Zabbix\Go comme dossier d’installation.
3. Téléchargez la distribution MinGW qui utilise la bibliothèque d’exécution Microsoft Visual C ; par exemple :
- Pour les compilations 64 bits :
x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z - Pour les compilations 32 bits :
i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z
Ensuite, extrayez-la dans C:\Zabbix\mingw64 (ou C:\Zabbix\mingw32 pour les compilations 32 bits).
Installation d’OpenSSL
Pour compiler l’agent Zabbix sans prise en charge de TLS, passez à la section Installation de PCRE2.
1. Ouvrez le terminal MSYS2 MSYS avec des privilèges d’administrateur et exécutez les commandes suivantes :
pacman -S perl-Locale-Maketext-Simple
pacman -S nasm
pacman -S make
pacman -S cmake
2. Téléchargez l’archive des sources OpenSSL et extrayez-la dans C:\Zabbix\openssl-3.5.0.
3. Accédez au répertoire OpenSSL extrait et créez le script build.sh suivant :
- Pour les compilations 64 bits :
#!/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
- Pour les compilations 32 bits :
#!/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
Assurez-vous de révoquer les droits d’écriture des utilisateurs non administrateurs sur le répertoire C:\Zabbix\x64\OpenSSL-Win64-350-static.
Sinon, l’agent chargera les paramètres SSL depuis un chemin pouvant être modifié par des utilisateurs non privilégiés, ce qui entraînera une vulnérabilité de sécurité potentielle.
- L’option
no-sharedrend autonomes les bibliothèques statiques OpenSSL libcrypto.lib et libssl.lib, de sorte que les binaires Zabbix incluent OpenSSL sans nécessiter de DLL externes. Cela signifie que les binaires Zabbix peuvent être copiés sur d’autres machines Windows sans les bibliothèques OpenSSL ; toutefois, lorsqu’une nouvelle version corrective d’OpenSSL est publiée, l’agent Zabbix devra être recompilé. - Sans l’option
no-shared, Zabbix s’appuie sur les DLL OpenSSL à l’exécution. Cela signifie que les mises à jour d’OpenSSL peuvent ne pas nécessiter la recompilation de l’agent Zabbix ; toutefois, lors de la copie vers d’autres machines, les DLL OpenSSL doivent également être copiées.
Pour plus d’informations sur les autres options de configuration d’OpenSSL, consultez la documentation OpenSSL.
4. Configurez et installez OpenSSL en exécutant le script (notez que cela peut prendre un certain temps) :
cd /c/Zabbix/openssl-3.5.0
./build.sh
Installation de PCRE2
1. Téléchargez l’archive source de PCRE2 et extrayez-la dans C:\Zabbix\pcre2-10.45.
2. Ouvrez le terminal MSYS2 MSYS avec les privilèges d’administrateur.
Ensuite, créez un répertoire build dans le répertoire PCRE2 extrait et accédez-y :
mkdir /c/Zabbix/pcre2-10.45/build
cd /c/Zabbix/pcre2-10.45/build
3. Configurez PCRE2 :
# For 64-bit builds:
export PATH="/c/Zabbix/mingw64/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x64/PCRE2" ..
# For 32-bit builds:
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" ..
Si des erreurs se produisent, il est recommandé de supprimer le cache CMake avant de tenter de répéter le processus de compilation CMake.
Le cache (CMakeCachecache.txt) se trouve dans le répertoire build du répertoire PCRE2 extrait.
4. Installez PCRE2 :
make install
Compilation de Zabbix agent 2
1. Téléchargez l’archive des sources de Zabbix et extrayez-la dans C:\Zabbix\zabbix-8.0.0.
Si vous devez générer une archive des sources à partir du dépôt de sources brut (par exemple, pour appliquer des correctifs personnalisés ou compiler à partir du code source le plus récent), exécutez les commandes suivantes sur une machine Linux avec Go installé (requis pour configurer 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
Cela créera une archive des sources, qui pourra ensuite être copiée sur une machine Windows.
2. Ouvrez l’invite de commandes avec les privilèges administrateur. Ensuite, accédez au répertoire de compilation de Zabbix et compilez Zabbix agent ; veillez à spécifier correctement les répertoires où OpenSSL et PCRE2 sont installés :
- Pour les compilations 64 bits :
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
# Avec prise en charge de TLS :
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"
# Sans prise en charge de TLS :
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
- Pour les compilations 32 bits :
cd C:\Zabbix\zabbix-8.0.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%
# Avec prise en charge de TLS :
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"
# Sans prise en charge de TLS :
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"
Après la compilation, le binaire de Zabbix agent 2 se trouvera dans C:\Zabbix\zabbix-8.0.0\bin\win64 (ou C:\Zabbix\zabbix-8.0.0\bin\win32 pour les compilations 32 bits).
Les fichiers de configuration de Zabbix agent 2 se trouvent dans C:\Zabbix\zabbix-8.0.0\src\go\conf.
Pour exécuter l’agent, copiez le binaire zabbix_agent2.exe et ses fichiers de configuration dans un dossier dédié (par exemple, C:\Zabbix\agent2), puis exécutez 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
Si nécessaire, poursuivez avec la compilation des plugins chargeables de Zabbix agent 2.