Installation

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche
 
Ligne 110 : Ligne 110 :
 
En l'occurrence, le déploiement, à ce jour, de Zabbix, étant à l'état de POC, il ne sera pas donné d'espace disque supplémentaire aux 3 Go déjà disponible. Une surveillance particulière de l'évolution de la taille de la base de données devra donc avoir lieu, afin d'allouer, en cas de saturation, plus d'espace disque si nécessaire.
 
En l'occurrence, le déploiement, à ce jour, de Zabbix, étant à l'état de POC, il ne sera pas donné d'espace disque supplémentaire aux 3 Go déjà disponible. Une surveillance particulière de l'évolution de la taille de la base de données devra donc avoir lieu, afin d'allouer, en cas de saturation, plus d'espace disque si nécessaire.
  
== Déploiement ==
+
==Déploiement==
=== Téléchargement des sources ===
+
===Base de données===
Se rendre sur la page officielle de téléchargement Zabbix, récupérer le lien de téléchargement et télécharger le paquet sur le serveur :
 
wget -O ~/downloads/zabbix-4.2.4.tar.gz https://netcologne.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.2.4/zabbix-4.2.4.tar.gz
 
 
 
Décompresser le fichier dans le dossier <code>/local/builds</code> :
 
tar -xzf ~/downloads/zabbix-4.2.4.tar.gz -C /local/builds/
 
 
 
Se rendre dans le dossier des sources et commencer la configuration de la compilation :
 
cd /local/builds/zabbix-4.2.4
 
 
 
=== Création utilisateur et groupe ===
 
Pour créer l'utilisateur et le groupe ''zabbix'', lancer les commandes suivantes :
 
groupadd --system zabbix
 
useradd --system -g zabbix -d /home/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
 
 
 
Créer le répertoire ''home'' de l'utilisateur ''zabbix'' :
 
mkdir -m u=rwx,g=,o= -p /home/zabbix
 
chown zabbix:zabbix /home/zabbix
 
 
 
=== Paramétrage base de données ===
 
 
Se connecter à la base de données MySQL avec l'utilisateur ''root'' :
 
Se connecter à la base de données MySQL avec l'utilisateur ''root'' :
 
  mysql -uroot -p
 
  mysql -uroot -p
Ligne 170 : Ligne 151 :
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Se rendre dans le dossier <code>database/mysql</code> :
+
===PHP===
  cd database/mysql
+
Créer le fichier de configuration <code>/local/php/php7/etc/php-fpm.d/zabbix.conf</code> du pool PHP pour Zabbix et y insérer le contenu suivant :
 +
<syntaxhighlight lang="ini">
 +
[zabbix]
 +
user = php-fpm
 +
group = php-fpm
 +
 
 +
; Socket Unix dédié à Zabbix
 +
listen = /local/php/sockets/php7_$pool.sock
 +
 
 +
; Donner à Apache (www) les droits d'accès au socket
 +
listen.owner = www
 +
listen.group = www
 +
 
 +
; Définition du chemin d'accès des logs
 +
access.log = /data/logs/$pool/$pool_php7.access.log
 +
slowlog = /data/logs/$pool/$pool_php7.log.slow
 +
php_admin_value[error_log] = /data/logs/$pool/$pool_php7.log
 +
php_admin_flag[log_errors] = on
 +
; https://www.php.net/manual/fr/errorfunc.constants.php
 +
php_admin_value[error_reporting] = E_NOTICE
 +
 
 +
; Tuning du pool php-fpm
 +
pm = dynamic
 +
pm.max_children = 5
 +
pm.start_servers = 2
 +
pm.min_spare_servers = 1
 +
pm.max_spare_servers = 3
 +
pm.status_path = /status
 +
ping.path = /ping
 +
</syntaxhighlight>
 +
 
 +
Redémarrer PHP pour prise en compte des modifications :
 +
  systemctl restart php7-fpm.service
  
Lancer l'importation des données ''Zabbix'' dans la base de données :
+
===Apache===
<syntaxhighlight lang="bash">
+
Editer le fichier de configuration <code>/local/www/current/conf/sites/01_vmexploit02.conf</code> et y insérer le contenu suivant :
mysql -uzabbix_user -p zabbix_db < schema.sql
+
<syntaxhighlight lang="apache">
mysql -uzabbix_user -p zabbix_db < images.sql
+
# Configuration Zabbix
mysql -uzabbix_user -p zabbix_db < data.sql
+
Alias /zab /data/www/zabbix/current
 +
<Directory "/data/www/zabbix/current">
 +
Options FollowSymLinks
 +
