Exportar els registres dels contenidors de Cyberwatch a un servidor syslog

Aquesta pàgina indica la configuració que cal aplicar per exportar els registres dels serveis de Cyberwatch a un servidor syslog.

En primer lloc, instal·leu i configureu un servidor syslog-ng (o syslog o rsyslog):

  1. Instal·leu syslog-ng:

    • Per a les distribucions basades en Debian:

       sudo apt install syslog-ng
      
    • Per a les distribucions basades en Red Hat:

       yum install syslog-ng
      
  2. Editeu el fitxer /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);
};

Aquesta configuració mínima permet connexions syslog TCP des de qualsevol interfície al port 514.

Quan rep els registres, syslog genera automàticament fitxers al directori /var/log/remote/cyberwatch/${PROGRAM}.log i organitza així els registres rebuts per programa. Aquí, la variable ${PROGRAM} permet generar un fitxer diferent per a cada contenidor, cosa que facilita l’organització i l’anàlisi dels registres.

La documentació de syslog detalla moltes possibilitats de configuració, com ara la configuració de TCP+TLS o la restricció de les connexions a una sola IP. També hi trobareu altres opcions avançades per ajustar la configuració segons les vostres necessitats.

Un cop configurat el servidor syslog-ng, reinicieu el servei:

sudo systemctl restart syslog-ng

A continuació, un cop reiniciat el servei, creeu a la instància de Cyberwatch el fitxer /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-application:
    <<: *logging
  sidekiq:
    <<: *logging
  sidekiq_node:
    <<: *logging
  sidekiq_master:
    <<: *logging
  redis:
    <<: *logging
  kibana:
    <<: *logging
  web-scanner:
    <<: *logging
  db:
    <<: *logging
  elasticsearch:
    <<: *logging
  cache:
    <<: *logging

Conserveu en aquest fitxer només els serveis desplegats al node, que es poden veure amb l’ordre sudo cyberwatch status. Un servei absent del node, com ara kibana i elasticsearch en un node satèl·lit o quan CBW_DISABLE_ELK=true, impedeix el reinici de Cyberwatch.

L’opció syslog-address conté el protocol, l’adreça IP i el port per connectar-se al servidor syslog configurat en el pas anterior.

La variable tag servirà per anomenar el fitxer creat al servidor syslog. Aquí s’utilitza la variable {{.Name}} per assignar el nom del contenidor, per exemple un nom que comença per cbwonpremise_web-application.1. per al servei web-application.

Un cop fet això, reinicieu Cyberwatch per aplicar els canvis:

sudo cyberwatch restart