Installation à partir des sources

Vous pouvez obtenir la toute dernière version de Zabbix en la compilant à partir des sources. Voir aussi Obtention du code source de Zabbix.

Un tutoriel étape par étape pour installer Zabbix à partir des sources est fourni ici.

Installation des démons Zabbix

1 Téléchargez l’archive des sources

Accédez à la page de téléchargement de Zabbix et téléchargez l’archive des sources. Une fois le téléchargement terminé, extrayez les sources en exécutant :

tar -zxvf zabbix-8.0.0.tar.gz

Saisissez la version correcte de Zabbix dans la commande. Elle doit correspondre au nom de l’archive téléchargée.

2 Créer un compte utilisateur

Tous les processus daemon Zabbix s’exécutent sous des utilisateurs système non privilégiés.
Si un daemon Zabbix est démarré depuis un compte utilisateur non privilégié, il continuera à s’exécuter sous cet utilisateur.

Dans la configuration par défaut, si un daemon est démarré en tant que root, il basculera vers le compte utilisateur zabbix, qui doit donc exister. Pour créer un utilisateur système et un groupe zabbix, exécutez les commandes indiquées ci-dessous.

Système basé sur RedHat :

groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

Système basé sur Debian :

addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix

Il n’est pas nécessaire de créer un compte utilisateur distinct pour le frontend Zabbix.

Recommandation de sécurité

Si le server et l’agent Zabbix s’exécutent sur la même machine, il est recommandé de les exécuter sous des comptes utilisateur distincts. Le fait d’exécuter les deux sous le même utilisateur permet à l’agent d’accéder au fichier de configuration du serveur, ce qui pourrait exposer des informations sensibles, comme le mot de passe de la base de données, à tout utilisateur de niveau Admin dans Zabbix.

Exécuter Zabbix en tant que root, bin ou tout autre compte disposant de privilèges spéciaux constitue un risque de sécurité.

Répertoire personnel (facultatif)

Les processus Zabbix n’ont pas besoin d’un répertoire personnel ; sa création n’est donc généralement pas recommandée. Cependant, si vous avez besoin d’une fonctionnalité nécessitant un répertoire personnel (par exemple, pour stocker les identifiants MySQL dans $HOME/.my.cnf), vous pouvez le créer à l’aide des commandes indiquées ci-dessous.

Sur les systèmes basés sur RedHat, exécutez :

mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix

Sur les systèmes basés sur Debian, exécutez :

mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
3 Créer la base de données Zabbix

Pour les démons Zabbix server et proxy, ainsi que pour le frontend Zabbix, une base de données est requise. Elle n’est pas nécessaire pour exécuter l’ agent Zabbix.

Des scripts SQL sont fournis pour créer le schéma de la base de données et insérer le jeu de données. La base de données du proxy Zabbix nécessite uniquement le schéma, tandis que la base de données du serveur Zabbix requiert également le jeu de données en plus du schéma.

Après avoir créé une base de données Zabbix, passez aux étapes suivantes de la compilation de Zabbix.

4 Configurer les sources

C99 avec les extensions GNU est requis pour compiler le serveur Zabbix, le proxy Zabbix ou l'agent Zabbix. Cette version peut être spécifiée explicitement en définissant CFLAGS="-std=gnu99" :

export CFLAGS="-std=gnu99"

Si vous installez depuis le dépôt Git Zabbix, il est nécessaire d'exécuter d'abord :\

./bootstrap.sh

Lors de la configuration des sources pour un serveur ou un proxy Zabbix, vous devez spécifier le type de base de données à utiliser. Un seul type de base de données peut être compilé avec un processus de serveur ou de proxy à la fois.

Pour voir toutes les options de configuration prises en charge, exécutez, dans le répertoire des sources Zabbix extraites :

./configure --help

Pour configurer les sources pour un serveur Zabbix et un agent, vous pouvez exécuter une commande comme :

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares

Pour configurer les sources pour un serveur Zabbix (avec PostgreSQL, etc.), vous pouvez exécuter :

./configure --enable-server --with-postgresql --with-net-snmp

Pour configurer les sources pour un proxy Zabbix (avec SQLite, etc.), vous pouvez exécuter :

./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2

Pour configurer les sources pour un agent Zabbix, vous pouvez exécuter :

./configure --enable-agent

ou, pour l'agent Zabbix 2 :

./configure --enable-agent2

Une version de Go prise en charge doit être installée pour compiler l'agent Zabbix 2.

