Installation

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche

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

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.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 /local/builds :

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 :

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;

Se rendre dans le dossier database/mysql :

cd 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 de la compilation

Retourner dans le dossier de compilation :

cd /local/builds/zabbix-4.2.4

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

mkdir -p /local/zabbix/zabbix-4.2.4

Créer le lien symbolique current :

ln -s /local/zabbix/zabbix-4.2.4 /local/zabbix/current

Lancer la configuration avec les options suivantes :

./configure \
--prefix=/local/zabbix/current \
--enable-server \
--enable-agent \
--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.2.4 »
make[1] : on quitte le répertoire « /local/builds/zabbix-4.2.4 »

Configuration

Fichiers de conf :

  • /local/zabbix/current/etc/zabbix_agentd.conf
  • /local/zabbix/current/etc/zabbix_server.conf

Fichier de service :

  • /usr/lib/systemd/system/zabbix-agent.service
  • /usr/lib/systemd/system/zabbix-server.service

Fichier PHP :

  • /local/php/php7/etc/php-fpm.d/zabbix.conf

Fichier Apache :

  • /local/www/current/conf/sites/01_vmexploit02.conf

Pare-feu :

  • firewall-cmd --add-port=10051/tcp ==> à corriger pour être sur la boucle locale 127.0.0.1
systemctl daemon-reload
chown -R zabbix:zabbix /local/zabbix
cp -a /local/builds/zabbix-4.2.4/frontends/php/* /data/www/zabbix/current/
mkdir -p /data/www/zabbix/zabbix-4.2.4
ln -s /data/www/zabbix/zabbix-4.2.4 /data/www/zabbix/current
chown -R www:www /data/www/zabbix/
mkdir /data/logs/zabbix
chown -R www:www /data/logs/zabbix