1 Construction de l'agent Zabbix sous Windows
Présentation
Cette page explique comment compiler l'agent Zabbix à partir des sources sous Windows 10 (64 bits).
Ces instructions s'appliquent aux versions de Windows compatibles avec Visual Studio 2022.
La compilation de l'agent Zabbix nécessite :
- Un compilateur C (inclus dans les Build Tools for Visual Studio 2022)
- OpenSSL (pour les fonctionnalités de chiffrement de Zabbix)
- PCRE2 (expressions régulières compatibles avec Perl ; pour les fonctionnalités de recherche par motifs d'expressions régulières dans Zabbix)
Vous pouvez compiler l'agent Zabbix à l'aide de 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 la compilation de l'agent.
Selon vos besoins en matière de supervision, des bibliothèques supplémentaires peuvent être nécessaires. Pour plus d'informations, consultez la page Configuration requise.
Avant de commencer le processus de compilation, veuillez tenir compte des points suivants :
- Pour exécuter les commandes, utilisez l'invite de commandes « x64 Native Tools Command Prompt » (incluse dans les Build Tools for Visual Studio 2022), lancée par un utilisateur disposant des autorisations suffisantes pour écrire dans les dossiers protégés.
- Il est recommandé de créer un répertoire de travail
C:\Zabbixpour tous les fichiers sources et les dossiers de compilation. Cependant, les composants compilés doivent être installés dansC:\Program Files\Zabbix\x64.
Compilation de l'agent Zabbix avec vcpkg
Cette section contient les instructions pour compiler l'agent Zabbix avec vcpkg, un gestionnaire de paquets qui simplifie la gestion des dépendances et l'intégration aux 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 Développement Desktop en C++, qui inclut les outils requis pour compiler l'agent avec vcpkg :
- Compilateur C (Microsoft Visual C++)
- Outil de ligne de commande NMake
- Gestionnaire de paquets vcpkg
- « x64 Native Tools Command Prompt »
2. Ouvrez cmd.exe avec des privilèges d'administrateur, initialisez vcpkg et installez les dépendances requises pour compiler Zabbix (notez que cette opération peut prendre un certain temps) :
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. Téléchargez l'archive des sources de Zabbix et extrayez-la dans C:\Zabbix\zabbix-7.4.0.
4. Accédez au répertoire de compilation de Zabbix (C:\Zabbix\zabbix-7.4.0\build\win32\project) et créez le script build.bat suivant ;
veillez à spécifier correctement les répertoires dans lesquels OpenSSL et PCRE2 sont installés :
:: 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. Ouvrez « x64 Native Tools Command Prompt » et compilez l'agent Zabbix en exécutant le script :
cd C:\Zabbix\zabbix-7.4.0\build\win32\project
build.bat
Si vous avez ouvert une autre invite de commandes, initialisez d'abord l'environnement de compilation de 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
Placez entre guillemets les chemins qui contiennent des espaces.
Après la compilation, les fichiers binaires des composants Zabbix se trouvent dans C:\Zabbix\zabbix-7.4.0\bin\win64.
Le fichier de configuration de l'agent Zabbix se trouve dans C:\Zabbix\zabbix-7.4.0\conf.
Pour exécuter l'agent, copiez zabbix_agent.exe et son fichier de configuration dans un dossier dédié (par exemple, C:\Zabbix\agent), puis exécutez 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
Compilation manuelle de l'agent Zabbix
Cette méthode de compilation de l'agent Zabbix 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 l'agent Zabbix, ce qui inclut l'installation des outils de compilation et des dépendances requis (Perl, OpenSSL, PCRE2), puis la compilation de l'agent.
Installation des outils de compilation
1. Téléchargez et installez Build Tools for Visual Studio 2022. Lors de l'installation, veillez à sélectionner la charge de travail Développement Desktop en C++, qui inclut les outils requis pour compiler manuellement l'agent :
- Compilateur C (Microsoft Visual C++)
- Outil de ligne de commande NMake
- « x64 Native Tools Command Prompt »
Installation d’OpenSSL
Pour compiler l’agent Zabbix sans prise en charge de TLS, passez à la section Installation de PCRE2.
1. Téléchargez et installez Strawberry Perl (disponible sous forme d’installateur MSI).
Lors de l’installation, veillez à spécifier C:\Zabbix\Strawberry comme dossier d’installation.
2. Installez le module Perl Text::Template :
cpanm Text::Template
3. Vérifiez que le Netwide Assembler (NASM ; requis pour compiler OpenSSL) a été compilé lors de l’installation de Strawberry Perl :
nasm -v
# NASM version 2.16.01 compiled on May 3 2024
Si NASM n’est pas compilé, installez-le manuellement. Pour plus d’informations, consultez la documentation de NASM.
4. Téléchargez l’archive des sources d’OpenSSL et extrayez-la dans C:\Zabbix\openssl-3.5.0.
5. Accédez au répertoire extrait et configurez OpenSSL, par exemple :
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"
Si vous choisissez un répertoire personnalisé pour OpenSSL lors de la compilation de l’agent Zabbix sous Windows (par exemple, C:\zabbix ou C:\openssl-64bit), veillez à révoquer l’accès en écriture à ce répertoire pour les utilisateurs qui ne disposent pas de privilèges d’administrateur.
Sinon, l’agent chargera les paramètres SSL depuis un chemin pouvant être modifié par des utilisateurs non privilégiés, ce qui peut entraîner une vulnérabilité de sécurité.
- L’option
no-sharedrend les bibliothèques statiques libcrypto.lib et libssl.lib d’OpenSSL autonomes, 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 doit être recompilé. - Sans l’option
no-shared, Zabbix dépend des DLL OpenSSL lors de 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 sa copie sur 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 d’OpenSSL.
6. Compilez OpenSSL et exécutez les tests (notez que cette opération peut prendre un certain temps) :
Exécutez les tests sans privilèges d’administrateur ; sinon, cela peut entraîner des résultats inattendus ou des risques de sécurité. Si certains tests échouent, consultez la documentation d’OpenSSL pour résoudre le problème.
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. Installez OpenSSL :
nmake install
Pour installer uniquement les composants logiciels (bibliothèques et fichiers d’en-tête, mais pas la documentation), vous pouvez utiliser nmake install_sw.
Installation de PCRE2
1. Téléchargez et installez CMake (disponible sous forme d’installateur MSI).
Pendant l’installation, veillez à spécifier C:\Zabbix\CMake comme dossier d’installation et à sélectionner l’option Add CMake to the PATH environment variable.
2. Téléchargez l’archive source de PCRE2 et extrayez-la dans C:\Zabbix\pcre2-10.45.
3. 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
4. Configurez 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"
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.
5. Compilez PCRE2 à l’aide de NMake :
nmake
6. Installez PCRE2 :
cmake --install .
Compilation de l'agent Zabbix
1. Téléchargez l'archive des sources de Zabbix et extrayez-la dans C:\Zabbix\zabbix-7.4.0.
Si vous devez générer une archive des sources à partir du dépôt de sources brutes (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 :
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure
make dist
Cela créera une archive des sources, qui pourra ensuite être copiée sur une machine Windows.
2. Accédez au répertoire de compilation de Zabbix, ouvrez l'« invite de commandes des outils natifs x64 » et compilez l'agent Zabbix (ou d'autres composants) ; veillez à spécifier correctement les répertoires dans lesquels OpenSSL et PCRE2 sont installés :
# Si vous avez ouvert une autre invite de commandes, initialisez d'abord l'environnement de compilation 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
# Avec la prise en charge de 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"
# Sans la prise en charge de 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"
Placez entre guillemets les chemins qui contiennent des espaces.
Après la compilation, les fichiers binaires des composants Zabbix se trouveront dans C:\Zabbix\zabbix-7.4.0\bin\win64.
Le fichier de configuration de l'agent Zabbix se trouve dans C:\Zabbix\zabbix-7.4.0\conf.
Pour exécuter l'agent, copiez zabbix_agent.exe et son fichier de configuration dans un dossier dédié (par exemple, C:\Zabbix\agent), puis exécutez 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