Installation et configuration de Zabbix v4

Zabbix est un logiciel de supervision qui permet de collecter des données , de traiter ces données sous formes de graphes et d’envoyer des alertes.
Il peut s’appliquer à la surveillance d’infrastructure réseaux, de serveurs ou encore d’applications.
La configuration, les rapports et les statistiques sont réalisés via une interface web.

Enfin, Zabbix est développé et distribué sous licence GPL General Public License version 2.

Zabbix se compose de plusieurs parties: le serveur, l’interface web, le proxy (composant optionnel qui permet de collecter les données à la place du serveur).
Un agent est aussi disponible pour les clients.

Cette page s’appuie sur la documentation officielle.

Installation et configuration de Zabbix

Dans ce tuto, zabbix sera installé sur une distribution Linux Centos 7.5.

Pré-requis: installation du logiciel de gestion de base de donnée

Les données de configuration sont stockées dans une base de donnée.
Pour ce projet, nous allons installer MariaDB.
Remarque: Zabbix fonctionne avec d’autre système de gestion de base de données, par exemple Oracle, PostgreSQL, IBM DB2.

[root@localhost ~]# yum install mariadb-server
...
Terminé !

[root@localhost ~]# systemctl start mariadb.service
[root@localhost ~]# systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@localhost ~]#
[root@localhost ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

...

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

Thanks for using MariaDB!
[root@localhost ~]#

Installation du logiciel Zabbix

Installation du dépot logiciel Centos pour Zabbix

[root@localhost ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
Récupération de https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
attention : /var/tmp/rpm-tmp.fx1D85: Entête V4 RSA/SHA512 Signature, clé ID a14fe591: NOKEY
Préparation... ################################# [100%]
Mise à jour / installation...
1:zabbix-release-4.0-1.el7 ################################# [100%]
[root@localhost ~]#

Activation d’un dépot nécessaire à l’installation de Zabbix frontend.

On utilise la commande yum-config-manager. Si cette commande n’est pas disponible, on installe le paquet yum-utils et ses dépendances (python, …).

[root@localhost ~]# yum install yum-utils

puis:

[root@localhost ~]# yum-config-manager --enable rhel-7-server-optional-rpms
Modules complémentaires chargés : fastestmirror
[root@localhost ~]#

Installation du logiciel Zabbix avec le support de MySQL

[root@localhost ~]# yum install zabbix-server-mysql

Installé :
zabbix-server-mysql.x86_64 0:4.0.0-2.el7

Dépendances installées :
OpenIPMI-libs.x86_64 0:2.0.23-2.el7 OpenIPMI-modalias.x86_64 0:2.0.23-2.el7
fping.x86_64 0:3.10-1.el7 gnutls.x86_64 0:3.3.26-9.el7
...
Terminé !
[root@localhost ~]#

Installation de la partie frontend de Zabbix (l’interface web)

Dans notre cas, l’interface web de Zabbix est installée sur le même serveur que l’applicatif. On lance donc l’installation toujours avec le support de MySQL:

[root@localhost ~]# yum install zabbix-web-mysql
Installé :
zabbix-web-mysql.noarch 0:4.0.0-2.el7

Dépendances installées :
httpd.x86_64 0:2.4.6-80.el7.centos.1
httpd-tools.x86_64 0:2.4.6-80.el7.centos.1
.......
Terminé !
[root@localhost ~]#

Configuration des bases de données pour la partie serveur et proxy de Zabbix

On se connecte au logiciel de base de donnée pour créer la base zabbix.

[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 5.5.60-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.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'm0tdep@ss3';
Query OK, 0 rows affected (0.00 sec)

Puis on insère la structure dans la base que nous venons de créer.

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

On édite les fichiers de configuration pour le serveur pour vérifier les paramètres concernant la base de donnée.
Dans notre cas, le mot de passe de l’utilisateur de la base de donnée est indiqué.

[root@localhost ~]# vi /etc/zabbix/zabbix_server.conf
DBPassword=m0tdep@ss3

Démarrage du serveur Zabbix

[root@localhost ~]# systemctl start zabbix-server
[root@localhost ~]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@localhost ~]#

Il y a quand même un erreur dans les logs zabbix liée aux autorisations SElinux. La résolution de cette erreur est décrite à la fin de cet article.

Configuration et démarrage du service web

Dans le fichier de configuration apache associé à zabbix, il faut modifier la configuration des paramètres de date et heure (Europe/Paris dans mon cas).

[root@localhost ~]# vi /etc/httpd/conf.d/zabbix.conf
<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Paris
</IfModule>

Nous pouvons à présent activer apache au démarrage du serveur et on enchaine en démarrant le serveur apache.

[root@localhost zabbix]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since mer. 2018-10-17 14:20:47 CEST; 5s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 5842 (httpd)

Configuration du pare-feu pour autoriser les flux à destination du serveur

Avant d’accéder à l’interface web de zabbix, ouvrons les ports 80 et 443 (pour la sécurité par la suite).

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

Finalisation de la configuration de zabbix à partir de l’interface web

On entre dans le navigateur l’url de zabbix: http://10.0.2.15/zabbix.

Dans notre cas, l’IP du serveur est 10.0.2.15. On aurait pu aussi mettre un nom DNS.Introduction zabbix

Vérification des pré-requis: tout doit être OK.

Pré-requis

On complète les paramètres pour l’accès à la base de donnée.

Base de donnée zabbix

La configuration de l’accès à la partie backend de zabbix. Dans mon cas, le module est installé sur le même serveur que l’interface web, donc localhost.

Une dernière vérification

Et c’est parti

Par défaut le nom d’utilisateur est Admin et le mort de passe est zabbix.

Il nous reste pour cette partie à installer l’agent sur le serveur Zabbix pour la supervision de ce serveur et à configurer le protocole https pour sécuriser les connexions à l’interface web.

Installation de l’agent Zabbix pour monitorer le serveur

[root@localhost ~]# yum install zabbix-agent

[root@localhost ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@localhost ~]# systemctl start zabbix-agent
[root@localhost ~]#

L’agent communique bien avec l’interface web. Nous allons avoir nos premiers graphes dans quelques minutes.

Résolution du message « /var/run/zabbix/zabbix_server_preprocessing.sock »: [13] Permission denied

On lance l’interface et nous avons le message d’erreur: « Zabbix server is not running: the information displayed may not be current » qui apparait.

Une recherche dans /var/log/zabbix/zabbix_server.log nous indique le message d’erreur suivant:

cannot start preprocessing service: Cannot bind socket to "/var/run/zabbix/zabbix_server_preprocessing.sock": [13] Permission denied.

Visiblement, c’est un message causé par SElinux.

Nous installons l’utilitaire setroubleshoot pour en savoir plus sur l’erreur.

[root@localhost ~]# yum install setroubleshoot

puis on lance l’outil sealert sur le fichier de log audit.log

[root@localhost ~]# sealert -a /var/log/audit/audit.log
Si vous pensez que zabbix_server_mysql devrait être autorisé à accéder connectto sur zabbix_server_preprocessing.sock unix_stream_socket par défaut.
Alors vous devriez rapporter ceci en tant qu'anomalie.
Vous pouvez générer un module de stratégie local pour autoriser cet accès.
Faire
autoriser cet accès pour le moment en exécutant :
# ausearch -c "zabbix_server" --raw | audit2allow -M my-zabbixserver
# semodule -X 300 -i my-zabbixserver.pp

...

Messages d'audit bruts
type=AVC msg=audit(1539947818.866:538): avc: denied { create } for pid=6536 comm="zabbix_server" name="zabbix_server_alerter.sock" scontext=system_u:system_r:zabbix_t:s0 tcontext=system_u:object_r:zabbix_var_run_t:s0 tclass=sock_file


type=SYSCALL msg=audit(1539947818.866:538): arch=x86_64 syscall=bind success=no exit=EACCES a0=7 a1=7ffebbe7b410 a2=6e a3=8 items=0 ppid=6502 pid=6536 auid=4294967295 uid=997 gid=995 euid=997 suid=997 fsuid=997 egid=995 sgid=995 fsgid=995 tty=(none) ses=4294967295 comm=zabbix_server exe=/usr/sbin/zabbix_server_mysql subj=system_u:system_r:zabbix_t:s0 key=(null)

Hash: zabbix_server,zabbix_t,zabbix_var_run_t,sock_file,create

Nous suivons le conseil:

[root@localhost ~]# ausearch -c "zabbix_server" --raw | audit2allow -M my-zabbixserver
******************** IMPORTANT ***********************
To make this policy package active, execute:semodule -i my-zabbixserver.pp

[root@localhost ~]# semodule -X 300 -i my-zabbixserver.pp

[root@localhost ~]# setsebool -P daemons_enable_cluster_mode 1

Puis, le serveur est redémarré. Enfin, on teste que les processus sont bien actifs (zabbix-server et httpd).

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *