Exportar los logs de los contenedores Cyberwatch a un servidor syslog
Esta pagina indica la configuración a aplicar para exportar los logs de los servicios Cyberwatch a un servidor syslog.
En primer lugar, instalar y configurar un servidor syslog-ng (o syslog o rsyslog):
Instalar syslog-ng:
Para distribuciones basadas en Debian:
sudo apt install syslog-ngPara distribuciones basadas en Red Hat:
yum install syslog-ng
Editar el archivo
/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);
};
Esta configuración mínima autoriza conexiones syslog TCP desde cualquier interfaz en el puerto 514.
Al recibir los logs, syslog genera automáticamente archivos en el directorio /var/log/remote/cyberwatch/${PROGRAM}.log, organizando los logs recibidos por programa. Aquí, la variable ${PROGRAM} permite generar un archivo distinto para cada contenedor, facilitando así la organización y el análisis de los logs.
La documentación de syslog detalla muchas posibilidades de configuración, incluida la configuración de TCP+TLS o la restriccion de conexiones a una sola IP. También encontrara otras opciones avanzadas para afinar su configuración según sus necesidades.
Con el servidor syslog-ng configurado, reiniciar el servicio:
sudo systemctl restart syslog-ng
Luego, una vez reiniciado el servicio, en la instancia Cyberwatch crear el archivo /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
En la opción syslog-address se encuentran el protocolo, la dirección IP y el puerto para conectarse al servidor syslog configurado en el paso anterior.
La variable tag servira para nombrar el archivo creado en el servidor syslog. Aquí se usa la variable {{.Name}} para asignar el nombre del contenedor.
Una vez hecho esto, reiniciar Cyberwatch para aplicar los cambios:
sudo cyberwatch restart