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):

  1. Instalar syslog-ng:

    • Para distribuciones basadas en Debian:

       sudo apt install syslog-ng
      
    • Para distribuciones basadas en Red Hat:

       yum install syslog-ng
      
  2. 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

Volver arriba

English Français Español