Blog CLEMANET
Systèmes et réseaux

Comment installer et configurer Zabbix version 5.0

Zabbix est un logiciel de supervision open source pour monitorer des serveurs, des matériels réseaux, des applications et beaucoup d'autres choses.

Dans cet article, nous installerons zabbix 5.0 sur une distribution Linux Centos 8 avec une base de donnée MariaDB et le serveur web Apache.

Zabbix dashboard

Nous avons utilisé la documentation en ligne sur le site de Zabbix.

Pré-requis: installation de la base de donnée MariaDB

[root@Centos-zabbix ~]# dnf install mariadb-server
...
Résumé de la transaction
=========================================================================================================
Installer  54 Paquets

Taille totale des téléchargements : 43 M
Taille des paquets installés : 208 M
Voulez-vous continuer ? [o/N] : o
...
Terminé !
[root@Centos-zabbix ~]#

Puis on démarre le logiciel de base de donnée MariaDB

[root@Centos-zabbix ~]# systemctl start mariadb
[root@Centos-zabbix ~]# systemctl enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
[root@Centos-zabbix ~]# **systemctl status mariadb**
● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-07-04 21:24:59 CEST; 29s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
...
[root@Centos-zabbix ~]#

On crée le mot de passe root de la base et on configure quelques éléments de sécurité comme la désactivation du compte root pour les connexions à distance et la suppression des bases de test.

[root@Centos-zabbix ~]# mysql_secure_installation

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n]
 ... Success!

Disallow root login remotely? [Y/n]
 ... Success!

Remove test database and access to it? [Y/n]
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@Centos-zabbix ~]#

Installation du logiciel zabbix

Téléchargement du dépot Centos

[root@Centos-zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
Récupération de https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
attention : /var/tmp/rpm-tmp.5zuCnH: Entête V4 RSA/SHA512 Signature, clé ID a14fe591: NOKEY
Verifying...                          ################################# [100%]
Préparation...                       ################################# [100%]
Mise à jour / installation...
   1:zabbix-release-5.0-1.el8         ################################# [100%]
[root@Centos-zabbix ~]#  dnf clean all
20 fichiers supprimés
[root@Centos-zabbix ~]#

Téléchargement des paquets et installation de zabbix

On installe aussi l'agent zabbix pour superviser le serveur Zabbix.

root@Centos-zabbix ~]# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
...
Résumé de la transaction
=========================================================================================================
Installer  38 Paquets

Taille totale des téléchargements : 15 M
Taille des paquets installés : 58 M
Voulez-vous continuer ? [o/N] : o
...
Terminé !
[root@Centos-zabbix ~]#

Initialisation de la base de donnée

On se connecte à la base MariaDB avec le compte root précédemment créé et on crée la base Zabbix ainsi qu'un utilisateur.

