linux logging monitoring devops sysadmin

Guide avancé de la journalisation et de la surveillance Linux : de Journald à Prometheus

Un guide complet sur la journalisation et la surveillance Linux modernes. Maîtrisez les générateurs de configuration rsyslog, les constructeurs de filtres journalctl, les temporisateurs systemd, le PromQL de Prometheus et la stack ELK.

2026-04-12

Guide avancé de la journalisation et de la surveillance Linux

Dans le paysage des infrastructures modernes, la visibilité est primordiale. Que vous gériez un seul VPS ou une flotte de microservices répartis sur plusieurs régions, la capacité à collecter, analyser et agir sur les journaux et les métriques est ce qui sépare un système stable d'un système chaotique. Linux, en tant que colonne vertébrale du cloud, offre un riche écosystème d'outils pour l'observabilité.

Ce guide explore la transition de la journalisation traditionnelle basée sur syslog vers les systèmes de surveillance distribués modernes. Nous couvrirons tout, de la gestion des journaux locaux à la visualisation avancée avec Grafana et Elasticsearch.


1. Gestion des journaux locaux : Syslog et Journald

Chaque système Linux génère une quantité massive de données. Historiquement, cela était géré par syslogd, puis par des versions plus avancées comme rsyslog et syslog-ng.

Générateur de configuration Rsyslog

rsyslog reste un outil puissant en raison de sa modularité et de sa capacité à acheminer les journaux vers diverses destinations, y compris des serveurs distants via TCP/UDP. Un générateur de configuration rsyslog typique vous aiderait à définir :

  • Entrées (Inputs) : D'où proviennent les journaux (ex. : fichiers locaux, ports réseau).
  • Filtres (Filters) : Quels journaux traiter (ex. : uniquement auth.log ou les erreurs d'une application spécifique).
  • Actions (Actions) : Où les envoyer (ex. : un fichier local, un serveur Graylog distant ou un topic Kafka).

Exemple d'une règle rsyslog de base :

if $programname == 'my-app' then /var/log/my-app.log
& stop

Constructeur de filtres Journalctl

Avec l'avènement de systemd, journald est devenu le principal collecteur de journaux. Contrairement à syslog, qui stocke les journaux en texte brut, journald utilise un format binaire qui permet des requêtes beaucoup plus rapides et l'enrichissement des métadatas.

Un constructeur de filtres journalctl est essentiel pour naviguer dans ces journaux. Au lieu de passer journalctl par un pipe vers grep, vous devriez utiliser les drapeaux natifs pour la performance :

  • journalctl -u nginx.service --since "1 hour ago" : Filtrer par unité et par temps.
  • journalctl -p err..emerg : Filtrer par niveaux de priorité.
  • journalctl _PID=1234 : Filtrer par un ID de processus spécifique.

2. Automatisation des tâches : Générateur de temporisateur Systemd

La surveillance ne concerne pas seulement les journaux ; il s'agit également de vérifications proactives. Avant d'avoir Prometheus, nous avions Cron. Aujourd'hui, nous avons les temporisateurs systemd.

Pourquoi les temporisateurs Systemd ?

Bien que Cron soit simple, les temporisateurs systemd offrent :

  • Dépendances : Assurez-vous qu'une tâche ne s'exécute que si un réseau est opérationnel.
  • Limites de ressources : Utilisez les cgroups pour limiter le CPU/RAM d'une tâche de fond.
  • Journalisation : Toutes les sorties sont automatiquement capturées par journald.

Un générateur de temporisateur systemd vous aide à créer les fichiers .service et .timer. Par exemple, pour exécuter un script de sauvegarde tous les jours à 3h du matin :

# backup.timer
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

3. Métriques et séries temporelles : Prometheus et Grafana

Alors que les journaux vous disent ce qui s'est passé, les métriques vous disent pourquoi cela se produit au fil du temps. Prometheus est devenu le standard de fait pour la surveillance cloud-native.

Constructeur de requêtes Prometheus (PromQL)

Prometheus utilise PromQL, un langage de requête fonctionnel. Un constructeur de requêtes Prometheus est inestimable pour construire des agrégations complexes.

  • Taux de requêtes : rate(http_requests_total[5m])
  • Latence au 99e centile : histogram_quantile(0.99, sum by (le) (rate(http_request_duration_seconds_bucket[10m])))

Modèle de tableau de bord Grafana

Les métriques ne sont utiles que si elles peuvent être visualisées. Grafana est le leader de l'industrie pour créer de magnifiques tableaux de bord en temps réel. Un modèle de tableau de bord Grafana vous permet de déployer rapidement des vues standard pour :

  • Node Exporter (Santé du système : CPU, RAM, Disque).
  • Trafic Nginx/Apache.
  • Santé du cluster Kubernetes.

Visualisateur d'arbre de routage Alertmanager

L'alerte est la partie "action" de la surveillance. Prometheus envoie des alertes à Alertmanager, qui gère la déduplication, le regroupement et l'acheminement vers Slack, Email ou PagerDuty. Un visualisateur d'arbre de routage vous aide à comprendre comment les alertes sont dirigées en fonction des labels. Par exemple, les alertes critiques vont vers PagerDuty, tandis que les avertissements vont vers un canal Slack.


4. Journalisation centralisée : La stack ELK

Pour les environnements à grande échelle, les journaux locaux ne suffisent pas. Vous devez agréger les journaux de centaines de serveurs dans un seul index interrogeable. C'est là que la stack ELK (Elasticsearch, Logstash, Kibana) intervient.

Constructeur de requêtes Elasticsearch (DSL)

Elasticsearch utilise un langage spécifique au domaine (DSL) basé sur JSON pour la recherche. Un constructeur de requêtes Elasticsearch simplifie la création de ces objets JSON imbriqués.

{
  "query": {
    "bool": {
      "must": [
        { "match": { "status": "error" } },
        { "range": { "@timestamp": { "gte": "now-1d" } } }
      ]
    }
  }
}

Syntaxe de requête Kibana

Kibana fournit une interface utilisateur pour Elasticsearch. Il prend en charge le KQL (Kibana Query Language), qui est beaucoup plus concis que le DSL complet.

  • status: 500 AND host: "prod-web-*"
  • response: [400 TO 499]

5. Résumé : Construire un pipeline d'observabilité

Une stratégie moderne de journalisation et de surveillance Linux doit suivre ces principes :

  1. Standardiser sur Journald : Laissez systemd gérer la collecte initiale.
  2. Exporter vers Prometheus : Utilisez des exportateurs pour transformer l'état du système et de l'application en métriques.
  3. Centraliser avec ELK ou Loki : Déplacez les journaux des serveurs individuels pour une conservation et une analyse à long terme.
  4. Visualiser et alerter : Utilisez Grafana pour les tableaux de bord et Alertmanager pour les notifications.

En maîtrisant ces outils — des générateurs rsyslog aux constructeurs de requêtes Prometheus — vous vous assurez que votre infrastructure reste transparente, prévisible et résiliente.