Installation
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== |
− | === | + | ===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> | ||
− | + | ===PHP=== | |
− | + | 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 | ||
− | + | ===Apache=== | |
− | <syntaxhighlight lang=" | + | Editer le fichier de configuration <code>/local/www/current/conf/sites/01_vmexploit02.conf</code> et y insérer le contenu suivant : |
− | + | <syntaxhighlight lang="apache"> | |
− | + | # 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 | ||
</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. | + | 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. | + | 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. | + | 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. | + | make[2] : on quitte le répertoire « /local/builds/zabbix-4.4.0 » |
− | make[1] : on quitte le répertoire « /local/builds/zabbix-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 : |
− | + | chown -R zabbix:zabbix /local/zabbix | |
− | + | ||
− | + | =====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 | ||
− | + | [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 | |
+ | </syntaxhighlight> | ||
− | + | Recharger le démon pour prise en compte des modifications : | |
− | + | systemctl daemon-reload | |
− | + | Se rendre dans le dossier <code>/local/zabbix/current/database/mysql</code> : | |
− | + | cd /local/zabbix/current/database/mysql | |
− | < | + | Lancer l'importation des données ''Zabbix'' dans la base de données : |
− | systemctl daemon-reload | + | <syntaxhighlight lang="bash"> |
− | + | 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. | + | mysql -uzabbix_user -p zabbix_db < data.sql |
− | ln -s /data/www/zabbix/zabbix-4. | + | </syntaxhighlight> |
− | chown -R | + | |
− | mkdir /data/logs/zabbix | + | =====Configuration agent===== |
− | chown -R | + | 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]]. |
− | </ | + | |
+ | 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
Sommaire
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
- gd
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