Remarques sur les options de compilation :

  • --enable-agent - compile l'agent Zabbix, ainsi que les utilitaires en ligne de commande Zabbix get et Zabbix sender.
  • --with-libcurl - requis pour la supervision des machines virtuelles, l'authentification SMTP et les éléments Zabbix agent web.page.*. Voir aussi : Prérequis (libcurl).
  • --with-libxml2 - requis pour la supervision des machines virtuelles.
  • --with-libpcre2[=DIR] - Zabbix compile toujours avec la bibliothèque PCRE2 ; cette option permet uniquement de spécifier un chemin d'installation PCRE2 personnalisé.
  • --with-mysql=/path/to/mysql_config - spécifie le chemin vers une configuration particulière de bibliothèque cliente MySQL. Utile lorsque plusieurs versions de MySQL ou MariaDB sont installées.
  • --enable-static - lie les bibliothèques statiquement (non pris en charge sur Solaris). Utilisez cette option si vous prévoyez de distribuer des binaires compilés sur des systèmes ne disposant pas des bibliothèques requises. Non recommandé lors de la compilation du serveur Zabbix. Pour compiler le serveur statiquement, une version statique de chaque bibliothèque externe est requise. Le script de configuration ne vérifie pas cela automatiquement.
  • --with-stacksize=<value> - définit la taille de pile par thread en kilo-octets (par exemple, --with-stacksize=512). Vous pouvez augmenter cette valeur si Zabbix se bloque ou se fige en raison de débordements de pile (par exemple, lors du prétraitement sur des systèmes avec de faibles limites par défaut de pile de thread).

Si ./configure échoue en raison de bibliothèques manquantes ou d'autres problèmes, veuillez consulter le fichier config.log pour obtenir des informations détaillées sur l'erreur.

Par exemple, si libssl est manquante, le message d'erreur immédiat peut être trompeur :

checking for main in -lmysqlclient... no
configure: error: Not found mysqlclient library

Dans ce cas, config.log révèle la cause réelle :

/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto

Voir aussi :

5 Compiler et tout installer

Si vous installez depuis le dépôt Git Zabbix, il est nécessaire d’exécuter d’abord :\

$ make dbschema

make install

Cette étape doit être exécutée par un utilisateur disposant de permissions suffisantes (généralement 'root', ou en utilisant sudo).

L’exécution de make install installera par défaut les binaires des démons (zabbix_server, zabbix_agentd, zabbix_proxy) dans /usr/local/sbin et les binaires client (zabbix_get, zabbix_sender) dans /usr/local/bin.

Pour spécifier un emplacement différent de /usr/local, utilisez une clé --prefix à l’étape précédente de configuration des sources, par exemple --prefix=/home/zabbix. Dans ce cas, les binaires des démons seront installés dans <prefix>/sbin, tandis que les utilitaires le seront dans <prefix>/bin. Les pages de manuel seront installées dans <prefix>/share.

6 Vérifier et modifier les fichiers de configuration
  • modifiez le fichier de configuration de l'agent Zabbix /usr/local/etc/zabbix_agentd.conf

Vous devez configurer ce fichier pour chaque hôte sur lequel zabbix_agentd est installé.

Vous devez spécifier l'adresse IP du serveur Zabbix dans le fichier. Les connexions provenant d'autres hôtes seront refusées.

  • modifiez le fichier de configuration du serveur Zabbix /usr/local/etc/zabbix_server.conf

Vous devez spécifier le nom de la base de données, l'utilisateur et le mot de passe (le cas échéant).

