Installation et configuration du système de surveillance Zabbix 5.0

Introduction à Zabbix

Pourquoi utiliser Zabbix ?

En tant qu'ingénieur système, il est essentiel de maîtriser un système de surveillance pour observer l'état des serveurs, les métriques de trafic des sites web, et évaluer l'impact des déploiements ainsi que la santé générale des infrastructures. Un outil de surveillance performant permet de :

  • Visualiser l'état de tous les serveurs via une interface conviviale.
  • Accéder facilement aux données de surveillance depuis l'interface web.
  • Analyser les problèmes et les alertes survenus lors d'incidents passés.

Concepts et Architecture de Zabbix

Zabbix est une solution open-source d'entreprise offrant une surveillance distribuée des systèmes et des réseaux, accessible via une interface web. Il permet de surveiller divers paramètres réseau pour assurer la sécurité et la continuité des opérations des serveurs, avec un système de notification flexible pour une résolution rapide des problèmes.

Zabbix se compose de deux éléments principaux : le Zabbix Server et le Zabbix Agent (optionnel). Les données sont collectées en mode client/serveur et présentées/configurées via une interface web en mode navigateur/serveur.

Le Zabbix Server peut surveiller les serveurs distants et l'état du réseau via SNMP, Zabbix Agent, ping, et la surveillance de ports. Il peut fonctionner sur des systèmes d'exploitation comme Linux.

Le Zabbix Agent doit être installé sur les cibles de surveillance pour collecter des informations matérielles et système (mémoire, CPU, etc.).

SNMP (Simple Network Management Protocol) est un protocole standard pour la gestion des équipements réseau.

Principe de Surveillance de Zabbix

Le Zabbix Agent, installé sur les machines à surveiller, collecte périodiquement des données locales et les transmet au Zabbix Server. Le serveur stocke ces données dans une base de données, et l'interface web Zabbix permet de visualiser ces informations sous forme graphique.

Lorsqu'un élément est surveillé, un déclencheur (trigger) est configuré avec un seuil. Si la métrique surveillée dépasse ce seuil, des actions sont entreprises : envoi de notifications (email, SMS, messagerie instantanée) ou exécution de commandes (scripts shell, redémarrage, etc.).

Composants Logiciels de Zabbix

Le déploiement de Zabbix implique plusieurs composants logiciels :

  • zabbix_server : Le démon principal du serveur Zabbix, recevant les données de tous les autres composants.
  • zabbix_agent : Le démon client, responsable de la collecte des données locales (charge CPU, mémoire, utilisation disque, etc.).
  • zabbix_proxy : Un démon de proxy distribué pour la surveillance à grande échelle (souvent pour plus de 500 hôtes).
  • zabbix_get : Un outil en ligne de commande utilisé côté serveur ou proxy pour interroger les clients distants.
  • zabbix_sender : Un outil en ligne de commande pour envoyer des données au serveur ou au proxy, utile pour les vérifications longues.

Installation de Zabbix 5.0

Prérequis Environnementaux :

  • Serveur Zabbix : Minimum 2 Go de RAM, 4 Go recommandés.
  • IP du serveur Zabbix : 192.168.2.66
  • IP du client Zabbix : 192.168.2.200

1. Déploiement du Serveur Zabbix

1.1 Désactivation du pare-feu et configuration du nom d'hôte


systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zabbix-server
       

1.2 Obtention et configuration du dépôt Zabbix (Miroir AliCloud)


# Installer le dépôt Zabbix pour RHEL/CentOS 7
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

# Modifier le fichier de dépôt pour utiliser le miroir AliCloud
cd /etc/yum.repos.d/
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo

# Nettoyer le cache yum et mettre à jour
yum clean all && yum makecache

# Installer le serveur Zabbix et l'agent MySQL, ainsi que l'agent Zabbix
yum install -y zabbix-server-mysql zabbix-agent
       

1.3 Installation de SCL (Software Collections)

SCL permet d'installer des versions plus récentes de logiciels (comme PHP) sans interférer avec les versions système existantes. Zabbix 5.0 requiert PHP au minimum version 7.2.0.


yum install -y centos-release-scl
       

1.4 Configuration de l'interface web Zabbix

Installer les paquets nécessaires pour l'interface web et les configurer pour utiliser SCL.


# Assurez-vous que le dépôt zabbix-frontend est activé dans /etc/yum.repos.d/zabbix.repo
# enabled=1 sous [zabbix-frontend]

# Installer les paquets pour l'interface web avec SCL
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
       

1.5 Installation et configuration de la base de données (MariaDB)


