Logstash - Architettura interna
In questo capitolo, discuteremo dell'architettura interna e dei diversi componenti di Logstash.
Architettura del servizio Logstash
Logstash elabora i registri da diversi server e origini dati e si comporta come il mittente. Gli spedizionieri vengono utilizzati per raccogliere i registri e questi vengono installati in ogni sorgente di input. Ai broker piaceRedis, Kafka o RabbitMQ sono buffer per contenere i dati per gli indicizzatori, potrebbero esserci più broker come istanze di failover.
Agli indicizzatori piace Lucenevengono utilizzati per indicizzare i log per migliori prestazioni di ricerca e quindi l'output viene archiviato in Elasticsearch o in un'altra destinazione di output. I dati nella memoria di output sono disponibili per Kibana e altri software di visualizzazione.
Architettura interna di Logstash
La pipeline Logstash è composta da tre componenti Input, Filters e Output. La parte di input è responsabile di specificare e accedere all'origine dei dati di input come la cartella di registro diApache Tomcat Server.
Esempio per spiegare la pipeline Logstash
Il file di configurazione di Logstash contiene i dettagli sui tre componenti di Logstash. In questo caso, stiamo creando un nome file chiamatoLogstash.conf.
La configurazione seguente acquisisce i dati da un registro di input "inlog.log" e li scrive in un registro di output "outlog.log" senza filtri.
Logstash.conf
Il file di configurazione Logstash copia solo i dati dal file inlog.log file utilizzando il plug-in di input e scarica i dati di registro in outlog.log file utilizzando il plugin di output.
input {
file {
path => "C:/tpwork/logstash/bin/log/inlog.log"
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/outlog.log"
}
}
Esegui Logstash
Logstash utilizza –f opzione per specificare il file di configurazione.
C:\logstash\bin> logstash –f logstash.conf
inlog.log
Il blocco di codice seguente mostra i dati del registro di input.
Hello tutorialspoint.com
outlog.log
L'output di Logstash contiene i dati di input nel campo del messaggio. Logstash aggiunge anche altri campi all'output come Timestamp, Path of the Input Source, Version, Host e Tags.
{
"path":"C:/tpwork/logstash/bin/log/inlog1.log",
"@timestamp":"2016-12-13T02:28:38.763Z",
"@version":"1", "host":"Dell-PC",
"message":" Hello tutorialspoint.com", "tags":[]
}
Come puoi, l'output di Logstash contiene più dei dati forniti tramite il log di input. L'output contiene il percorso di origine, il timestamp, la versione, il nome host e il tag, che vengono utilizzati per rappresentare i messaggi aggiuntivi come gli errori.
Possiamo utilizzare filtri per elaborare i dati e renderli utili per le nostre esigenze. Nel prossimo esempio, stiamo usando il filtro per ottenere i dati, che limita l'output ai soli dati con un verbo come GET o POST seguito da unUnique Resource Identifier.
Logstash.conf
In questa configurazione di Logstash, aggiungiamo un filtro denominato grokper filtrare i dati di input. L'evento del log di input, che corrisponde al log di input della sequenza di pattern, arriva solo alla destinazione di output con errore. Logstash aggiunge un tag denominato "_grokparsefailure" negli eventi di output, che non corrisponde alla sequenza del pattern del filtro grok.
Logstash offre molti modelli regex integrati per analizzare i log dei server più diffusi come Apache. Il modello usato qui prevede un verbo come get, post, ecc., Seguito da un identificatore di risorsa uniforme.
input {
file {
path => "C:/tpwork/logstash/bin/log/inlog2.log"
}
}
filter {
grok {
match => {"message" => "%{WORD:verb} %{URIPATHPARAM:uri}"}
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/outlog2.log"
}
}
Esegui Logstash
Possiamo eseguire Logstash utilizzando il seguente comando.
C:\logstash\bin> logstash –f Logstash.conf
inlog2.log
Il nostro file di input contiene due eventi separati dal delimitatore predefinito, ovvero un nuovo delimitatore di riga. Il primo evento corrisponde al modello specificato in GROk e il secondo no.
GET /tutorialspoint/Logstash
Input 1234
outlog2.log
Possiamo vedere che il secondo evento di output contiene il tag "_grokparsefailure", perché non corrisponde al pattern del filtro grok. L'utente può anche rimuovere questi eventi senza corrispondenza nell'output utilizzando il‘if’ condition nel plugin di output.
{
"path":"C:/tpwork/logstash/bin/log/inlog2.log",
"@timestamp":"2016-12-13T02:47:10.352Z","@version":"1","host":"Dell-PC","verb":"GET",
"message":"GET /tutorialspoint/logstash", "uri":"/tutorialspoint/logstash", "tags":[]
}
{
"path":"C:/tpwork/logstash/bin/log/inlog2.log",
"@timestamp":"2016-12-13T02:48:12.418Z", "@version":"1", "host":"Dell-PC",
"message":"t 1234\r", "tags":["_grokparsefailure"]
}