Suivant: Configuration du réseau, Précédent: Exécution de tâches planifiées, Monter: Services [Table des matières][Index]
Log files such as those found in /var/log tend to grow endlessly, so
it’s a good idea to rotate them once in a while—i.e., archive their
contents in separate files, possibly compressed. The (gnu services
admin)
module provides an interface to the log rotation service provided by
the Shepherd (voir Log Rotation dans The GNU Shepherd Manual).
This log rotation service is made available through
log-rotation-service-type
, which takes a
log-rotation-configuration
record has its value. By default, this
provides log-rotation
, a Shepherd “timed service” that runs
periodically—once a week by default. It automatically knows about the log
files produced by Shepherd services and can be taught about external log
files. You can inspect the service and see when it’s going to run the usual
way:
$ sudo herd status log-rotation Status of log-rotation: It is running since Mon 09 Dec 2024 03:27:47 PM CET (2 days ago). … Upcoming timer alarms: Sun 15 Dec 2024 10:00:00 PM CET (in 4 days) Sun 22 Dec 2024 10:00:00 PM CET (in 11 days) Sun 29 Dec 2024 10:00:00 PM CET (in 18 days)
You can also list files subject to rotation with herd files
log-rotation
and trigger rotation manually with herd trigger
log-rotation
.
This service is part of %base-services
, and thus enabled by default,
with the default settings.
This is the type of the log rotation service. Its associated value must be
a log-rotation-configuration
record, as discussed below.
Available log-rotation-configuration
fields are:
provision
(default: (log-rotation)
) (type: list-of-symbols)The name(s) of the log rotation Shepherd service.
requirement
(default: (user-processes)
) (type: list-of-symbols)Dependencies of the log rotation Shepherd service.
calendar-event
(type: gexp)Gexp containing the calendar event when log rotation occurs. Voir Timers dans The GNU Shepherd Manual, for more information on calendar events.
external-log-files
(default: ()
) (type: list-of-strings)List of file names, external log files that should also be rotated.
compression
(default: zstd
) (type: symbol)The compression method used for rotated log files, one of 'none
,
'gzip
, and 'zstd
.
expiry
(type: gexp-or-integer)Age in seconds after which a log file is deleted.
size-threshold
(type: gexp-or-integer)Size in bytes below which a log file is not rotated.
An alternative log rotation service relying on GNU Rot[t]log, a log rotation tool (voir GNU Rot[t]log Manual), is also provided.
Attention : The Rottlog service presented here is deprecated in favor of
log-rotation-service-type
(see above). Therottlog-service-type
variable and related tools will be removed after 2025-06-15.
The example below shows how to extend it with an additional rotation, should you need to do that (usually, services that produce log files already take care of that):
(use-modules (guix) (gnu)) (use-service-modules admin) (define my-log-files ;; Journaux que je veux faire tourner. '("/var/log/something.log" "/var/log/another.log")) (operating-system ;; … (services (cons (simple-service 'rotate-my-stuff rottlog-service-type (list (log-rotation (frequency 'daily) (files my-log-files)))) %base-services)))
C’est le type du service Rotlog, dont la valeur est un objet
rottlog-configuration
.
D’autres services peuvent étendre celui-ci avec de nouveaux objets
log-rotation
(voir plus bas), en augmentant ainsi l’ensemble des
fichiers à faire tourner.
Ce type de service peut définir des tâches (voir Exécution de tâches planifiées) pour lancer le service rottlog.
Type de données représentant la configuration de rottlog.
rottlog
(par défaut : rottlog
)Le paquet Rottlog à utiliser.
rc-file
(par défaut : (file-append rottlog "/etc/rc")
)Le fichier de configuration Rottlog à utiliser (voir Mandatory RC Variables dans GNU Rot[t]log Manual).
rotations
(par défaut : %default-rotations
)Une liste d’objets log-rotation
définis plus bas.
jobs
C’est une liste de gexps où chaque gexp correspond à une spécification de tâche de mcron (voir Exécution de tâches planifiées).
Type de données représentant la rotation d’un groupe de fichiers journaux.
En reprenant un exemple du manuel de Rottlog (voir Period Related File Examples dans GNU Rot[t]log Manual), on peut définir la rotation d’un journal de cette manière :
(log-rotation
(frequency 'daily)
(files '("/var/log/apache/*"))
(options '("storedir apache-archives"
"rotate 6"
"notifempty"
"nocompress")))
La liste des champs est la suivante :
frequency
(par défaut : 'weekly
)La fréquence de rotation, un symbole.
files
La liste des fichiers ou des motifs de noms de fichiers à faire tourner.
options
(par défaut : %default-log-rotation-options
)La liste des options de rottlog pour cette rotation (voir Configuration parameters dans GNU Rot[t]log Manual).
post-rotate
(par défaut : #f
)Soit #f
, soit une gexp à exécuter une fois la rotation terminée.
Spécifie la rotation hebdomadaire de %rotated-files
et de
/var/log/guix-daemon.log.
La liste des fichiers contrôlés par syslog à faire tourner. Par défaut il
s’agit de : '("/var/log/messages" "/var/log/secure" "/var/log/debug" \
"/var/log/maillog")
.
Certains fichiers journaux doivent simplement être supprimés périodiquement
quand ils deviennent trop vieux, sans autre critère et sans étape
d’archivage. C’est le cas des journaux de construction stockés par
guix-daemon
dans /var/log/guix/drvs (voir Invoquer guix-daemon
). Le service log-cleanup
gère ce cas. Par exemple,
%base-services
(voir Services de base) inclus ce qui suit :
;; Supprime régulièrement les anciens journaux de construction. (service log-cleanup-service-type (log-cleanup-configuration (directory "/var/log/guix/drvs")))
Cela s’assure que les journaux de construction ne s’accumulent pas sans fin.
C’est le type du service pour supprimer les anciens journaux. Sa valeur
doit être un enregistrement log-cleanup-configuration
, décrit
ci-dessous.
Type de données représentant la configuration de nettoyage des journaux
directory
Nom du répertoire contenant les fichiers journaux.
expiry
(par défaut : (* 6 30 24 3600)
)Âge en secondes après lequel un fichier peut être supprimé (six moins par défaut).
schedule
(par défaut : "30 12 01,08,15,22 * *"
)Schedule of the log cleanup job written either as a string in traditional cron syntax or as a gexp representing a Shepherd calendar event (voir Timers dans The GNU Shepherd Manual).
Anonip est un filtre pour la vie privée qui supprime les adresses IP des journaux des serveurs web. Ce service crée une FIFO et filtre toutes les lignes écrite avec anonip avant d’écrire les journaux filtrés dans un fichier cible.
L’exemple suivant configure la FIFO /var/run/anonip/https.access.log et écrit le fichier journal filtré dans /var/log/anonip/https.access.log.
(service anonip-service-type
(anonip-configuration
(input "/var/run/anonip/https.access.log")
(output "/var/log/anonip/https.access.log")))
Configurez votre serveur web pour écrire ses journaux dans la FIFO /var/run/anonip/https.access.log et récupérez les fichiers journaux anonymisés dans /var/web-logs/https.access.log.
Ce type de données représente la configuration d’anonip. Il a les paramètres suivants :
anonip
(par défaut : anonip
)Le paquet anonip à utiliser.
input
Le nom de fichier du fichier journal d’entrée à traiter. Le service crée une FIFO de ce nom. Le serveur web doit écrire ses journaux dans cette FIFO.
output
Le nom du fichier journal traité.
Les réglages facultatifs suivants peuvent être fournis :
debug?
Print debug messages when #true
.
skip-private?
Lorsque la valeur est #true
, ne masque pas les adresses dans les
plages privées.
column
Un numéro de colonne commençant par 1 pour la première colonne. Suppose que l’adresse IP est dans la colonne donnée (1 par défaut).
replacement
Chaine de remplacement au cas où l’analyse de l’adresse échoue, p. ex.
"0.0.0.0"
.
ipv4mask
Nombre de bits à masquer dans les adresses IPv4.
ipv6mask
Nombre de bits à masquer dans les adresses IPv6.
increment
Incrémente l’adresse IP par le nombre donné. La valeur par défaut est zéro.
delimiter
Chaine de délimitation des journaux.
regex
Expression régulière pour détecter l’adresse IP. À utiliser à la place de
column
.
Suivant: Configuration du réseau, Précédent: Exécution de tâches planifiées, Monter: Services [Table des matières][Index]