# Installer MariaDB
yum install -y mariadb-server mariadb

# Activer et démarrer le service MariaDB
systemctl enable --now mariadb

# Sécuriser l'installation de MariaDB (définir un mot de passe pour root)
mysql_secure_installation
# Suivre les instructions, par exemple, définir le mot de passe root à 'MySecurePass'
       

1.6 Création de la base de données et de l'utilisateur Zabbix


# Se connecter à MariaDB avec le mot de passe root défini précédemment
mysql -u root -p'MySecurePass'

# Créer la base de données et l'utilisateur pour Zabbix
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
GRANT all ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'ZabbixPass';
flush privileges;
exit;
       

1.7 Importation du schéma de base de données


# Localiser le fichier SQL d'installation
# rpm -ql zabbix-server-mysql | grep create.sql.gz

# Importer le schéma dans la base de données Zabbix
zcat /usr/share/doc/zabbix-server-mysql-*/create.sql.gz | mysql -uroot -p'MySecurePass' zabbix
       

1.8 Configuration du Zabbix Server

Modifier le fichier de configuration du serveur Zabbix pour spécifier le mot de passe de la base de données.


vim /etc/zabbix/zabbix_server.conf
# Modifier la ligne DBPassword
DBPassword=ZabbixPass
       

1.9 Configuration PHP pour l'interface web

Configurer le fuseau horaire dans le fichier de configuration PHP-FPM.


vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
# Décommenter et modifier la ligne date.timezone
php_value[date.timezone] = Asia/Shanghai
       

1.10 Démarrage des services Zabbix et Apache


# Redémarrer les services nécessaires
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm

# Activer les services au démarrage
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
       

1.11 Accès à l'interface web Zabbix

Ouvrir un navigateur et accéder à l'adresse : http://192.168.2.66/zabbix. Suivre les étapes de l'assistant d'installation, en entrant le mot de passe de la base de données ('ZabbixPass') lorsque demandé.

L'identifiant par défaut est Admin et le mot de passe est zabbix.

1.12 Correction de l'affichage des caractères chinois (si nécessaire)

Si des caractères chinois apparaissent corrompus, installez une police de caractères et copiez-la.


yum install -y wqy-microhei-fonts
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
# Redémarrer httpd et rafraîchir la page web
systemctl restart httpd
       

2. Déploiement du Client Zabbix (Agent 2)

Zabbix 5.0 utilise zabbix-agent2, une nouvelle version développée en Go.

Le serveur Zabbix écoute sur le port 10051, et le client Zabbix Agent 2 écoute sur le port 10050.

2.1 Désactivation du pare-feu et configuration du nom d'hôte


systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zabbix-client
       

Configuration des résolutions DNS (sur serveur et client) :


# Editer le fichier /etc/hosts sur les deux machines
vim /etc/hosts
# Ajouter les lignes suivantes :
192.168.2.66 zabbix-server
192.168.2.200 zabbix-client
       

2.2 Synchronisation de l'heure

Assurer la synchronisation de l'heure entre le serveur et le client.


# Installer ntpdate si nécessaire
yum install -y ntpdate
# Synchroniser l'heure
ntpdate -u pool.ntp.org
       

2.3 Configuration du fuseau horaire

Vérifier que le fuseau horaire est cohérent.


mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
       

2.4 Installation de Zabbix Agent 2

Utiliser le même dépôt Zabbix que pour le serveur.


# Si le dépôt n'est pas encore configuré sur le client :
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cd /etc/yum.repos.d/
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
yum clean all && yum makecache

# Installer zabbix-agent2
yum install -y zabbix-agent2
       

2.5 Configuration de Zabbix Agent 2


vim /etc/zabbix/zabbix_agent2.conf
# Modifier les lignes suivantes :
Server=192.168.2.66     # IP du serveur Zabbix
ServerActive=192.168.2.66 # IP du serveur Zabbix pour la communication active
Hostname=zabbix-client  # Nom d'hôte unique pour ce client
       

2.6 Démarrage et activation de Zabbix Agent 2


systemctl start zabbix-agent2
systemctl enable zabbix-agent2

# Vérifier que le port 10050 est à l'écoute
netstat -natp | grep zabbix
       

2.7 Vérification de la connectivité depuis le serveur Zabbix

Utiliser l'outil zabbix_get pour tester la communication avec l'agent.


# Installer zabbix-get sur le serveur si nécessaire
yum install -y zabbix-get

# Tester la communication
zabbix_get -s '192.168.2.200' -p 10050 -k 'agent.ping'
# Devrait retourner '1'

