ELK Stack – Filebeat – Moduli
Filebeat fornisce una serie di moduli preconfigurati che permettono di pre-analizzare i file di log sulle macchine su cui è installato, inviarli ad Elaticsearch/Logstash, e visualizzarli su dashboard preconfezionate in Kibana. Questi moduli supportano formati di registro comuni quali Nginx, Apache 2, MySQL, …..
Prima di continuare, segnalo che i moduli di seguito analizzati sono compatibili con lo schema ECS di Elastic, uno schema open source sviluppato con il supporto della community degli utenti Elastic. ECS definisce un insieme comune di campi da utilizzare durante la memorizzazione dei dati degli eventi in Elasticsearch, come registri e metriche.
È possibile anche creare facilmente moduli personalizzati. Di seguito configureremo e abiliteremo alcuni moduli tra i principali di Filebeat.
Quando si eseguono i moduli, vengono effettuate delle operazioni a run-time:
- vengono impostati i percorsi predefiniti per i file di registro (è possibile modificarli);
- ogni evento di registro su più righe viene inviato come singolo evento;
- viene utilizzato il nodo Elasticsearch configurato in Filebeat per analizzare ed elaborare le linee di registro, modellando i dati in una struttura adatta per la visualizzazione in Kibana;
- vengono fornite a Kibana le dashboard per la visualizzazione dei dati.
SYSTEM
Il modulo System raccoglie e analizza i registri creati dal servizio di logging di sistema delle comuni distribuzioni basate su Unix / Linux. È stato testato con i log delle principali distribuzioni; non è disponibile per Windows.
Abilitiamo il modulo con il comando:
# filebeat modules enable system
Editiamo il file /etc/filebeat/modules.d/system.yml, per adattarlo eventualmente alla configurazione della nostra macchina o aggiungere log personalizzati:
- module: system # Syslog syslog: enabled: true var.paths: - /var/log/messages # Authorization logs auth: enabled: true var.paths: - /var/log/secure
NETFLOW
Questo modulo permette la ricezione di record di flusso NetFlow su UDP; supporta le versioni 1, 5, 6, 7, 8 e 9 di NetFlow, nonché IPFIX. Per le versioni NetFlow precedenti alla 9, i campi vengono mappati automaticamente su NetFlow v9.
Abilitiamo il modulo con il comando:
# filebeat modules enable netflow
Editiamo il file /etc/filebeat/modules.d/netflow.yml:
- module: netflow
log:
enabled: true
var:
netflow_host: 192.168.xxx.xxx <== indirizzo IP di binding
netflow_port: 2055 <== porta UDP di ricezione del flusso
max_message_size: 10KiB <== grandezza massima del messaggio ricevuto tramite UDP (10KiB default)
protocols: [ v5, v9, ipfix ] <== protocolli permessi
expiration_timeout: 30m <== timeout prima che una sessione idle o inutilzzata venga considerata expired (0=no expiration)
queue_size: 8192 <== numero max di pacchetti che possono essere accodati per essere processati
detect_sequence_reset: true <== Flag che controlla se Filebeat deve monitorare i numeri di sequenza nei pacchetti Netflow per reset del processo di esportazione
APACHE
Il modulo Apache analizza i file di log degli accessi e degli errori creati dal server HTTP Apache.
Abilitiamo il modulo con il comando:
# filebeat modules enable apache
Editiamo il file /etc/filebeat/modules.d/apache.yml:
- module: apache # Access logs access: enabled: true var.paths: - /var/log/apache/access.log* # Error logs error: enabled: true var.paths: - /var/log/apache/error.log*
MySQL
Il modulo MySQL raccoglie e analizza i file di errore e gli slow logs creati da MySQL; è compatibile con i log prodotti da MySQL (versione 5.5, 5.7 e 8(, MariaDB (versione 10.1, 10.2 10.3) e Percona (versione 5.7 e 8.0)
Abilitiamo il modulo con il comando:
# filebeat modules enable mysql
Editiamo il file /etc/filebeat/modules.d/mysql.yml:
- module: mysql error: enabled: true var.paths: - /var/log/mysql/error.log* slowlog: enabled: true var.paths: - /var/log/mysql/mysql-slow.log*
Prima di riavviare il servizio Filebeat, vediamo quali sono i moduli abilitati:
# filebeat modules list Enabled: apache mysql netflow system Disabled: activemq auditd ... traefik zeek
Procediamo con il riavvio di Filebeat:
# systemctl restart filebeat
Ora possiamo collegarci alla dashboard Kibana (per ora con utente admin) e vedere che nella sezione “Discover” (indicata in rosso nell’immagine seguente), iniziano ad arrivare i dati configurati in filebeat.