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
- Allez dans
Configuration->Hôtes->Créer un hôte. - Nom d'hôte :
zabbix-client - Nom visible :
Client Linux 192.168.2.200 - Groupes d'hôtes : Sélectionnez
Linux servers. - Dans la section
Interfaces, ajoutez une interfaceAgentavec l'Adresse IP :192.168.2.200. - Allez dans l'onglet
Modèles. - Dans
Lier de nouveaux modèles, recherchez et sélectionnezTemplate OS Linux by Zabbix agent. - Cliquez sur
Ajouter, puis surMettre à jouren 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
- Allez dans
Configuration->Modèles->Créer un modèle. - Nom du modèle :
Template Login Users - Nom visible :
Template Login Users - Groupes de modèles : Sélectionnez
Templates. - Cliquez sur
Ajouter.
2.2 Création d'un Groupe d'Éléments (Application)
- Dans le modèle
Template Login Users, allez dans l'ongletApplications->Créer une application. - Nom :
Login Users - Cliquez sur
Ajouter.
2.3 Création de l'Élément de Surveillance (Item)
- Dans le modèle, allez dans l'onglet
Éléments->Créer un élément. - Nom :
Number of login users - Clé :
login.users(doit correspondre à la clé personnalisée) - Intervalle d'actualisation :
10s - Période de rétention des données historiques :
30d - Cliquez sur
Ajouter.
2.4 Création du Déclencheur (Trigger)
- Dans le modèle, allez dans l'onglet
Déclencheurs->Créer un déclencheur. - Nom :
Number of login users is greater than 3 - Sévérité :
Moyenne(ou autre selon votre politique) - Expression : Cliquez sur
Ajouter. - Sélectionnez l'élément
Number of login users. - Fonction :
last() - Résultat :
> 3 - Cliquez sur
Insérer, puis surAjouter.
2.5 Création d'un Graphique
- Dans le modèle, allez dans l'onglet
Graphiques->Créer un graphique. - Nom :
Login Users Count - Cliquez sur
Ajouterdans la sectionÉléments, sélectionnezNumber of login users. - Cliquez sur
Ajouter.
2.6 Association du Modèle à un Hôte
- Allez dans
Configuration->Hôtes. - Cliquez sur le nom d'hôte du client (
zabbix-client). - Allez dans l'onglet
Modèles. - Recherchez
Template Login Userset sélectionnez-le. - 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)
- Allez dans
Administration->Types de médias->Créer un type de média. - Nom :
QQ Email - Serveur SMTP :
smtp.qq.com - Port SMTP :
25(ou 587 pour TLS) - SMTP HELO :
qq.com - Email SMTP : Votre adresse email QQ.
- Authentification :
Nom d'utilisateur et mot de passe. - Nom d'utilisateur : Votre adresse email QQ.
- Mot de passe : Votre code d'autorisation QQ Mail (généré depuis les paramètres de votre compte mail).
- Cliquez sur
Ajouter. - Dans l'onglet
Modèles de message, ajoutez un modèle pour le typeProblème.
3.2 Configuration des Médias pour un Utilisateur
- Allez dans
Paramètres utilisateur->Médias. - Cliquez sur
Ajouter. - Type :
QQ Email - Destinataire : Votre adresse email.
- Activé quand :
1-7,00:00-24:00(tous les jours, toute la journée). - Cliquez sur
Ajouter, puisMettre à jour.
3.3 Activation de l'Action d'Alerte
- Allez dans
Configuration->Actions. - 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
- Allez dans
Configuration->Découverte automatique->Créer une règle de découverte. - Nom :
Mon réseau LAN - Plage d'adresses IP :
192.168.2.1-254 - Intervalle de mise à jour :
30s - Vérifications : Cliquez sur
Ajouter. - Type de vérification :
Client Zabbix - Plage de ports :
10050 - Clé :
agent.ping - Critères d'unicité de l'hôte :
Adresse IP - Nom d'hôte :
Nom DNS(ou autre selon votre préférence) - Nom visible :
Nom d'hôte - Cochez
Activéet cliquez surMettre à 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
- Allez dans
Configuration->Actions-> ongletActions d'enregistrement automatique. Créer une action.- Nom :
Auto Registration - Conditions :
Nom d'hôtecontientzabbix-client(ou un motif corespondant). - Opérations : Ajoutez des opérations pour
Ajouter un hôte,Ajouter au groupe d'hôtes(ex:Linux servers), etAssocier au modèle(ex:Template OS Linux by Zabbix agent). - 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
- Allez dans
Administration->Agents proxy->Créer un proxy. - Nom du proxy :
zabbix-proxy - Mode du proxy :
Actif - Adresse du proxy :
192.168.2.77 - 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
- Allez dans
Configuration->Hôtes->Créer un hôte. - Configurez l'hôte comme précédemment (Nom d'hôte, Nom visible, Groupe, Interface Agent).
- Dans la section
Interfaces, assurez-vous que le champ Surveillé par le proxy est réglé surzabbix-proxy. - Associez les modèles appropriés.
- 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
- Allez dans
Configuration->Hôteset sélectionnez votre hôte Zabbix Server. - Allez dans l'onglet
Interfaces. - Cliquez sur
Ajouteret choisissezSNMPcomme type, avec le port161. - Dans l'onglet
Modèles, dissociez les modèles basés sur l'agent Zabbix. - Associez le modèle
Template OS Linux SNMP. - Cliquez sur
Mettre à jour.
L'icône de disponibilité de l'hôte devrait passer en mode SNMP.