[root@Centos-zabbix ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.3.17-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> create user zabbix@localhost identified by 'passwordcompliqué';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> quit;
Bye
[root@Centos-zabbix ~]#

Création du schéma dans la base de donnée zabbix

[root@Centos-zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password:

Configuration de la base de donnée dans le fichier de conf de zabbix

La ligne du mot de passe est décommentée et on indique le mot de passe de l'utilisateur zabbix de la base de donnée.

[root@Centos-zabbix ~]# vi /etc/zabbix/zabbix_server.conf
...
### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=passwordcompliqué
...

Configuration pour l'interface web

Pour les tests, on laisse le port 80 (http). Pour une mise en production, il faudra penser à mettre un certificat et utiliser le protocole https.

On configure la timezone pour le serveur.

[root@Centos-zabbix ~]# vi /etc/php-fpm.d/zabbix.conf
php_value[date.timezone] = Europe/Paris

On modifie le pare-feu du serveur pour ouvrir le port 80 (http) pour l'accès à l'interface web ainsi que le port 10051 pour recevoir les requêtes des agents.

[root@Centos-zabbix ~]# firewall-cmd --zone=public --permanent --add-service=http
success
[root@Centos-zabbix ~]# firewall-cmd --zone=public --permanent --add-port=10051/tcp
success
[root@Centos-zabbix ~]# firewall-cmd --reload
success
[root@Centos-zabbix ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: cockpit dhcpv6-client http ssh
  ports: 10051/tcp

Démarrage de Zabbix et des services associés

Commande pour démarrer les services:

[root@Centos-zabbix ~]# systemctl enable zabbix-server zabbix-agent httpd php-fpm

Une message d'erreur s'affiche, mettant en cause SELinux. Voici quelques commandes pour gérer le problème.

Gestion de SELinux

Avant de démarrer, il faut configurer SELinux. Deux solutions: soit vous le désactivez, soit vous effectuez quelques ajustements.

Dans ce tuto, je vais faire modifier des éléments de configuration.

Dans mon cas, suite au démarrage de Zabbix, l'erreur qui apparait dans le fichier /var/log/audit/audit.log est:

type=AVC msg=audit(1593899510.129:785): avc:  denied  { dac_override } for  pid=3460 comm="zabbix_server" capability=1  scontext=system_u:system_r:zabbix_t:s0 tcontext=system_u:system_r:zabbix_t:s0 tclass=capability permissive=0
type=AVC msg=audit(1593898076.353:225): avc:  denied  { create } for  pid=1921 comm="zabbix_agentd" scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:system_r:zabbix_agent_t:s0 tclass=unix_dgram_socket permissive=0

Je lance la commande suivante sur le fichier:

[root@Centos-zabbix audit]# sealert -a /var/log/audit/audit.log

Et j'effectue les modifications indiquées suite à cette commande.

[root@Centos-zabbix ~]# ausearch -c "zabbix_server" --raw | audit2allow -M my-zabbixserver
******************** IMPORTANT ***********************
Pour activer cette politique de paquet, exécutez:

semodule -i my-zabbixserver.pp

[root@Centos-zabbix ~]# semodule -i my-zabbixserver.pp
[root@Centos-zabbix ~]# ausearch -c "zabbix_agentd" --raw | audit2allow -M my-zabbixagentd
******************** IMPORTANT ***********************
Pour activer cette politique de paquet, exécutez:

semodule -i my-zabbixagentd.pp

[root@Centos-zabbix ~]# semodule -X 300 -i my-zabbixagentd.pp
[root@Centos-zabbix ~]#

Enfin, je lance les commandes suivantes:

[root@Centos-zabbix ~]# setsebool httpd_can_network_connect 1
[root@Centos-zabbix ~]# setsebool -P zabbix_can_network 1
[root@Centos-zabbix ~]# setsebool -P daemons_enable_cluster_mode 1

Démarrage des services

Dans mon cas, les modifications sur SELinux permettent de démarrer les services sans désactiver SELinux.

[root@Centos-zabbix ~]# systemctl enable zabbix-server zabbix-agent httpd php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent.service → /usr/lib/systemd/system/zabbix-agent.service.
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
[root@Centos-zabbix ~]# systemctl restart zabbix-server zabbix-agent httpd php-fpm

Connexion à l'interface web Zabbix

L'interface de bienvenue s'affiche.

Interface de bienvenue

On vérifie que toute les options sont à OK.

Zabbix vérification option

On configure l'accès à la base en entrant le mot de passe au minimum.

Zabbix base de donnée

On entre le nom du serveur ou son IP ainsi que le port d'écoute du serveur Zabbix.

Zabbix ip et nom

Enfin, le résumé des informations saisies.

Zabbix resumé information Zabbix fenetre connexion

On peut maintenant se connecter.

Zabbix fenetre login

Le nom d'utilisateur par défaut est: Admin. Le mot de passe zabbix par défaut est: zabbix.

Zabbix dashboard

Si vous avez des remarques ou des questions, n'hésitez pas à laisser un message dans le e-mail contact au bas de la page.