Compilation de l'agent Zabbix sous Windows

Aperçu

Cette page montre 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 Build Tools for Visual Studio 2022)
  • 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 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 de compiler l'agent.

Selon vos besoins de supervision, des bibliothèques supplémentaires peuvent être nécessaires. Pour plus d'informations, consultez Configuration requise.

Avant de commencer le processus de compilation, veuillez garder à l'esprit ce qui suit :

  • Pour exécuter les commandes, utilisez x64 Native Tools Command Prompt (inclus dans Build Tools for Visual Studio 2022), lancé par un utilisateur disposant de permissions suffisantes pour écrire dans des dossiers protégés.
  • Il est recommandé de créer un répertoire de travail dans C:\Zabbix pour tous les fichiers source et dossiers de compilation. Cependant, les composants compilés doivent être installés dans C:\Program Files\Zabbix\x64.

Compilation de l'agent Zabbix avec vcpkg

Cette section contient des instructions pour compiler l'agent Zabbix 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 les outils requis pour compiler l'agent avec vcpkg :

  • Compilateur C (Microsoft Visual C++)
  • Outil en ligne de commande NMake
  • Gestionnaire de paquets vcpkg
  • x64 Native Tools Command Prompt

2. Initialisez vcpkg et installez les dépendances requises pour compiler l'agent Zabbix (notez que cela 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-8.0.0.

4. Accédez au répertoire de compilation de Zabbix (C:\Zabbix\zabbix-8.0.0\build\win32\project) et créez le script build.bat suivant ; veillez à spécifier correctement les répertoires où 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. Compilez l'agent Zabbix en exécutant le script :

build.bat

Après la compilation, les binaires des composants Zabbix se trouveront dans C:\Zabbix\zabbix-8.0.0\bin\win64. Le fichier de configuration de l'agent Zabbix se trouve dans C:\Zabbix\zabbix-8.0.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-8.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.0.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 nécessaires pour compiler l'agent manuellement :

  • Compilateur C (Microsoft Visual C++)
  • Outil en ligne de commande NMake
  • Invite de commandes x64 Native Tools
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). Pendant 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 NASM.

4. Téléchargez l’archive des sources 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 non administrateurs. Sinon, l’agent chargera les paramètres SSL à partir d’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-shared rend les bibliothèques statiques OpenSSL libcrypto.lib et libssl.lib 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 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 de 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.

6. Compilez OpenSSL et exécutez les tests (notez que cela peut prendre un certain temps) :

Exécutez les tests sans privilèges administratifs ; sinon, cela peut entraîner des résultats inattendus ou des risques de sécurité. Si certains tests échouent, consultez la documentation OpenSSL pour le dépannage.

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, 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 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 :

git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent --enable-ipv6 --prefix=`pwd`
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 et compilez l'agent Zabbix (ou d'autres composants) ; assurez-vous de spécifier correctement les répertoires où OpenSSL et PCRE2 sont installés :

cd C:\Zabbix\zabbix-8.0.0\build\win32\project

# Avec 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 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"

Après la compilation, les binaires des composants Zabbix se trouveront dans C:\Zabbix\zabbix-8.0.0\bin\win64. Le fichier de configuration de l'agent Zabbix se trouve dans C:\Zabbix\zabbix-8.0.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 lancez l'agent :

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.0.0\conf\zabbix_agentd.win.conf C:\Zabbix\agent\

C:\Zabbix\agent\zabbix_agentd.exe -c C:\Zabbix\agent\zabbix_agentd.win.conf -f