zabbix_get -s '192.168.2.200' -p 10050 -k 'system.hostname'
# Devrait retourner 'zabbix-client'
       

zabbix_get est utile pour vérifier la configuration de l'agent et tester les clés personnalisées.

2.8 Ajout de l'hôte dans l'interface web Zabbix

  1. Allez dans Configuration -> Hôtes -> Créer un hôte.
  2. Nom d'hôte : zabbix-client
  3. Nom visible : Client Linux 192.168.2.200
  4. Groupes d'hôtes : Sélectionnez Linux servers.
  5. Dans la section Interfaces, ajoutez une interface Agent avec l'Adresse IP : 192.168.2.200.
  6. Allez dans l'onglet Modèles.
  7. Dans Lier de nouveaux modèles, recherchez et sélectionnez Template OS Linux by Zabbix agent.
  8. Cliquez sur Ajouter, puis sur Mettre à jour en bas de la page.

Personnalisation de la Surveillance

Exemple : Surveillance du nombre d'utilisateurs connectés

Objectif : Limiter le nombre d'utilisateurs connectés à 3 ; déclencher une alerte si ce seuil est dépassé.

1. Création d'une Clé Personnalisée sur le Client

1.1 Commande Linux

La commande pour compter les utilisateurs connectés est :


who | wc -l
       

1.2 Création du fichier de configuration de l'Agent

Ajouter une directive UserParameter dans un nouveau fichier de configuration.


# S'assurer que le serveur Zabbix est configuré pour inclure ces fichiers
# Modifier /etc/zabbix/zabbix_agent2.conf et vérifier la ligne :
# Include=/etc/zabbix/zabbix_agent2.d/*.conf

# Créer le répertoire et le fichier de configuration
mkdir -p /etc/zabbix/zabbix_agent2.d/
vim /etc/zabbix/zabbix_agent2.d/userparameter_login.conf
# Ajouter la ligne suivante :
UserParameter=login.users,who | wc -l

# Redémarrer l'agent Zabbix
systemctl restart zabbix-agent2
       

1.3 Vérification depuis le Serveur Zabbix


zabbix_get -s '192.168.2.200' -p 10050 -k 'login.users'
# Devrait retourner le nombre actuel d'utilisateurs connectés.
       

2. Création d'un Modèle Personnalisé dans l'Interface Web

2.1 Création du Modèle

  1. Allez dans Configuration -> Modèles -> Créer un modèle.
  2. Nom du modèle : Template Login Users
  3. Nom visible : Template Login Users
  4. Groupes de modèles : Sélectionnez Templates.
  5. Cliquez sur Ajouter.

2.2 Création d'un Groupe d'Éléments (Application)

  1. Dans le modèle Template Login Users, allez dans l'onglet Applications -> Créer une application.
  2. Nom : Login Users
  3. Cliquez sur Ajouter.

2.3 Création de l'Élément de Surveillance (Item)

  1. Dans le modèle, allez dans l'onglet Éléments -> Créer un élément.
  2. Nom : Number of login users
  3. Clé : login.users (doit correspondre à la clé personnalisée)
  4. Intervalle d'actualisation : 10s
  5. Période de rétention des données historiques : 30d
  6. Cliquez sur Ajouter.

2.4 Création du Déclencheur (Trigger)

  1. Dans le modèle, allez dans l'onglet Déclencheurs -> Créer un déclencheur.
  2. Nom : Number of login users is greater than 3
  3. Sévérité : Moyenne (ou autre selon votre politique)
  4. Expression : Cliquez sur Ajouter.
  5. Sélectionnez l'élément Number of login users.
  6. Fonction : last()
  7. Résultat : > 3
  8. Cliquez sur Insérer, puis sur Ajouter.

2.5 Création d'un Graphique

  1. Dans le modèle, allez dans l'onglet Graphiques -> Créer un graphique.
  2. Nom : Login Users Count
  3. Cliquez sur Ajouter dans la section Éléments, sélectionnez Number of login users.
  4. Cliquez sur Ajouter.

2.6 Association du Modèle à un Hôte

  1. Allez dans Configuration -> Hôtes.
  2. Cliquez sur le nom d'hôte du client (zabbix-client).
  3. Allez dans l'onglet Modèles.
  4. Recherchez Template Login Users et sélectionnez-le.
  5. Cliquez sur Mettre à jour.

Vous pouvez maintenant visualiser le graphique dans Surveillance -> Graphiques.

3. Configuration des Alertes par Email

