🧰 Services, rĂ©seau et supervision sous Linux : du systemctl au monitoring Bash
🧰 Services, rĂ©seau et supervision sous Linux : du systemctl au monitoring Bash

🧭 Introduction

Sous Linux, tout tourne autour des services et de la supervision. Un service qui tombe, une interface rĂ©seau qui gĂšle, un disque qui dĂ©borde
 et c’est souvent le script Bash qui vient sauver la mise.
Ce projet relie scripting et administration systÚme réelle, pour comprendre le comment et le pourquoi de chaque commande : gérer, diagnostiquer, surveiller et automatiser.


⚙ Objectifs & pĂ©rimĂštre

Pourquoi relier scripting et administration systĂšme

La ligne de commande n’est pas qu’un outil de dĂ©pannage : elle devient un levier d’automatisation.
Un bon script Bash peut :

  • RedĂ©marrer proprement un service aprĂšs plantage.
  • Surveiller les ressources en continu.
  • GĂ©nĂ©rer un rapport synthĂ©tique sans outil tiers.

Bref : transformer l’admin en chef d’orchestre de son infrastructure.

Pré-requis

  • Distribution Linux basĂ©e sur systemd (Ubuntu, Debian, CentOS, Rocky
).
  • AccĂšs sudo.
  • Quelques notions de bash scripting.

🔧 Gestion des services Linux

Concept

Un service (daemon) est un programme qui tourne en arriĂšre-plan — web server, base de donnĂ©es, agent de monitoring, etc.
systemd les gÚre via des unités (.service, .socket, .timer).

Pourquoi

Comprendre comment les services se lancent et meurent évite les comportements imprévisibles (ex: un nginx qui refuse de redémarrer aprÚs un crash).

Exemples

# Lister tous les services actifs
systemctl list-units --type=service --state=running

# Vérifier le statut du service ssh
systemctl status ssh.service

# Démarrer et activer au boot
sudo systemctl enable --now nginx

# Consulter les logs récents
journalctl -u nginx -n 20

Astuce

👉 systemctl is-failed est pratique pour un check automatique dans un script.

Compatibilité SysV

Pour d’anciennes distros :

service apache2 restart

Mais privilégiez systemctl dÚs que possible : plus cohérent, plus complet.


🧠 Surveillance du systùme

Concept

Surveiller, c’est observer l’évolution du systĂšme : charge CPU, mĂ©moire, I/O disque, rĂ©seau.

Pourquoi

La supervision proactive permet d’anticiper les pannes avant qu’elles ne frappent.

Exemples progressifs

# Afficher les 10 processus les plus consommateurs
top

# Visualiser les statistiques de mémoire
vmstat 5

# Surveiller les I/O disque toutes les 2 secondes
iostat -xz 2