DirectoryIndex index.php
 +
AllowOverride All
 +
Require all granted
 +
<FilesMatch \.php$>
 +
SetHandler "proxy:unix:/local/php/sockets/php7_zabbix.sock|fcgi://localhost/"
 +
</FilesMatch>
 +
</Directory>
 +
# Fin de configuration Zabbix
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== Configuration de la compilation ===
+
Recharger la configuration Apache pour prise en compte :
 +
httpd -k graceful
 +
 
 +
===Zabbix===
 +
====Par compilation====
 +
=====Téléchargement des sources=====
 +
Se rendre sur la page officielle de téléchargement Zabbix, récupérer le lien de téléchargement et télécharger le paquet sur le serveur :
 +
wget -O ~/downloads/zabbix-4.4.0.tar.gz https://freefr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.4.0/zabbix-4.4.0.tar.gz
 +
 
 +
Décompresser le fichier dans le dossier <code>/local/builds</code> :
 +
tar -xzf ~/downloads/zabbix-4.4.0.tar.gz -C /local/builds/
 +
 
 +
Se rendre dans le dossier des sources et commencer la configuration de la compilation :
 +
cd /local/builds/zabbix-4.4.0
 +
 
 +
=====Création utilisateur et groupe=====
 +
Pour créer l'utilisateur et le groupe ''zabbix'', lancer les commandes suivantes :
 +
groupadd --system zabbix
 +
useradd --system -g zabbix -d /home/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
 +
 
 +
Créer le répertoire ''home'' de l'utilisateur ''zabbix'' :
 +
mkdir -m u=rwx,g=,o= -p /home/zabbix
 +
chown zabbix:zabbix /home/zabbix
 +
 
 +
=====Configuration de la compilation=====
 
Retourner dans le dossier de compilation :
 
Retourner dans le dossier de compilation :
  cd /local/builds/zabbix-4.2.4
+
  cd /local/builds/zabbix-4.4.0
  
 
Créer le dossier dans lequel sera installé ''Zabbix'' :
 
Créer le dossier dans lequel sera installé ''Zabbix'' :
  mkdir -p /local/zabbix/zabbix-4.2.4
+
  mkdir -p /local/zabbix/zabbix-4.4.0
  
 
Créer le lien symbolique ''current'' :
 
Créer le lien symbolique ''current'' :
  ln -s /local/zabbix/zabbix-4.2.4 /local/zabbix/current
+
  ln -s /local/zabbix/zabbix-4.4.0 /local/zabbix/current
  
 
Lancer la configuration avec les options suivantes :
 
Lancer la configuration avec les options suivantes :
Ligne 196 : Ligne 243 :
 
--enable-server \
 
--enable-server \
 
--enable-agent \
 
--enable-agent \
 +
--enable-java \
 
--with-mysql \
 
--with-mysql \
 
--with-libxml2 \
 
--with-libxml2 \
Ligne 220 : Ligne 268 :
 
</pre>
 
</pre>
  
=== Compilation ===
+
=====Compilation=====
 
Lancer la compilation et l'installation avec :
 
Lancer la compilation et l'installation avec :
 
  make install
 
  make install
Ligne 229 : Ligne 277 :
 
make[2]: Rien à faire pour « install-exec-am ».
 
make[2]: Rien à faire pour « install-exec-am ».
 
make[2]: Rien à faire pour « install-data-am ».
 
make[2]: Rien à faire pour « install-data-am ».
make[2] : on quitte le répertoire « /local/builds/zabbix-4.2.4 »
+
make[2] : on quitte le répertoire « /local/builds/zabbix-4.4.0 »
make[1] : on quitte le répertoire « /local/builds/zabbix-4.2.4 »
+
make[1] : on quitte le répertoire « /local/builds/zabbix-4.4.0 »
 
</pre>
 
</pre>
  
=== Configuration ===
+
Donner les droits à l'utilisateur Zabbix pour l'accès aux exécutables Zabbix :
Fichiers de conf :
+
chown -R zabbix:zabbix /local/zabbix
*/local/zabbix/current/etc/zabbix_agentd.conf
+
 
*/local/zabbix/current/etc/zabbix_server.conf
+
=====Configuration serveur=====
 +
Il faut s'assurer que l'option <code>--enable-server</code> a été activée lors de la configuration de la compilation. Si ce n'est pas le cas, relancer la [[#Configuration de la compilation|configuration de la compilation]] puis la [[#Compilation|compilation]].
 +
 
 +
Editer ensuite le fichier de configuration <code>/local/zabbix/current/etc/zabbix_server.conf</code> et modifier les valeurs suivantes :
 +
