Inoltra i registri Apache a OpenSearch tramite Logstash
Introduzione
Una gestione efficace dei log del server web è fondamentale per mantenere le prestazioni del tuo sito web, risolvere i problemi e ottenere informazioni dettagliate sul comportamento degli utenti. Apache è uno dei server web più popolari. Genera log di accesso e di errore che contengono informazioni preziose. Per gestire e analizzare in modo efficiente questi registri, è possibile utilizzare Logstash per elaborarli e inoltrarli a OpenSearch gestito di DigitalOcean per l'indicizzazione e la visualizzazione.
In questo tutorial ti guideremo attraverso l'installazione di Logstash su un Droplet, configurandolo per raccogliere i tuoi log Apache e inviarli a Managed OpenSearch per l'analisi.
Prerequisiti
- Droplet/i con server Web Apache installato.
- Cluster OpenSearch gestito
Passaggio 1: installazione di Logstash
Logstash può essere installato utilizzando i file binari OPPURE tramite i repository dei pacchetti. Per semplificare la gestione e gli aggiornamenti, è generalmente consigliabile utilizzare i repository di pacchetti.
In questa sezione ti guideremo attraverso l'installazione di Logstash sul tuo Droplet utilizzando i gestori di pacchetti APT e YUM.
Identifichiamo il sistema operativo:
cat /etc/os-release
Per sistemi basati su APT (Ubuntu/Debian)
Scarica e installa la chiave di firma pubblica:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
Potrebbe essere necessario installare il pacchetto apt-transport-https
su Debian prima di procedere:
sudo apt-get install apt-transport-https
Salva la definizione del repository in /etc/apt/sources.list.d/elastic-8.x.list
:
echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
Utilizza il metodo echo
descritto sopra per aggiungere il repository Logstash. Non utilizzare add-apt-repository
poiché aggiungerà anche una voce deb-src
, ma non forniamo un pacchetto sorgente. Se hai aggiunto la voce deb-src
, vedrai un errore come il seguente:
Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)
Basta eliminare la voce deb-src
dal file /etc/apt/sources.list
e l'installazione dovrebbe funzionare come previsto.
Esegui sudo apt-get update
e il repository sarà pronto per l'uso. Puoi installarlo con:
sudo apt-get update && sudo apt-get install logstash
Per sistemi basati su YUM (CentOS/RHEL)
Scarica e installa la chiave di firma pubblica:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Aggiungi quanto segue nel tuo file /etc/yum.repos.d/logstash.repo
. Puoi utilizzare "tee" per aggiornare e creare il file.
sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
Il tuo repository è pronto per l'uso. Puoi installarlo con:
sudo yum install logstash
Per ulteriori informazioni fare riferimento alla guida Installazione di Logstash.
Passaggio 2: configurazione di Logstash per inviare i registri a OpenSearch
Una pipeline Logstash è composta da tre fasi principali: input, filtro e output. Le pipeline Logstash utilizzano plugin. Puoi utilizzare i plugin della community o crearne di tuoi.
Input: questa fase raccoglie dati da varie fonti. Logstash supporta numerosi plug-in di input per gestire origini dati come file di registro, database, code di messaggi e servizi cloud.
Filtro: questa fase elabora e trasforma i dati raccolti nella fase di input. I filtri possono modificare, arricchire e strutturare i dati per renderli più utili e più facili da analizzare.
Output: questa fase invia i dati elaborati a una destinazione. Le destinazioni possono includere database, file e archivi dati come OpenSearch.
Passaggio 3: installazione del plug-in di output di ricerca aperta
Il plug-in di output OpenSearch può essere installato eseguendo il comando seguente:
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
Maggiori informazioni possono essere trovate su questo repository logstash-output-opensearch-plugin.
Ora creiamo una pipeline:
Crea un nuovo file nel percorso /etc/logstash/conf.d/ chiamato apache_pipeline.conf
e copia il seguente contenuto.
input {
file {
path => "/var/log/apache2/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_access"
}
file {
path => "/var/log/apache2/error.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_error"
}
}
filter {
if "apache_access" in [tags] {
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
} else {
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
}
}
output {
if "apache_access" in [tags] {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_access"
ssl_certificate_verification => true
}
} else {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_error"
ssl_certificate_verification => true
}
}
}
Sostituisci
con il nome host del tuo server OpenSearch e
con la tua password OpenSearch.
Analizziamo la configurazione di cui sopra.
INPUT: serve per configurare una sorgente per gli eventi. Qui viene utilizzato il plug-in di input "file".
path => “/var/log/apache2/access.log”: specifica il percorso del file di registro degli accessi Apache da cui Logstash leggerà
Assicurati che il servizio Logstash abbia accesso al percorso di input.
start_position => “inizio”: Definisce dove Logstash dovrebbe iniziare a leggere il file di registro. "inizio" indica che Logstash dovrebbe iniziare l'elaborazione del file dall'inizio, anziché dalla fine
sincedb_path => “/dev/null”: specifica il percorso di un file sincedb. I file Sincedb vengono utilizzati da Logstash per tenere traccia della posizione corrente nei file di registro, consentendogli di riprendere da dove si era interrotto in caso di riavvii o errori.
tags => “apache_access ”: assegna un tag agli eventi letti da questo input. I tag sono utili per identificare e filtrare gli eventi all'interno di Logstash, spesso utilizzati a valle nelle fasi di output o di filtraggio della configurazione. Stiamo utilizzando i tag per quest'ultimo
FILTRO: serve per elaborare gli eventi.
A partire dai condizionali:
(if "apache_access" in [tags]):
Questo controlla se il tag
apache_access
esiste nel campo [tags] degli eventi di registro in entrata. Utilizziamo questo condizionale per applicare il filtro GROK appropriato per gli accessi Apache e i log degli errori.Filtro Grok (per i registri di accesso Apache):
grok { match => { "message" => "%{HTTPD_COMBINEDLOG}" } }
Il filtro grok
%{HTTPD_COMBINEDLOG}
è un modello predefinito in Logstash utilizzato per analizzare il formato del registro di accesso combinato di Apache. Questo estrae campi come indirizzo IP, timestamp, metodo HTTP, URI, codice di stato, ecc., dal campo del messaggio degli eventi in entrata.Mutate Filter
Remove
(opzionale): dopo che i log di Apache sono stati analizzati, utilizziamo mutate-remove per rimuovere determinati campi.mutate { remove_field => [ "message","[log][file][path]","[event][original]" ] }
Condizione Else: il blocco else viene eseguito se il tag
apache_access
non è presente in [tags]. Questo blocco else contiene un altro filtro GROK per i log degli errori di Apache.grok { match => { "message" => "%{HTTPD24_ERRORLOG}" } }
Questo filtro grok
%{HTTPD24_ERRORLOG}
analizza i messaggi che corrispondono al formato del log degli errori di Apache. Estrae i campi rilevanti per i log degli errori come timestamp, livello di log, messaggio di errore, ecc.I modelli GROK possono essere trovati su: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns.
OUTPUT: il plugin di output invia eventi a una destinazione particolare.
Il blocco di output inizia con una condizione if. Stiamo usando i condizionali if qui
if "apache_access" in [tags] {}
Questo se condizionale viene utilizzato per instradare i log a OpenSearch a due indici separati,
apache_error
eapache_access
.Esploriamo il plug-in Output di OpenSearch:
hosts => "https://XXX:25060" Your Open search Hostname user => "doadmin" Your Open search Username password => "XXXXX" OpenSearch Password index => "apache_error" Index name in OpenSearch ssl_certificate_verification => true Enabled SSL certificate verification
{ }
Passaggio 4: avviare Logstash
Una volta configurata la Pipeline, avvia il servizio Logstash:
systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service
Passaggio 5: risoluzione dei problemi
Controlla la connettività
Puoi verificare che Logstash possa connettersi a OpenSearch testando la connettività:
curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"
Sostituisci <tuo-server-opensearch> con il nome host e <tuo_nome_utente> del tuo server OpenSearch, <tua_password> con le tue credenziali OpenSearch.
Inserimento dati
Assicurati che i dati siano indicizzati correttamente in OpenSearch:
curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"
Sostituisci <tuo-server-opensearch> con il nome host e <tuo_nome_utente> del tuo server OpenSearch, <tua_password> con le tue credenziali OpenSearch. Allo stesso modo, <your-index-name> con il nome dell'indice.
Firewall e configurazione di rete
Assicurati che le regole del firewall e le impostazioni di rete consentano il traffico tra Logstash e OpenSearch sulla porta 25060
.
Registri
I log per Logstash possono essere trovati su /var/log/logstash/logstash-plain.log
Per i dettagli, fare riferimento a Risoluzione dei problemi.
Conclusione
In questa guida, abbiamo illustrato la configurazione di Logstash per raccogliere e inoltrare i registri Apache a OpenSearch. Ecco un breve riepilogo di ciò che abbiamo trattato:
Installazione di Logstash: abbiamo spiegato come utilizzare i gestori di pacchetti APT o YUM, a seconda della distribuzione Linux, per installare Logstash sul tuo Droplet.
Configurazione di Logstash: abbiamo creato e modificato il file di configurazione Logstash per garantire che i registri Apache vengano analizzati e inviati correttamente a OpenSearch.
Verifica in OpenSearch: impostiamo un modello di indice nelle dashboard di OpenSearch per confermare che i tuoi registri siano indicizzati correttamente e siano visibili per l'analisi.
Una volta completati questi passaggi, dovresti ora avere una configurazione funzionale in cui Logstash raccoglie i log di Apache e li invia a OpenSearch.