# Vérifier la place disque
df -hT
du -sh /var/log/* | sort -h

Astuce

  • vmstat 1 est excellent pour les pics courts.
  • iostat -x permet de repĂ©rer un disque saturĂ© par ses %utilisation.
  • du --max-depth=1 / pour repĂ©rer les gros rĂ©pertoires en un clin d’Ɠil.

🌐 RĂ©seau : interfaces et connectivitĂ©

Concept

Le rĂ©seau sous Linux est un ensemble d’interfaces (eth0, ens18, lo), de routes et de sockets.
Le diagnostic réseau est une science du détail : vérifier lien physique, IP, DNS, route, puis connectivité applicative.

Commandes essentielles

# Informations sur les interfaces
ip addr show
ip link set eth0 up

# Test de connectivité
ping -c 4 8.8.8.8

# Résolution DNS
nslookup msinfra.fr

# Vérifier les ports ouverts
ss -tulpen

# Tester un service web
curl -I https://msinfra.fr

Astuce

  • ss remplace netstat (plus rapide, plus moderne).
  • curl -w "%{http_code}" permet de tester un code HTTP sans bruit.

📊 Monitoring & rapport Bash

Créer un mini monitoring maison en quelques lignes de Bash est à la fois formateur et pratique.

Concept

Un script Bash peut collecter les métriques systÚme, comparer avec des seuils, puis exporter un rapport (mail, log, JSON
).

Pourquoi

Utile en cron (surveillance quotidienne) ou pour des intégrations légÚres sans stack lourde.

Exemple simple

#!/bin/bash
cpu=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}')
disk=$(df / | awk 'NR==2 {print $5}')
mem=$(free -m | awk 'NR==2 {print $3*100/$2}')

echo "$(date): CPU=$cpu% DISK=$disk MEM=$mem%" >> /var/log/mini-monitor.log

Version évoluée

Avec alerte mail :

if (( $(echo "$cpu > 85" | bc -l) )); then
  echo "ALERTE CPU Ă  $cpu%" | mail -s "Alerte systĂšme" admin@msinfra.fr
fi

đŸ§© Cas pratiques

  1. Service qui ne démarre pas
    → VĂ©rifier journalctl -xe, dĂ©pendances via systemctl list-dependencies.
  2. Disque saturé
    → du -h --max-depth=1 /var | sort -hr | head.
    Supprimer logs ou configurer logrotate.
  3. Interface down
    → ip link set eth0 up, vĂ©rifier /etc/network/interfaces ou nmcli.
  4. Timeout HTTP
    → Tester avec curl -v, vĂ©rifier firewall (ufw status) et proxy.

🧼 Exercices pratiques

Exercice 1Exercice 2
CrĂ©e un script qui liste les services failed et tente de les redĂ©marrer automatiquement.Écris un script qui affiche les 5 plus gros dossiers dans /var et envoie une alerte si >80% disque.
Exercice 3Exercice 4
Fait un diagnostic réseau : ping, DNS, port 443, et format JSON.Construis un mini monitoring qui log CPU/RAM/DISK toutes les 10 min en CSV.

💬 Retour d’expĂ©rience du lecteur

👉 Partage en commentaire ton outil prĂ©fĂ©rĂ© de supervision ou ton script Bash maison !
Les retours des lecteurs enrichissent la pratique de tous.


🧭 Recommandations / Autres solutions

🧭 Pour aller plus loin avant ou aprùs ce projet :

Avant de plonger dans les tableaux et structures, jette un Ɠil Ă  ces articles complĂ©mentaires :

  • Outils avancĂ©s : htop, glances, bmon, atop.
  • Monitoring pro : Prometheus + Grafana, Zabbix, ou Netdata.
  • Centralisation : rsyslog + Loki pour agrĂ©ger les logs.

đŸ§© Conclusion

Tu maßtrises maintenant la gestion des services, la surveillance du systÚme et la supervision réseau avec Bash.
Ces fondations t’ouvrent la voie vers des environnements plus industrialisĂ©s : automatisation, Ansible, Prometheus


Et toi, comment supervises-tu ton infra ? Partage ton approche en commentaire !


🧠 Solutions des exercices

🧰 Services, rĂ©seau et supervision sous Linux : du systemctl au monitoring Bash

Exercice 1 : Redémarrage automatique

#!/bin/bash
for s in $(systemctl list-units --type=service --state=failed | awk '{print $1}'); do
  echo "Redémarrage de $s..."
  systemctl restart "$s"
done

Exercice 2 : Alerte disque

used=$(df / | awk 'NR==2 {gsub("%",""); print $5}')
if [ "$used" -gt 80 ]; then
  echo "Disque presque plein ($used%) sur $(hostname)" | mail -s "Alerte disque" admin@msinfra.fr
fi

Exercice 3 : Diagnostic réseau

ping -c1 8.8.8.8 > /dev/null && echo "Ping OK"
nslookup msinfra.fr
curl -I https://msinfra.fr

Exercice 4 : Mini monitoring CSV

echo "Date,CPU,RAM,DISK" > /var/log/mini-monitor.csv
while true; do
  cpu=$(top -bn1 | awk '/Cpu/ {print 100 - $8}')
  ram=$(free -m | awk 'NR==2 {print $3*100/$2}')
  disk=$(df / | awk 'NR==2 {gsub("%",""); print $5}')
  echo "$(date),$cpu,$ram,$disk" >> /var/log/mini-monitor.csv
  sleep 600
done
Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

    Alors tu en pense quoi de cette article ? Dis-moi tous..