3.1 Création d'un Type de Média (Email QQ)

  1. Allez dans Administration -> Types de médias -> Créer un type de média.
  2. Nom : QQ Email
  3. Serveur SMTP : smtp.qq.com
  4. Port SMTP : 25 (ou 587 pour TLS)
  5. SMTP HELO : qq.com
  6. Email SMTP : Votre adresse email QQ.
  7. Authentification : Nom d'utilisateur et mot de passe.
  8. Nom d'utilisateur : Votre adresse email QQ.
  9. Mot de passe : Votre code d'autorisation QQ Mail (généré depuis les paramètres de votre compte mail).
  10. Cliquez sur Ajouter.
  11. Dans l'onglet Modèles de message, ajoutez un modèle pour le type Problème.

3.2 Configuration des Médias pour un Utilisateur

  1. Allez dans Paramètres utilisateur -> Médias.
  2. Cliquez sur Ajouter.
  3. Type : QQ Email
  4. Destinataire : Votre adresse email.
  5. Activé quand : 1-7,00:00-24:00 (tous les jours, toute la journée).
  6. Cliquez sur Ajouter, puis Mettre à jour.

3.3 Activation de l'Action d'Alerte

  1. Allez dans Configuration -> Actions.
  2. Trouvez l'action par défaut (ou créez-en une nouvelle) et assurez-vous qu'elle est activée et configurée pour envoyer des emails.

4. Test des Alertes par Email

Connectez-vous à votre serveur client avec plus de 3 utilisateurs simultanément. Vérifiez si une alerte est générée dans Surveillance -> Tableau de bord et si vous recevez l'email de notification.

Découverte et Enregistrement Automatiques

