Bonjour,
Dans cette exemple nous allons monter un serveur docker et exporter les logs de celui ci vers un serveur rsyslog.
Cela est fait sous NixOS mais c'est entièrement applicable sur d'autres OS.
Serveur Docker :
{ pkgs, ... }:
{
# Docker
virtualisation.docker = {
enable = true;
liveRestore = false;
package = pkgs.docker;
logDriver = "syslog";
storageDriver = "overlay2";
daemon.settings = {
"metrics-addr" = "0.0.0.0:9323";
"log-opts" = {
"syslog-address" = "udp://IP_RSYSLOG:514";
"syslog-format" = "rfc5424micro";
"syslog-facility" = "daemon";
"tag" = "docker/{{.Name}}/{{.ID}}";
};
};
};
}
Appliquer la configuration
nixos-rebuild switch
Serveur Rsyslog :
Créer le dossier de destination
mkdir -p /var/log/docker
{ ... }:
{
services.rsyslogd = {
enable = true;
defaultConfig = "";
extraConfig = ''
# Modules
module(load="imudp")
input(type="imudp" port="514")
# Templates for logs
template(name="DockerLogs" type="string" string="/var/log/docker/%HOSTNAME%/%PROGRAMNAME%.log")
# Rules for Docker
if $programname startswith 'docker' then ?DockerLogs
& stop
'';
};
}
Appliquer la configuration
nixos-rebuild switch
Tester Rsyslog :
Sur le serveur docker lancer :
docker run --rm -it alpine /bin/sh -c 'while true; do echo "PIKA !!!! $(date)"; sleep 2; done'
Sur le serveur rsyslog lancer :
tail -f /var/log/docker/node2/docker.log
2025-02-10T09:37:30.441247+01:00 node2 docker/practical_bassi/d13fa303fe41[34626] PIKA !!!! Mon Feb 10 08:37:30 UTC 2025#015
2025-02-10T09:37:32.442874+01:00 node2 docker/practical_bassi/d13fa303fe41[34626] PIKA !!!! Mon Feb 10 08:37:32 UTC 2025#015
2025-02-10T09:37:34.444001+01:00 node2 docker/practical_bassi/d13fa303fe41[34626] PIKA !!!! Mon Feb 10 08:37:34 UTC 2025#015
2025-02-10T09:37:36.445239+01:00 node2 docker/practical_bassi/d13fa303fe41[34626] PIKA !!!! Mon Feb 10 08:37:36 UTC 2025#015
2025-02-10T09:37:38.446468+01:00 node2 docker/practical_bassi/d13fa303fe41[34626] PIKA !!!! Mon Feb 10 08:37:38 UTC 2025#015
Voilà vous avez votre export de logs opérationnel.