Esportare i log dei container Cyberwatch verso un server syslog

Questa pagina indica la configurazione da applicare per esportare i log dei servizi Cyberwatch verso un server syslog.

Come prima cosa, installare e configurare un server syslog-ng (oppure syslog o rsyslog):

  1. Installare syslog-ng:

    • Per le distribuzioni basate su Debian:

       sudo apt install syslog-ng
      
    • Per le distribuzioni basate su Red Hat:

       yum install syslog-ng
      
  2. Modificare il file /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);
};

Questa configurazione minima consente connessioni syslog TCP da qualsiasi interfaccia sulla porta 514.

Alla ricezione dei log, syslog genera automaticamente dei file nella directory /var/log/remote/cyberwatch/${PROGRAM}.log, organizzando così i log ricevuti per programma. In questo caso, la variabile ${PROGRAM} consente di generare un file distinto per ogni container, semplificando l’organizzazione e l’analisi dei log.

La documentazione di syslog descrive in dettaglio numerose possibilità di configurazione, in particolare l’impostazione di TCP+TLS o la limitazione delle connessioni a un solo IP. Sono inoltre disponibili altre opzioni avanzate per perfezionare la configurazione in base alle proprie esigenze.

Una volta configurato il server syslog-ng, riavviare il servizio:

sudo systemctl restart syslog-ng

Successivamente, dopo aver riavviato il servizio, creare sull’istanza Cyberwatch il file /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

L’opzione syslog-address contiene il protocollo, l’indirizzo IP e la porta per connettersi al server syslog configurato nel passaggio precedente.

La variabile tag serve a denominare il file creato sul server syslog. In questo caso, si utilizza la variabile {{.Name}} per assegnare il nome del container.

Al termine, riavviare Cyberwatch per applicare le modifiche:

sudo cyberwatch restart