Timers, journald et loginctl
Cron + syslog + fichiers de logs dispersés : l'ancien monde.
Prérequis : cours précédent + DevOps 1.2 (timers base).
Pourquoi
Cron + syslog + fichiers de logs dispersés : l'ancien monde. Timers + journald : planifié + centralisé + interrogeable. Et loginctl pour les sessions — le chaînon manquant du « qui est connecté ».
Concepts
- Timers précis :
OnCalendar=*-*-* 04:30:00,OnBootSec=15min,OnUnitActiveSec=1h(périodique depuis la fin).Persistent=true(rattrapage),AccuracySec=1h(regrouper les réveils : laptops/VM фактура… économie d'énergie). - journald : logs structurés (
_SYSTEMD_UNIT,PRIORITY, champs custom viasystemd-cat -t monapp), stockage/var/log/journal(persistant) sinon RAM seule (perdus au reboot !Storage=persistent). - Interroger :
journalctl -u X --since "2 hours ago" -p err,-o json-pretty(structuré !),--vacuum-size(purge),--disk-usage. - loginctl : sessions (
loginctl list-sessions),user-status, linger (loginctl enable-linger monapp: ses services user survivent à la déconnexion — sinon tués au logout !).
Exemple : timer + log propre
[Timer]
OnCalendar=*-*-* 04:30:00
Persistent=true
RandomizedDelaySec=15min # pas tous les serveurs à la même seconde !
echo "backup ok" | systemd-cat -t backup -p info
journalctl -t backup --since today
Cas réel
Service user (tmux + scripts) qui « meurt chaque soir » : à la déconnexion SSH, systemd tue tout (pas de linger). enable-linger : survit. Ou mieux : vraie unit système au lieu d'un service user bricolé.
Pièges
- Journal en RAM seule (défaut sans
/var/log/journal) : incident + reboot = preuves perdues.Storage=persistent. - 50 timers à 4h30 pile : pic I/O.
RandomizedDelaySecpour étaler. journalctl --vacuumsur le journal d'un incident en cours : purger les preuves. Archiver d'abord (journalctl --since … > fichier).
À retenir
Timers précis + persistants + étalés, journal persistant et structuré, linger pour les services user.
Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.