Fondements de la surveillance système
L'objectif principal de la surveillance est d’assurer la continuité, la fiabilité et la sécurité des services informatiques. En surveillant en continu l’état des systèmes, les équipes techniques peuvent détecter rapidement les anomalies, anticiper les pannes et maintenir une disponibilité optimale des applications critiques.
Pourquoi surveiller ?
- Supervision continue sans interruption
- Réactivité face aux changements d'état du système
- Garantie de stabilité et de sécurité des services
- Maintenance d'une expérience utilisateur fluide
Quelles métriques surveiller ?
Un bon système de surveillance couvre plusieurs couches technologiques :
- Matériel : serveurs physiques, routeurs, commutateurs, pare-feux
- Système : utilisation CPU, occupation mémoire, espace disque, trafic réseau, état des processus, connexions TCP
- Services : disponibilité de Nginx, PHP, Tomcat, Redis, MySQL, etc.
- Application web : temps de réponse, latence, chargement de page
- Journaux : analyse via ELK ou solutions dédiées (ex: Logging-as-a-Service)
- Sécurité : pare-feu applicatif (WAF), intrusion detection, gestion des accès
- Réseaux distribués : suivi multi-datacenter avec outils comme Smokeping
- Métriques métier : volume de trafic généré par une campagne, taux d'inscription, retour sur investissement
Outils populaires de surveillance
- Zabbix : solution open source complète pour la collecte, l’alerte et la visualisation
- Lepus : spécialisé dans la surveillance des bases de données
- Open-Falcon : conçu par Xiaomi pour des environnements à grande échelle
- Prometheus : très utilisé dans les architectures conteneurisées (Docker, Kubernetes)
Installation rapide de Zabbix Server (version 4.0)
Voici les étapes clés pour déployer un serveur Zabbix complet sur CentOS/RHEL 7.
- Ajout du dépôt miroir Tsinghua : ```
yum install -y https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
- Installation des comopsants principaux : ```
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server
systemctl start mariadb && systemctl enable mariadb
- Création de la base de données : ```
mysqladmin password 'MotDePasseRoot'
mysql -uroot -p'MotDePasseRoot' <<EOF
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'MotDePasseZabbix';
FLUSH PRIVILEGES;
EOF
- Import du schéma initial : ```
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p'MotDePasseZabbix' zabbix
- Configuration du serveur Zabbix : ```
sed -i "s/# DBHost=.*/DBHost=localhost/" /etc/zabbix/zabbix_server.conf
echo "DBPassword=MotDePasseZabbix" >> /etc/zabbix/zabbix_server.conf
- Démarrage du service : ```
systemctl start zabbix-server
systemctl enable zabbix-server
- Configuration du fuseau horaire Apache : ```
sed -i "s|# php_value date.timezone .*|php_value date.timezone Asia/Shanghai|" /etc/httpd/conf.d/zabbix.conf
- Lancement du serveur web : ```
systemctl start httpd
Étapes post-installation via interface web
- Accéder à
http://<IP_SERVEUR>/zabbix - Vérifier que toutes les dépendances sont valides
- Entrer les identifiants de connexion à la base de données
- Configurer le nom du serveur Zabbix
- Valider l'installation
- Se connecter avec les identifiants par défaut :
Admin/zabbix - Changer la langue vers le chinois dans les préférences utilisateur
Résolution des problèmes d'affichage chinois
Les graphiques peuvent afficher des carrés noirs à cause de l'absence de polices appropriées.
yum install -y wqy-microhei-fonts
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf
cd /var/www/html/zabbix/include && sed -i 's/DejaVuSans/graphfont/g' defines.inc.php
Analyse des ressources système
Informations processeur
Le nombre total de cœurs logiques est calculé selon la formule suivante :
TotalCœursLogiques = NombreSockets × CœursParSocket × ThreadsParCœur
Commandes utiles :
# Nombre de sockets physiques
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
# Cœurs par socket
grep 'cpu cores' /proc/cpuinfo | uniq
# Total de processeurs logiques
grep 'processor' /proc/cpuinfo | wc -l
# Vue synthétique
lscpu
Utilisation CPU
La commande top fournit une vue dynamique de l’utilisation processeur :
us: temps passé en mode utilisateur (applications)sy: temps passé en mode noyau (appels système)id: inactivitéwa: attente entrée/sortie disque
Des outils alternatifs comme htop ou glances offrent une interface plus conviviale.
Charge système (Load Average)
Les valeurs affichées par uptime ou w représentent la moyenne de charge sur 1, 5 et 15 minutes.
- Pour un CPU quad-core, une charge inférieure à 4 est acceptable
- Une charge supérieure au nombre de cœurs indique un goulot d’étranglement
w
cat /proc/loadavg
Surveillance mémoire
Utilisation de la commande free :
free -h
Explication des champs :
- MemAvailable : mémoire réellement disponible pour de nouveaux processus
- buff/cache : tampons (buffer) pour écriture, cache pour lecture
- Swap : partition d’échange — son activation ralentit fortement le système
Script simple de surveillance mémoire :
#!/bin/bash
SEUIL=100
while true; do
MEM_LIBRE=$(free -m | awk '/^Mem:/ {print $NF}')
if (( MEM_LIBRE < SEUIL )); then
echo "$(date): Attention ! Mémoire disponible = ${MEM_LIBRE} Mo" | mail -s "Alerte mémoire" admin@exemple.com
fi
sleep 60
done
Espace disque et I/O
Commande de base :
df -h
Pour analyser l’utilisation inode :
df -i
Outil avancé de surveillance I/O :
iotop
Trafic réseau
Commandes essentielles :
ip addr show # Configuration IP
ss -tulnp # Écoute des ports
iftop # Bande passante en temps réel
nethogs # Utilisation par processus
Gestion des processus
Commandes courantes :
ps aux | grep nginx
top -p $(pgrep mysql)
glances
Architecture complète de surveillance
Une stratégie efficace repose sur une approche multicouche :
- Protocole SNMP pour les équipements réseau
- Agents locaux (Zabbix Agent, Telegraf) pour les métriques système
- Checks actifs pour tester la disponibilité des services web
- Collecte centralisée des logs via Filebeat ou Fluentd
- Corrélation des événements et alertes intelligentes