Exporter les logs des conteneurs Cyberwatch vers un serveur syslog
Cette page indique la configuration à appliquer pour exporter les logs des services Cyberwatch vers un serveur syslog.
Dans un premier temps, installer et configurer un serveur syslog-ng (ou syslog ou rsyslog) :
Installer syslog-ng :
Pour les distributions basées sur Debian :
sudo apt install syslog-ng
Pour les distributions basées sur Red Hat :
yum install syslog-ng
Éditer le fichier
/etc/syslog-ng/syslog-ng.conf
:
@version:3.38
@include "scl.conf"
options {flush_lines (0); keep_hostname (yes);};
source s_network {
tcp( ip(0.0.0.0) port(514) );
};
destination d_remote {
file("/var/log/remote/cyberwatch/${PROGRAM}.log" owner(root) group(root) perm(0644) dir_perm(0755) create_dirs(yes));
};
log {
source(s_network);
destination(d_remote);
};
Cette configuration minimale autorise des connexions syslog TCP depuis n’importe quelle interface sur le port 514.
À la réception des logs, syslog génère automatiquement des fichiers dans le répertoire /var/log/remote/cyberwatch/${PROGRAM}.log
, organisant ainsi les logs reçus par programme. Ici, la variable ${PROGRAM}
permet de générer un fichier distinct pour chaque conteneur, facilitant ainsi l’organisation et l’analyse des logs.
La documentation de syslog détaille de nombreuses possibilités de configuration, notamment la mise en place de TCP+TLS ou la restriction des connexions à une seule IP. Vous y trouverez également d’autres options avancées pour affiner votre configuration selon vos besoins.
Le serveur syslog-ng configuré, relancer le service :
sudo systemctl restart syslog-ng
Ensuite, une fois le service relancé, sur l’instance Cyberwatch créer le fichier /etc/cyberwatch/configs-enabled/99-custom-log.yml
:
x-logging: &logging
logging:
driver: "syslog"
options:
syslog-address: "tcp://10.3.0.10:514"
tag: "{{.Name}}"
services:
nginx:
<<: *logging
web:
<<: *logging
sidekiq:
<<: *logging
sidekiq_node:
<<: *logging
sidekiq_master:
<<: *logging
redis:
<<: *logging
kibana:
<<: *logging
web-scanner:
<<: *logging
db:
<<: *logging
elasticsearch:
<<: *logging
cache:
<<: *logging
Dans l’option syslog-address
se trouve le protocole, l’adresse IP ainsi que le port pour se connecter vers le serveur syslog configuré à l’étape précédente.
La variable tag
servira à nommer le fichier créé sur le serveur syslog. Ici, on utilise la variable {{.Name}}
afin d’attribuer le nom du conteneur.
Une fois cela fait, redémarrer Cyberwatch afin d’appliquer les changements :
sudo cyberwatch restart