1. Découverte Automatique (Mode Passif de l'Agent 2)

Le serveur Zabbix recherche activement les clients sur un réseau défini.

1.1 Vérification du Service Agent


systemctl is-active zabbix-agent2.service
       

1.2 Suppression des Hôtes Existants

Dans l'interface web, supprimez les clients ajoutés manuellement pour éviter les doublons.

1.3 Configuration des Résolutions DNS

Assurez-vous que les résolutions DNS sont correctes dans /etc/hosts sur le serveur et les clients.

1.4 Configuration de la Règle de Découverte

  1. Allez dans Configuration -> Découverte automatique -> Créer une règle de découverte.
  2. Nom : Mon réseau LAN
  3. Plage d'adresses IP : 192.168.2.1-254
  4. Intervalle de mise à jour : 30s
  5. Vérifications : Cliquez sur Ajouter.
  6. Type de vérification : Client Zabbix
  7. Plage de ports : 10050
  8. Clé : agent.ping
  9. Critères d'unicité de l'hôte : Adresse IP
  10. Nom d'hôte : Nom DNS (ou autre selon votre préférence)
  11. Nom visible : Nom d'hôte
  12. Cochez Activé et cliquez sur Mettre à jour.

Associez une Action de découverte à cette règle (par exemple, Auto discovery. Linux servers) pour créer automatiquement les hôtes.

1.5 Consultation des Journaux du Serveur


tail -f /var/log/zabbix/zabbix_server.log
       

2. Enregistrement Automatique (Mode Actif de l'Agent 2)

L'Agent 2 contacte le serveur Zabbix pour s'enregistrer.

2.1 Préparation de l'Environnement

Désactivez la règle de découverte automatique si elle est active. Supprimez les hôtes existants.

2.2 Configuration de Zabbix Agent 2

Dans /etc/zabbix/zabbix_agent2.conf, assurez-vous que HostnameItem=system.hostname est décommenté.

2.3 Configuration de l'Action d'Enregistrement Automatique

  1. Allez dans Configuration -> Actions -> onglet Actions d'enregistrement automatique.
  2. Créer une action.
  3. Nom : Auto Registration
  4. Conditions : Nom d'hôte contient zabbix-client (ou un motif corespondant).
  5. Opérations : Ajoutez des opérations pour Ajouter un hôte, Ajouter au groupe d'hôtes (ex: Linux servers), et Associer au modèle (ex: Template OS Linux by Zabbix agent).
  6. Cliquez sur Ajouter.

2.4 Consultation des Journaux


tail -f /var/log/zabbix/zabbix_server.log
       

Déploiement d'un Proxy Zabbix

Le proxy Zabbix répartit la charge de surveillance, notamment dans les environnements distribués ou avec une latence réseau importante.

1. Installation et Configuration du Proxy

IP du proxy : 192.168.2.77

1.1 Configuration du Serveur Proxy


# Désactiver le pare-feu et configurer le nom d'hôte
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zabbix-proxy

# Installer le dépôt Zabbix et les paquets du proxy MySQL
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum install -y zabbix-proxy-mysql zabbix-get

# Installer et configurer MariaDB (similaire au serveur)
yum install -y mariadb-server mariadb
systemctl enable --now mariadb
mysql_secure_installation # Définir un mot de passe root, ex: 'ProxyPass'

# Créer la base de données et l'utilisateur pour le proxy Zabbix
mysql -u root -p'ProxyPass'
CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
GRANT all ON zabbix_proxy.* TO 'zabbix'@'localhost' IDENTIFIED BY 'ZbxProxyDbPass';
flush privileges;
exit;

# Importer le schéma de la base de données du proxy
zcat /usr/share/doc/zabbix-proxy-mysql-*/schema.sql.gz | mysql -uroot -p'ProxyPass' zabbix_proxy

# Configurer le proxy Zabbix
vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.2.66        # IP du serveur Zabbix principal
Hostname=zabbix-proxy      # Nom d'hôte unique du proxy
DBPassword=ZbxProxyDbPass  # Mot de passe de la base de données du proxy

# Démarrer et activer le service proxy
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
       

1.2 Configuration des Résolutions DNS

Mettez à jour le fichier /etc/hosts sur le serveur, le proxy et les clients.


# Sur le serveur Zabbix :
vim /etc/hosts
# Ajouter :
192.168.2.77 zabbix-proxy

# Sur le client Zabbix :
vim /etc/hosts
# Ajouter :
192.168.2.77 zabbix-proxy
       

1.3 Configuration du Proxy dans l'Interface Web

  1. Allez dans Administration -> Agents proxy -> Créer un proxy.
  2. Nom du proxy : zabbix-proxy
  3. Mode du proxy : Actif
  4. Adresse du proxy : 192.168.2.77
  5. Cliquez sur Ajouter.

1.4 Configuration des Clients pour Utiliser le Proxy

Modifiez le fichier de configuration de l'agent Zabbix sur les clients (/etc/zabbix/zabbix_agent2.conf).


vim /etc/zabbix/zabbix_agent2.conf
# Modifier les lignes suivantes pour pointer vers le proxy :
Server=192.168.2.77
ServerActive=192.168.2.77
       

1.5 Ajout de l'Hôte via le Proxy dans l'Interface Web

  1. Allez dans Configuration -> Hôtes -> Créer un hôte.
  2. Configurez l'hôte comme précédemment (Nom d'hôte, Nom visible, Groupe, Interface Agent).
  3. Dans la section Interfaces, assurez-vous que le champ Surveillé par le proxy est réglé sur zabbix-proxy.
  4. Associez les modèles appropriés.
  5. Cliquez sur Mettre à jour.

1.6 Redémarrage des Services


# Sur le client :
systemctl restart zabbix-agent2

# Sur le proxy :
systemctl restart zabbix-proxy
       

Vérifiez l'état de l'hôte dans l'interface Zabbix.

Surveillance SNMP

1. Configuration de la Surveillance SNMP

1.1 Installation des Outils SNMP


# Sur le serveur Zabbix
yum install -y net-snmp net-snmp-utils
       

1.2 Configuration du Daemon SNMP


vim /etc/snmp/snmpd.conf
# Ajouter ou modifier les lignes suivantes (exemple) :
com2sec readonly public 127.0.0.1
group   public  v1        readonly
group   public  v2c       readonly
view    all         included   .1
access  V1            public      V1      noauth  0 all none none
access  V2c           public      V2c     noauth  0 all none none

systemctl start snmpd
systemctl enable snmpd
       

1.3 Test avec snmpwalk


snmpwalk -v 2c -c public localhost .1.3.6.1.2.1.1
# Ou pour un nom système spécifique :
snmpwalk -v 2c -c public localhost sysName
       

1.4 Configuration de la Surveillance SNMP dans Zabbix

  1. Allez dans Configuration -> Hôtes et sélectionnez votre hôte Zabbix Server.
  2. Allez dans l'onglet Interfaces.
  3. Cliquez sur Ajouter et choisissez SNMP comme type, avec le port 161.
  4. Dans l'onglet Modèles, dissociez les modèles basés sur l'agent Zabbix.
  5. Associez le modèle Template OS Linux SNMP.
  6. Cliquez sur Mettre à jour.

L'icône de disponibilité de l'hôte devrait passer en mode SNMP.

Étiquettes: Zabbix Surveillance Monitoring installation Configuration

Publié le 15 juin à 05h23