<syntaxhighlight lang="ini">
 +
SourceIP=172.19.0.71
 +
LogFile=/data/logs/zabbix/zabbix_server.log
 +
DBName=zabbix_db
 +
DBUser=zabbix_user
 +
DBPassword=xxxxxxxxxxx
 +
DBSocket=/local/mysql/current/mysql.sock
 +
</syntaxhighlight>
 +
 
 +
Créer le fichier de configuration <code>/usr/lib/systemd/system/zabbix-server.service</code> du service du serveur Zabbix et y insérer le contenu suivant :
 +
<syntaxhighlight lang="ini">
 +
[Unit]
 +
Description=Zabbix Server
 +
After=syslog.target network.target
  
Fichier de service :
+
[Service]
*/usr/lib/systemd/system/zabbix-agent.service
+
Type=oneshot
*/usr/lib/systemd/system/zabbix-server.service
+
ExecStart=/local/zabbix/current/sbin/zabbix_server
 +
ExecReload=/local/zabbix/current/sbin/zabbix_server -R config_cache_reload
 +
RemainAfterExit=yes
  
Fichier PHP :
+
[Install]
*/local/php/php7/etc/php-fpm.d/zabbix.conf
+
WantedBy=multi-user.target
 +
</syntaxhighlight>
  
Fichier Apache :
+
Recharger le démon pour prise en compte des modifications :
*/local/www/current/conf/sites/01_vmexploit02.conf
+
systemctl daemon-reload
  
Pare-feu :
+
Se rendre dans le dossier <code>/local/zabbix/current/database/mysql</code> :
*firewall-cmd --add-port=10051/tcp ==> à corriger pour être sur la boucle locale 127.0.0.1
+
cd /local/zabbix/current/database/mysql
  
<pre>
+
Lancer l'importation des données ''Zabbix'' dans la base de données :
systemctl daemon-reload
+
<syntaxhighlight lang="bash">
chown -R zabbix:zabbix /local/zabbix
+
mysql -uzabbix_user -p zabbix_db < schema.sql
cp -a /local/builds/zabbix-4.2.4/frontends/php/* /data/www/zabbix/current/
+
mysql -uzabbix_user -p zabbix_db < images.sql
mkdir -p /data/www/zabbix/zabbix-4.2.4
+
mysql -uzabbix_user -p zabbix_db < data.sql
ln -s /data/www/zabbix/zabbix-4.2.4 /data/www/zabbix/current
+
</syntaxhighlight>
chown -R www:www /data/www/zabbix/
+
 
mkdir /data/logs/zabbix
+
=====Configuration agent=====
chown -R www:www /data/logs/zabbix
+
Il faut s'assurer que l'option <code>--enable-agent</code> a été activée lors de la configuration de la compilation. Si ce n'est pas le cas, relancer la [[#Configuration de la compilation|configuration de la compilation]] puis la [[#Compilation|compilation]].
</pre>
+
 
 +
Editer ensuite le fichier de configuration <code>/local/zabbix/current/etc/zabbix_agentd.conf</code> et modifier les valeurs suivantes :
 +
<syntaxhighlight lang="ini">
 +
LogFile=/data/logs/zabbix/zabbix_agentd.log
 +
Server=127.0.0.1
 +
ServerActive=127.0.0.1
 +
Hostname=Zabbix server vmexploit02
 +
</syntaxhighlight>
 +
 
 +
Créer le fichier de configuration <code>/usr/lib/systemd/system/zabbix-agent.service</code> du service de l'agent Zabbix et y insérer le contenu suivant :
 +
<syntaxhighlight lang="ini">
 +
[Unit]
 +
Description=Zabbix Monitor Agent
 +
After=syslog.target network.target
 +
 
 +
[Service]
 +
Type=forking
 +
ExecStart=/local/zabbix/current/sbin/zabbix_agentd -c /local/zabbix/current/etc/zabbix_agentd.conf
 +
 
 +
[Install]
 +
WantedBy=multi-user.target
 +
</syntaxhighlight>
 +
 
 +
Recharger le démon pour prise en compte des modifications :
 +
systemctl daemon-reload
 +
 
 +
=====Configuration interface utilisateur=====
 +
Créer le dossier qui hébergera l'interface utilisateur :
 +
mkdir -p /data/www/zabbix/zabbix-4.4.0
 +
ln -s /data/www/zabbix/zabbix-4.4.0 /data/www/zabbix/current
 +
 
 +
Déployer les fichiers de l'interface utilisateur depuis le dossier de compilation  :
 +
cp -a /local/builds/zabbix-4.2.4/frontends/php/* /data/www/zabbix/current/
 +
 
 +
Donner les droits à l'utilisateur web
 +
chown -R php-fpm:www /data/www/zabbix/
 +
 
 +
Pour la configuration des fichiers de logs, lancer les commandes suivantes :
 +
mkdir /data/logs/zabbix
 +
chown -R php-fpm:www /data/logs/zabbix
 +
 
 +
=====Configuration passerelle Java=====
 +
L'installation de la passerelle Java n'est requise que dans le cadre de surveillance d'applications Java JMX. La passerelle Java est légère et ne nécessite pas de base de données.
 +
 
 +
Il faut s'assurer que l'option <code>--enable-java</code> a été activée lors de la configuration de la compilation. Si ce n'est pas le cas, relancer la [[#Configuration de la compilation|configuration de la compilation]] puis la [[#Compilation|compilation]].
 +
 
 +
Editer ensuite le fichier de configuration <code>/local/zabbix/current/etc/zabbix_server.conf</code> et modifier les valeurs suivantes :
 +
<syntaxhighlight lang="ini">
 +
JavaGateway=127.0.0.1
 +
JavaGatewayPort=10052
 +
...
 +
StartJavaPollers=5
 +
</syntaxhighlight>
 +
 
 +
Créer le fichier de configuration <code>/usr/lib/systemd/system/zabbix-java-gateway.service</code> du service de la passerelle Java de Zabbix et y insérer le contenu suivant :
 +
<syntaxhighlight lang="ini">
 +
[Unit]
 +
Description=Zabbix Java Gateway
 +
After=syslog.target network.target
 +
 
 +
[Service]
 +
Type=forking
 +
ExecStart=/local/zabbix/current/sbin/zabbix_java_gateway
 +
User=zabbix
 +
Group=zabbix
 +
 
 +
[Install]
 +
WantedBy=multi-user.target
 +
</syntaxhighlight>
 +
 
 +
Recharger le démon pour prise en compte des modifications :
 +
systemctl daemon-reload
 +
 
 +
====Par gestionnaire de paquets====
 +
Ajouter le dépôt Zabbix avec la commande suivante :
 +
rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
 +
 
 +
=====Configuration serveur=====
 +
Installer le serveur Zabbix avec la commande :
 +
yum install zabbix-server-mysql
 +
 
 +
Editer ensuite le fichier de configuration <code>/etc/zabbix/zabbix_server.conf</code> et modifier les valeurs suivantes :
 +
<syntaxhighlight lang="ini">
 +
SourceIP=172.19.0.71
 +
LogFile=/data/logs/zabbix/zabbix_server.log
 +
DBName=zabbix_db
 +
DBUser=zabbix_user
 +
DBPassword=xxxxxxxxxxx
 +
DBSocket=/local/mysql/current/mysql.sock
 +
</syntaxhighlight>
 +
 
 +
Importer les données en base avec la commande :
 +
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix_user -p zabbix_db
 +
 
 +
=====Configuration agent=====
 +
Lancer l'installation de l'agent via la commande :
 +
yum install zabbix-agent
 +
 
 +
Editer ensuite le fichier de configuration <code>/etc/zabbix/zabbix_agentd.conf</code> et modifier les valeurs suivantes :
 +
<syntaxhighlight lang="ini">
 +
LogFile=/data/logs/zabbix/zabbix_agentd.log
 +
Server=127.0.0.1
 +
ServerActive=127.0.0.1
 +
Hostname=Zabbix server vmexploit02
 +
</syntaxhighlight>
 +
 
 +
=====Configuration interface utilisateur=====
 +
Créer le dossier qui hébergera l'interface utilisateur :
 +
mkdir -p /data/www/zabbix/zabbix-4.4.0
 +
ln -s /data/www/zabbix/zabbix-4.4.0 /data/www/zabbix/current
 +
 
 +
Se rendre sur la page officielle de téléchargement Zabbix, récupérer le lien de téléchargement et télécharger le paquet sur le serveur :
 +
wget -O ~/downloads/zabbix-4.4.0.tar.gz https://freefr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.4.0/zabbix-4.4.0.tar.gz
 +
 
 +
Décompresser le fichier dans le dossier <code>/tmp</code> :
 +
tar -xzf ~/downloads/zabbix-4.4.0.tar.gz -C /tmp/
 +
 
 +
Déployer les fichiers de l'interface utilisateur depuis le dossier de compilation  :
 +
cp -a /tmp/zabbix-4.4.0/frontends/php/* /data/www/zabbix/current/
 +
 
 +
Supprimer le dossier dans <code>/tmp</code> :
 +
rm -rf /tmp/zabbix-4.4.0
 +
 
 +
Donner les droits à l'utilisateur Zabbix
 +
chown -R php-fpm:www /data/www/zabbix/
 +
 
 +
Pour la configuration des fichiers de logs, lancer les commandes suivantes :
 +
mkdir /data/logs/zabbix
 +
chown -R php-fpm:www /data/logs/zabbix
 +
 
 +
=====Configuration passerelle Java=====
 +
L'installation de la passerelle Java n'est requise que dans le cadre de surveillance d'applications Java JMX. La passerelle Java est légère et ne nécessite pas de base de données.
 +
 
 +
Lancer l'installation de l'agent via la commande :
 +
yum install zabbix-java-gateway
 +
 
 +
Editer ensuite le fichier de configuration <code>/etc/zabbix/zabbix_server.conf</code> et modifier les valeurs suivantes :
 +
<syntaxhighlight lang="ini">
 +
JavaGateway=127.0.0.1
 +
JavaGatewayPort=10052
 +
...
 +
StartJavaPollers=5
 +
</syntaxhighlight>
 +
 
 +
===Pare-feu===
 +
Pour autoriser le/les agent(s) Zabbix à communiquer sur l'adresse IP sur laquelle tourne le serveur Zabbix, lancer les commandes suivantes :
 +
firewall-cmd --add-port=10051/tcp
 +
firewall-cmd --add-port=10051/tcp --permanent

Version actuelle datée du 9 décembre 2019 à 15:16

Présentation

Cette section a pour objet de présenter l'installation de l'outil Zabbix.

Prérequis

Physique

La machine virtuelle myserver sur laquelle sera installé Zabbix est un serveur CentOs 7 dont les caractéristiques sont les suivantes :

  • CPU
    • 4 vCPU
  • RAM
    • 4 Go

Logiciel

  • BDD
    • MySQL 5.7.26
  • WebServer
    • Apache 2.4.39
  • PHP
    • 5.6.40
    • 7.3.4
  • Extension PHP
    • apcu, bz2, calendar, Core, ctype, curl, date, dom, fileinfo, filter, gd, hash, iconv, intl, json, ldap, libxml, mbstring, mysqli, mysqlnd, oci8, openssl, pcre, PDO, pdo_mysql, PDO_OCI, PDO_ODBC, pdo_sqlite, Phar, posix, Reflection, session, SimpleXML, soap, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zip et zlib

Au regard des prérequis listés sur [la documentation officielle de Zabbix 4.2], sachant que le nombre de serveurs surveillés est inférieur à 500, il manque les prérequis suivants :

  • Extension PHP
    • gd
      • l'extension n'a pas été compilée avec l'option --with-freetype-dir
    • bcmath
    • sockets
    • gettext

Re-compiler PHP en ajustant les options selon les prérequis ci-dessus.

Une fois PHP recompilé, vérifier que les prérequis sont respectés. Par exemple, pour le support freetype :

php7 -i|grep -i configure

Exemple de retour concluant :

Configure Command =>  './configure'  '--prefix=/local/php/php7' '--enable-fpm' '--with-fpm-user=php-fpm' '--with-fpm-group=php-fpm' '--with-fpm-systemd' '--with-openssl' '--with-kerberos' '--with-pcre-regex' '--with-zlib' '--with-bz2' '--enable-calendar' '--with-curl' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-ldap=/usr/include' '--enable-mbstring' '--with-mysqli' '--with-mysql-sock=/local/mysql/current/mysql.sock' '--with-oci8=instantclient,/usr/lib/oracle/18.5/client64/lib' '--with-pdo-mysql' '--with-pdo-oci=instantclient,/usr/lib/oracle/18.5/client64/lib,18.5' '--enable-soap' '--enable-zip' '--enable-mysqlnd' '--enable-intl' '--with-pdo-odbc=unixODBC,/usr' '--enable-bcmath' '--enable-sockets' '--with-gettext'

Pour les extensions bcmath, sockets et gettext :

php7 -m|grep -E "bcmath|sockets|gettext"

Exemple de retour concluant :

bcmath
gettext
sockets

Système

Les paquets suivants sont nécessaires :

  • Obligatoires
    • libpcre
    • libevent
    • libevent-devel
    • libpthread
    • zlib
    • zlib-devl
  • Optionnels
    • OpenIPMI
    • OpenIPMI-devel
    • libssh2
    • libssh2-devel
    • fping
    • libcurl
    • libcurl-devel
    • libiksemel
    • libxml2
    • libxml2-devel
    • net-snmp
    • net-snmp-devel

Pour vérifier la présence des paquets obligatoires :

rpm -qa|grep -E "pcre|libevent|zlib" && ll /usr/lib64/libpthread.so

Exemple de retour :

pcre-8.32-17.el7.x86_64
zlib-devel-1.2.7-18.el7.x86_64
zlib-1.2.7-18.el7.x86_64
pcre-devel-8.32-17.el7.x86_64
libevent-2.0.21-4.el7.x86_64
-rw-r--r--. 1 root root 222  9 avril 18:39 /usr/lib64/libpthread.so

Pour vérifier la présence des paquets optionnels :

rpm -qa|grep -E "OpenIPMI|libssh2|fping|libcurl|libiksemel|libxml2|net-snmp"

Exemple de retour :

OpenIPMI-libs-2.0.23-2.el7.x86_64
libcurl-7.29.0-51.el7.x86_64
libcurl-devel-7.29.0-51.el7.x86_64
OpenIPMI-modalias-2.0.23-2.el7.x86_64
libssh2-1.4.3-12.el7_6.2.x86_64
libxml2-devel-2.9.1-6.el7_2.3.x86_64
net-snmp-libs-5.7.2-37.el7.x86_64
libxml2-2.9.1-6.el7_2.3.x86_64
fping-3.10-4.el7.x86_64
OpenIPMI-2.0.23-2.el7.x86_64
libxml2-python-2.9.1-6.el7_2.3.x86_64

Si des paquets sont manquants, les installer.

Le paquet libiksemel n'est pas nécessaire dans la mesure où il n'y a pas de messagerie instantanée à surveiller sur les serveurs qui seront supervisés par Zabbix.

Base de données

Le calcul de l'espace disque nécessaire à la base de données dépend directement du nombre d'éléments à superviser, entre autres. Pour avoir une idée approximative de l'espace disque nécessaire, s'aider de la documentation : http://www.zabbix.com/documentation/4.2/manual/installation/requirements#database_size.

En l'occurrence, le déploiement, à ce jour, de Zabbix, étant à l'état de POC, il ne sera pas donné d'espace disque supplémentaire aux 3 Go déjà disponible. Une surveillance particulière de l'évolution de la taille de la base de données devra donc avoir lieu, afin d'allouer, en cas de saturation, plus d'espace disque si nécessaire.

Déploiement

Base de données

Se connecter à la base de données MySQL avec l'utilisateur root :

mysql -uroot -p

Renseigner le mot de passe comme demandé :

Enter password:

Le prompt suivant s'affiche confirmant la bonne connexion à la BDD :

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1981
Server version: 5.7.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Créer la base de données Zabbix :

create database zabbix_db character set utf8 collate utf8_bin;

Exemple de retour sans erreur :

 Query OK, 1 row affected (0,00 sec)

Créer l'utilisateur Zabbix, lui donner tous les droits sur la base zabbix_db et quitter :

grant all privileges on zabbix_db.* to zabbix_user@localhost identified by 'xxxxxxxxxxxxxxxx';
quit;

PHP

Créer le fichier de configuration /local/php/php7/etc/php-fpm.d/zabbix.conf du pool PHP pour Zabbix et y insérer le contenu suivant :

[zabbix]
user = php-fpm
group = php-fpm

; Socket Unix dédié à Zabbix
listen = /local/php/sockets/php7_$pool.sock

; Donner à Apache (www) les droits d'accès au socket
listen.owner = www
listen.group = www

; Définition du chemin d'accès des logs
access.log = /data/logs/$pool/$pool_php7.access.log
slowlog = /data/logs/$pool/$pool_php7.log.slow
php_admin_value[error_log] = /data/logs/$pool/$pool_php7.log
php_admin_flag[log_errors] = on
; https://www.php.net/manual/fr/errorfunc.constants.php
php_admin_value[error_reporting] = E_NOTICE

; Tuning du pool php-fpm
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /status
ping.path = /ping

Redémarrer PHP pour prise en compte des modifications :

systemctl restart php7-fpm.service

Apache

Editer le fichier de configuration /local/www/current/conf/sites/01_vmexploit02.conf et y insérer le contenu suivant :

# Configuration Zabbix
Alias /zab /data/www/zabbix/current
<Directory "/data/www/zabbix/current">
		Options FollowSymLinks
		DirectoryIndex index.php
		AllowOverride All
		Require all granted
		<FilesMatch \.php$>
				SetHandler "proxy:unix:/local/php/sockets/php7_zabbix.sock|fcgi://localhost/"
		</FilesMatch>
</Directory>
# Fin de configuration Zabbix

Recharger la configuration Apache pour prise en compte :

httpd -k graceful

Zabbix

Par compilation

Téléchargement des sources

Se rendre sur la page officielle de téléchargement Zabbix, récupérer le lien de téléchargement et télécharger le paquet sur le serveur :

wget -O ~/downloads/zabbix-4.4.0.tar.gz https://freefr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.4.0/zabbix-4.4.0.tar.gz

Décompresser le fichier dans le dossier /local/builds :

tar -xzf ~/downloads/zabbix-4.4.0.tar.gz -C /local/builds/

Se rendre dans le dossier des sources et commencer la configuration de la compilation :

cd /local/builds/zabbix-4.4.0
Création utilisateur et groupe

Pour créer l'utilisateur et le groupe zabbix, lancer les commandes suivantes :

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

Créer le répertoire home de l'utilisateur zabbix :

mkdir -m u=rwx,g=,o= -p /home/zabbix
chown zabbix:zabbix /home/zabbix
Configuration de la compilation

Retourner dans le dossier de compilation :

cd /local/builds/zabbix-4.4.0

Créer le dossier dans lequel sera installé Zabbix :

mkdir -p /local/zabbix/zabbix-4.4.0

Créer le lien symbolique current :

ln -s /local/zabbix/zabbix-4.4.0 /local/zabbix/current

Lancer la configuration avec les options suivantes :

./configure \
--prefix=/local/zabbix/current \
--enable-server \
--enable-agent \
--enable-java \
--with-mysql \
--with-libxml2 \
--with-net-snmp \
--with-ssh2 \
--with-openipmi \
--with-zlib \
--with-libpthread \
--with-libevent \
--with-openssl \
--with-ldap \
--with-libcurl \
--with-iconv

Exemple de retour sans erreur :

***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************
Compilation

Lancer la compilation et l'installation avec :

make install

Exemple de retour :

...
make[2]: Rien à faire pour « install-exec-am ».
make[2]: Rien à faire pour « install-data-am ».
make[2] : on quitte le répertoire « /local/builds/zabbix-4.4.0 »
make[1] : on quitte le répertoire « /local/builds/zabbix-4.4.0 »

Donner les droits à l'utilisateur Zabbix pour l'accès aux exécutables Zabbix :

chown -R zabbix:zabbix /local/zabbix
Configuration serveur

Il faut s'assurer que l'option --enable-server a été activée lors de la configuration de la compilation. Si ce n'est pas le cas, relancer la configuration de la compilation puis la compilation.

Editer ensuite le fichier de configuration /local/zabbix/current/etc/zabbix_server.conf et modifier les valeurs suivantes :

SourceIP=172.19.0.71
LogFile=/data/logs/zabbix/zabbix_server.log
DBName=zabbix_db
DBUser=zabbix_user
DBPassword=xxxxxxxxxxx
DBSocket=/local/mysql/current/mysql.sock

Créer le fichier de configuration /usr/lib/systemd/system/zabbix-server.service du service du serveur Zabbix et y insérer le contenu suivant :

[Unit]
Description=Zabbix Server
After=syslog.target network.target

[Service]
Type=oneshot
ExecStart=/local/zabbix/current/sbin/zabbix_server
ExecReload=/local/zabbix/current/sbin/zabbix_server -R config_cache_reload
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Recharger le démon pour prise en compte des modifications :

systemctl daemon-reload

Se rendre dans le dossier /local/zabbix/current/database/mysql :

cd /local/zabbix/current/database/mysql

Lancer l'importation des données Zabbix dans la base de données :

mysql -uzabbix_user -p zabbix_db < schema.sql
mysql -uzabbix_user -p zabbix_db < images.sql
mysql -uzabbix_user -p zabbix_db < data.sql
Configuration agent

Il faut s'assurer que l'option --enable-agent a été activée lors de la configuration de la compilation. Si ce n'est pas le cas, relancer la configuration de la compilation puis la compilation.

Editer ensuite le fichier de configuration /local/zabbix/current/etc/zabbix_agentd.conf et modifier les valeurs suivantes :

LogFile=/data/logs/zabbix/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server vmexploit02

Créer le fichier de configuration /usr/lib/systemd/system/zabbix-agent.service du service de l'agent Zabbix et y insérer le contenu suivant :

[Unit]
Description=Zabbix Monitor Agent
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/local/zabbix/current/sbin/zabbix_agentd -c /local/zabbix/current/etc/zabbix_agentd.conf

[Install]
WantedBy=multi-user.target

Recharger le démon pour prise en compte des modifications :

systemctl daemon-reload
Configuration interface utilisateur

Créer le dossier qui hébergera l'interface utilisateur :

mkdir -p /data/www/zabbix/zabbix-4.4.0
ln -s /data/www/zabbix/zabbix-4.4.0 /data/www/zabbix/current

Déployer les fichiers de l'interface utilisateur depuis le dossier de compilation :

cp -a /local/builds/zabbix-4.2.4/frontends/php/* /data/www/zabbix/current/

Donner les droits à l'utilisateur web

chown -R php-fpm:www /data/www/zabbix/

Pour la configuration des fichiers de logs, lancer les commandes suivantes :

mkdir /data/logs/zabbix
chown -R php-fpm:www /data/logs/zabbix
Configuration passerelle Java

L'installation de la passerelle Java n'est requise que dans le cadre de surveillance d'applications Java JMX. La passerelle Java est légère et ne nécessite pas de base de données.

Il faut s'assurer que l'option --enable-java a été activée lors de la configuration de la compilation. Si ce n'est pas le cas, relancer la configuration de la compilation puis la compilation.

Editer ensuite le fichier de configuration /local/zabbix/current/etc/zabbix_server.conf et modifier les valeurs suivantes :

JavaGateway=127.0.0.1
JavaGatewayPort=10052
...
StartJavaPollers=5

Créer le fichier de configuration /usr/lib/systemd/system/zabbix-java-gateway.service du service de la passerelle Java de Zabbix et y insérer le contenu suivant :

[Unit]
Description=Zabbix Java Gateway
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/local/zabbix/current/sbin/zabbix_java_gateway
User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target

Recharger le démon pour prise en compte des modifications :

systemctl daemon-reload

Par gestionnaire de paquets

Ajouter le dépôt Zabbix avec la commande suivante :

rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
Configuration serveur

Installer le serveur Zabbix avec la commande :

yum install zabbix-server-mysql

Editer ensuite le fichier de configuration /etc/zabbix/zabbix_server.conf et modifier les valeurs suivantes :

SourceIP=172.19.0.71
LogFile=/data/logs/zabbix/zabbix_server.log
DBName=zabbix_db
DBUser=zabbix_user
DBPassword=xxxxxxxxxxx
DBSocket=/local/mysql/current/mysql.sock

Importer les données en base avec la commande :

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix_user -p zabbix_db
Configuration agent

Lancer l'installation de l'agent via la commande :

yum install zabbix-agent

Editer ensuite le fichier de configuration /etc/zabbix/zabbix_agentd.conf et modifier les valeurs suivantes :

LogFile=/data/logs/zabbix/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server vmexploit02
Configuration interface utilisateur

Créer le dossier qui hébergera l'interface utilisateur :

mkdir -p /data/www/zabbix/zabbix-4.4.0
ln -s /data/www/zabbix/zabbix-4.4.0 /data/www/zabbix/current

Se rendre sur la page officielle de téléchargement Zabbix, récupérer le lien de téléchargement et télécharger le paquet sur le serveur :

wget -O ~/downloads/zabbix-4.4.0.tar.gz https://freefr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.4.0/zabbix-4.4.0.tar.gz

Décompresser le fichier dans le dossier /tmp :

tar -xzf ~/downloads/zabbix-4.4.0.tar.gz -C /tmp/

Déployer les fichiers de l'interface utilisateur depuis le dossier de compilation :

cp -a /tmp/zabbix-4.4.0/frontends/php/* /data/www/zabbix/current/

Supprimer le dossier dans /tmp :

rm -rf /tmp/zabbix-4.4.0

Donner les droits à l'utilisateur Zabbix

chown -R php-fpm:www /data/www/zabbix/

Pour la configuration des fichiers de logs, lancer les commandes suivantes :

mkdir /data/logs/zabbix
chown -R php-fpm:www /data/logs/zabbix
Configuration passerelle Java

L'installation de la passerelle Java n'est requise que dans le cadre de surveillance d'applications Java JMX. La passerelle Java est légère et ne nécessite pas de base de données.

Lancer l'installation de l'agent via la commande :

yum install zabbix-java-gateway

Editer ensuite le fichier de configuration /etc/zabbix/zabbix_server.conf et modifier les valeurs suivantes :

JavaGateway=127.0.0.1
JavaGatewayPort=10052
...
StartJavaPollers=5

Pare-feu

Pour autoriser le/les agent(s) Zabbix à communiquer sur l'adresse IP sur laquelle tourne le serveur Zabbix, lancer les commandes suivantes :

firewall-cmd --add-port=10051/tcp
firewall-cmd --add-port=10051/tcp --permanent