Le reste des paramètres conviendra avec leurs valeurs par défaut si vous avez une petite installation (jusqu'à dix hôtes supervisés). Vous devriez toutefois modifier les paramètres par défaut si vous souhaitez maximiser les performances du serveur Zabbix (ou du proxy).

  • si vous avez installé un proxy Zabbix, modifiez le fichier de configuration du proxy /usr/local/etc/zabbix_proxy.conf

Vous devez spécifier l'adresse IP du serveur et le nom d'hôte du proxy (qui doit être connu du serveur), ainsi que le nom de la base de données, l'utilisateur et le mot de passe (le cas échéant).

Avec SQLite, le chemin complet vers le fichier de base de données doit être spécifié ; l'utilisateur et le mot de passe de la base de données ne sont pas requis.

7 Démarrer les démons

Exécutez zabbix_server côté serveur.

zabbix_server

Assurez-vous que votre système autorise l’allocation de 36 Mo (ou un peu plus) de mémoire partagée, sinon le serveur risque de ne pas démarrer et vous verrez « Cannot allocate shared memory for <type of cache>. » dans le fichier journal du serveur. Cela peut se produire sur FreeBSD, Solaris 8.\

Exécutez zabbix_agentd sur toutes les machines surveillées.

zabbix_agentd

Assurez-vous que votre système autorise l’allocation de 2 Mo de mémoire partagée, sinon l’agent risque de ne pas démarrer et vous verrez « Cannot allocate shared memory for collector. » dans le fichier journal de l’agent. Cela peut se produire sur Solaris 8.

Si vous avez installé Zabbix proxy, exécutez zabbix_proxy.

zabbix_proxy

Installation de l’interface web Zabbix

Copie des fichiers PHP

L'interface web de Zabbix est écrite en PHP ; un serveur web prenant en charge PHP est donc nécessaire pour l'exécuter. L'installation consiste simplement à copier les fichiers PHP du répertoire ui vers le répertoire des documents HTML du serveur web.

Les emplacements courants des répertoires de documents HTML pour les serveurs web Apache incluent :

  • /usr/local/apache2/htdocs (répertoire par défaut lors de l'installation d'Apache à partir des sources)
  • /srv/www/htdocs (OpenSUSE, SLES)
  • /var/www/html (Debian, Ubuntu, Fedora, RHEL)

Il est recommandé d'utiliser un sous-répertoire plutôt que la racine HTML. Pour créer un sous-répertoire et y copier les fichiers de l'interface web de Zabbix, exécutez les commandes suivantes en remplaçant <htdocs> par le répertoire réel :

mkdir <htdocs>/zabbix
cd ui
cp -a . <htdocs>/zabbix

Si vous prévoyez d'utiliser une autre langue que l'anglais, consultez Installation de langues supplémentaires pour l'interface web pour obtenir des instructions.

Installation de l’interface web

Veuillez consulter la page Installation de l’interface web pour obtenir des informations sur l’assistant d’installation de l’interface web de Zabbix.

Installation des plugins chargeables de Zabbix agent 2

L'installation des plugins chargeables de Zabbix agent 2 n'est nécessaire que si vous souhaitez superviser des cibles non couvertes par les plugins intégrés (par exemple, des serveurs ou clusters MongoDB, PostgreSQL et ses forks, etc.). Consultez la liste complète des plugins chargeables et des plugins intégrés.

Avant d'installer un plugin, veuillez consulter son fichier README. Il peut contenir des exigences spécifiques et des instructions d'installation.

Pour installer à partir des sources, commencez par télécharger et extraire l'archive des sources du plugin chargeable.

Pour compiler le plugin, accédez au répertoire du plugin extrait et exécutez make :

make

Une version de Go prise en charge doit être installée pour compiler les plugins chargeables de Zabbix agent 2.

L'exécutable du plugin peut être placé n'importe où, à condition qu'il puisse être chargé par Zabbix agent 2. Spécifiez 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 spécifié dans le paramètre Include du fichier de configuration de Zabbix agent 2 :

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

Consultez la section configuration pour plus de détails sur la configuration des plugins.

Les plugins chargeables fournis par Zabbix utilisent des makefiles simples avec les cibles de compilation suivantes :

  • make - compiler le plugin
  • make clean - supprimer tous les fichiers créés lors de la compilation du plugin
  • make check - exécuter les auto-tests (nécessite une cible de supervision réelle, par exemple une base de données PostgreSQL)
  • make style - vérifier le style du code Go avec golangci-lint
  • make format - formater le code Go avec go fmt
  • make dist - créer une archive source incluant toutes les dépendances

Installation de Java gateway

Il est nécessaire d’installer Java gateway uniquement si vous souhaitez surveiller des applications JMX. Java gateway est léger et ne nécessite pas de base de données.

Pour installer à partir des sources, commencez par télécharger et extraire l’archive des sources.

Pour compiler Java gateway, exécutez le script ./configure avec l’option --enable-java. Il est recommandé de spécifier l’option --prefix afin de demander un chemin d’installation autre que le chemin par défaut /usr/local, car l’installation de Java gateway créera toute une arborescence de répertoires, et pas seulement un seul exécutable.

./configure --enable-java --prefix=$PREFIX

Pour compiler et empaqueter Java gateway dans un fichier JAR, exécutez make. Notez que pour cette étape, vous aurez besoin des exécutables javac et jar dans votre chemin.

make

Vous disposez maintenant d’un fichier zabbix-java-gateway-$VERSION.jar dans src/zabbix_java/bin. Si l’exécution de Java gateway depuis src/zabbix_java dans le répertoire de distribution vous convient, vous pouvez alors passer aux instructions de configuration et d’exécution de Java gateway. Sinon, assurez-vous de disposer de privilèges suffisants et exécutez make install.

make install

Passez à la section configuration pour plus de détails sur la configuration et l’exécution de Java gateway.

Installation du service web Zabbix

L’installation du service web Zabbix n’est requise que si vous souhaitez utiliser les rapports planifiés.

Pour effectuer l’installation à partir des sources, commencez par télécharger puis extraire l’archive des sources.

Pour compiler le service web Zabbix, exécutez le script ./configure avec l’option --enable-webservice.

Une version de Go prise en charge doit être installée pour compiler le service web Zabbix.

Exécutez zabbix_web_service sur la machine où le service web est installé :

zabbix_web_service

Passez à la configuration pour plus de détails sur la configuration de la génération des rapports planifiés.

Obtention du code source de Zabbix

Il existe plusieurs façons d’obtenir le code source de Zabbix :

  • Vous pouvez télécharger les versions stables publiées depuis le site officiel de Zabbix
  • Vous pouvez télécharger les compilations nightly depuis la page développeur du site officiel de Zabbix
  • Vous pouvez obtenir la dernière version de développement depuis le système de dépôt de code source Git :

Un client Git doit être installé pour cloner le dépôt. Le paquet officiel du client Git en ligne de commande s’appelle généralement git dans les distributions. Pour l’installer, par exemple, sur Debian/Ubuntu, exécutez :

sudo apt-get update
sudo apt-get install git

Pour récupérer l’ensemble du code source de Zabbix, placez-vous dans le répertoire où vous souhaitez enregistrer le code, puis exécutez :

git clone https://git.zabbix.com/scm/zbx/zabbix.git

Problèmes de compilation

Voici les problèmes connus concernant la compilation de Zabbix à partir des sources. Pour tous les autres cas, consultez la page Problèmes connus.

Bibliothèque dans un emplacement non standard

Zabbix vous permet de spécifier une bibliothèque située dans un emplacement non standard. Dans l’exemple ci-dessous, Zabbix exécutera curl-config depuis l’emplacement non standard spécifié et utilisera sa sortie pour déterminer la bonne version de libcurl à utiliser.

$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Cela fonctionnera si c’est la seule version de libcurl installée sur le système, mais ce ne sera pas forcément le cas si une autre version de libcurl est installée dans un emplacement standard (par le gestionnaire de paquets, par exemple). C’est notamment le cas lorsque vous avez besoin d’une version plus récente de la bibliothèque pour Zabbix et de l’ancienne pour d’autres applications.

Par conséquent, spécifier un composant dans un emplacement non standard ne fonctionnera pas toujours si le même composant existe également dans un emplacement standard.

Par exemple, si vous utilisez une version plus récente de libcurl installée dans /usr/local alors que le paquet libcurl est toujours installé, Zabbix peut sélectionner la mauvaise version et la compilation échouera :

usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
/tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
collect2: error: ld returned 1 exit status

Ici, la fonction curl_easy_header() n’est pas disponible dans l’ancienne bibliothèque /usr/lib/x86_64-linux-gnu/libcurl.so, mais elle est disponible dans la plus récente /usr/local/lib/libcurl.so.

Le problème vient de l’ordre des options de l’éditeur de liens, et une solution consiste à spécifier le chemin complet vers la bibliothèque dans une variable LDFLAGS :

$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Notez l’option -Wl,--no-as-needed, qui peut être nécessaire sur certains systèmes (voir aussi : options d’édition de liens par défaut sur les systèmes basés sur Debian).

Taille de pile trop petite sur certains systèmes

Si Zabbix plante ou se fige en raison de débordements de pile, vous pouvez augmenter la taille de pile par thread à l’aide de l’option --with-stacksize lors de la configuration des sources. Ce problème peut survenir sur les systèmes dont les limites par défaut de pile de thread sont faibles, en particulier pendant le prétraitement, où plusieurs threads sont créés.

L’exemple suivant définit la taille de pile à 512 Ko par thread :

./configure --enable-server --with-mysql --with-stacksize=512

Vous pouvez vérifier les limites de pile des threads du système à l’exécution à l’aide de la commande ulimit -s sur les systèmes basés sur Linux.