Logstash - Guida rapida
Logstash è uno strumento basato sui modelli di filtri / pipe per la raccolta, l'elaborazione e la generazione di log o eventi. Aiuta a centralizzare e fare analisi in tempo reale di registri ed eventi da diverse fonti.
Logstash è scritto sul linguaggio di programmazione JRuby che gira su JVM, quindi puoi eseguire Logstash su diverse piattaforme. Raccoglie diversi tipi di dati come log, pacchetti, eventi, transazioni, dati timestamp, ecc. Da quasi ogni tipo di sorgente. La fonte dei dati può essere dati social, e-commerce, articoli di notizie, CRM, dati di gioco, tendenze web, dati finanziari, Internet of Things, dispositivi mobili, ecc.
Caratteristiche generali di Logstash
Le caratteristiche generali di Logstash sono le seguenti:
Logstash può raccogliere dati da diverse origini e inviarli a più destinazioni.
Logstash può gestire tutti i tipi di dati di registrazione come registri Apache, registri eventi di Windows, protocolli di dati su rete, dati da input standard e molti altri.
Logstash può anche gestire richieste http e dati di risposta.
Logstash fornisce una varietà di filtri, che aiutano l'utente a trovare più significato nei dati analizzandoli e trasformandoli.
Logstash può anche essere utilizzato per gestire i dati dei sensori in Internet of Things.
Logstash è open source e disponibile con la licenza Apache versione 2.0.
Concetti chiave di Logstash
I concetti chiave di Logstash sono i seguenti:
Oggetto evento
È l'oggetto principale di Logstash, che incapsula il flusso di dati nella pipeline di Logstash. Logstash utilizza questo oggetto per memorizzare i dati di input e aggiungere campi aggiuntivi creati durante la fase di filtro.
Logstash offre un'API per eventi agli sviluppatori per manipolare gli eventi. In questo tutorial, questo evento viene indicato con vari nomi come Evento dati di registrazione, Evento di registro, Dati di registro, Dati di registro di input, Dati di registro di output, ecc.
Tubatura
Comprende le fasi del flusso di dati in Logstash dall'input all'output. I dati di input vengono inseriti nella pipeline e vengono elaborati sotto forma di evento. Quindi invia a una destinazione di output nel formato desiderato dall'utente o dal sistema finale.
Ingresso
Questa è la prima fase della pipeline Logstash, che viene utilizzata per ottenere i dati in Logstash per un'ulteriore elaborazione. Logstash offre vari plugin per ottenere dati da diverse piattaforme. Alcuni dei plugin più comunemente usati sono: File, Syslog, Redis e Beats.
Filtro
Questa è la fase centrale di Logstash, dove avviene l'effettiva elaborazione degli eventi. Uno sviluppatore può utilizzare schemi Regex predefiniti di Logstash per creare sequenze per differenziare i campi negli eventi e i criteri per gli eventi di input accettati.
Logstash offre vari plugin per aiutare lo sviluppatore ad analizzare e trasformare gli eventi in una struttura desiderabile. Alcuni dei plugin di filtro più comunemente usati sono: Grok, Mutate, Drop, Clone e Geoip.
Produzione
Questa è l'ultima fase della pipeline Logstash, in cui gli eventi di output possono essere formattati nella struttura richiesta dai sistemi di destinazione. Infine, invia l'evento di output dopo l'elaborazione completa alla destinazione utilizzando i plug-in. Alcuni dei plugin più comunemente usati sono: Elasticsearch, File, Graphite, Statsd, ecc.
Vantaggi di Logstash
I seguenti punti spiegano i vari vantaggi di Logstash.
Logstash offre sequenze di pattern regex per identificare e analizzare i vari campi in qualsiasi evento di input.
Logstash supporta una varietà di server Web e origini dati per l'estrazione dei dati di registrazione.
Logstash fornisce più plugin per analizzare e trasformare i dati di registrazione in qualsiasi formato desiderato dall'utente.
Logstash è centralizzato, il che semplifica l'elaborazione e la raccolta di dati da diversi server.
Logstash supporta molti database, protocolli di rete e altri servizi come origine di destinazione per gli eventi di registrazione.
Logstash utilizza il protocollo HTTP, che consente all'utente di aggiornare le versioni di Elasticsearch senza dover aggiornare Logstash in una fase di blocco.
Svantaggi di Logstash
I seguenti punti spiegano i vari svantaggi di Logstash.
Logstash utilizza http, che influisce negativamente sull'elaborazione dei dati di registrazione.
Lavorare con Logstash a volte può essere un po 'complesso, poiché richiede una buona comprensione e analisi dei dati di registrazione in ingresso.
I plugin dei filtri non sono generici, quindi l'utente potrebbe aver bisogno di trovare la sequenza corretta di pattern per evitare errori nell'analisi.
Nel prossimo capitolo, capiremo cos'è ELK Stack e come aiuta Logstash.
ELK sta per Elasticsearch, Logstash, e Kibana. Nello stack ELK, Logstash estrae i dati di registrazione o altri eventi da diverse origini di input. Elabora gli eventi e successivamente li memorizza in Elasticsearch. Kibana è un'interfaccia web, che accede al modulo dei dati di registrazione Elasticsearch e lo visualizza.
Logstash ed Elasticsearch
Logstash fornisce il plug-in Elasticsearch di input e output per leggere e scrivere eventi di registro su Elasticsearch. Elasticsearch come destinazione di output è consigliato anche da Elasticsearch Company per la sua compatibilità con Kibana. Logstash invia i dati a Elasticsearch tramite il protocollo http.
Elasticsearch fornisce funzionalità di caricamento collettivo, che aiuta a caricare i dati da diverse origini o istanze di Logstash su un motore Elasticsearch centralizzato. ELK presenta i seguenti vantaggi rispetto ad altre soluzioni DevOps:
Lo stack ELK è più facile da gestire e può essere ridimensionato per gestire petabyte di eventi.
L'architettura dello stack ELK è molto flessibile e fornisce l'integrazione con Hadoop. Hadoop viene utilizzato principalmente per scopi di archiviazione. Logstash può essere collegato direttamente a Hadoop utilizzando flume ed Elasticsearch fornisce un connettore denominatoes-hadoop per connetterti con Hadoop.
Il costo totale di proprietà di ELK è molto inferiore rispetto alle sue alternative.
Logstash e Kibana
Kibana non interagisce con Logstash direttamente ma attraverso un'origine dati, che è Elasticsearch nello stack ELK. Logstash raccoglie i dati da ogni fonte ed Elasticsearch li analizza a una velocità molto elevata, quindi Kibana fornisce le informazioni utili su quei dati.
Kibana è uno strumento di visualizzazione basato sul web, che aiuta gli sviluppatori e altri ad analizzare le variazioni in grandi quantità di eventi raccolti da Logstash nel motore di Elasticsearch. Questa visualizzazione semplifica la previsione o la visualizzazione dei cambiamenti nelle tendenze degli errori o di altri eventi significativi della sorgente di input.
Per installare Logstash sul sistema, dobbiamo seguire i passaggi indicati di seguito:
Step 1- Controlla la versione del tuo Java installata sul tuo computer; dovrebbe essere Java 8 perché non è compatibile con Java 9. Puoi verificarlo:
In un sistema operativo Windows (OS) (utilizzando il prompt dei comandi) -
> java -version
Nel sistema operativo UNIX (utilizzando il terminale) -
$ echo $JAVA_HOME
Step 2 - Scarica Logstash da -
https://www.elastic.co/downloads/logstash.
Per il sistema operativo Windows, scarica il file ZIP.
Per il sistema operativo UNIX, scarica il file TAR.
Per il sistema operativo Debian, scarica il file DEB.
Per Red Hat e altre distribuzioni Linux, scarica il file RPN.
Le utilità APT e Yum possono essere utilizzate anche per installare Logstash in molte distribuzioni Linux.
Step 3- Il processo di installazione di Logstash è molto semplice. Vediamo come puoi installare Logstash su diverse piattaforme.
Note - Non inserire spazi o due punti nella cartella di installazione.
Windows OS - Decomprimere il pacchetto zip e il Logstash è installato.
UNIX OS - Estrai il file tar in qualsiasi posizione e il Logstash è installato.
$tar –xvf logstash-5.0.2.tar.gz
Using APT utility for Linux OS −
- Scarica e installa la chiave di firma pubblica -
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
- Salva la definizione del repository -
$ echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo
tee -a /etc/apt/sources.list.d/elastic-5.x.list
- Esegui aggiornamento -
$ sudo apt-get update
- Ora puoi eseguire l'installazione utilizzando il seguente comando:
$ sudo apt-get install logstash
Using YUM utility for Debian Linux OS -
- Scarica e installa la chiave di firma pubblica -
$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Aggiungere il testo seguente nel file con il suffisso .repo nella directory o "/etc/yum.repos.d/". Per esempio,logstash.repo
[logstash-5.x]
name = Elastic repository for 5.x packages
baseurl = https://artifacts.elastic.co/packages/5.x/yum
gpgcheck = 1
gpgkey = https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled = 1
autorefresh = 1
type = rpm-md
- È ora possibile installare Logstash utilizzando il seguente comando:
$ sudo yum install logstash
Step 4- Vai alla home directory di Logstash. All'interno della cartella bin, esegui il fileelasticsearch.batfile in caso di windows oppure puoi fare lo stesso usando il prompt dei comandi e tramite il terminale. In UNIX, esegui il file Logstash.
È necessario specificare la sorgente di input, la sorgente di output e i filtri opzionali. Per verificare l'installazione, è possibile eseguirla con la configurazione di base utilizzando un flusso di input standard (stdin) come sorgente di input e un flusso di output standard (stdout) come sorgente di output. È possibile specificare la configurazione nella riga di comando anche utilizzando–e opzione.
In Windows −
> cd logstash-5.0.1/bin
> Logstash -e 'input { stdin { } } output { stdout {} }'
In Linux −
$ cd logstash-5.0.1/bin
$ ./logstash -e 'input { stdin { } } output { stdout {} }'
Note- in caso di Windows, potresti ricevere un errore che indica che JAVA_HOME non è impostato. Per questo, impostalo nelle variabili di ambiente su "C: \ Programmi \ Java \ jre1.8.0_111" o nella posizione in cui hai installato java.
Step 5 - Le porte predefinite per l'interfaccia web di Logstash sono da 9600 a 9700 sono definite nel file logstash-5.0.1\config\logstash.yml come la http.port e raccoglierà la prima porta disponibile nell'intervallo dato.
Possiamo verificare se il server Logstash è attivo e in esecuzione navigando http://localhost:9600o se la porta è diversa, quindi controlla il prompt dei comandi o il terminale. Possiamo vedere la porta assegnata come "Endpoint API Logstash avviato con successo {: port ⇒ 9600}. Restituirà un oggetto JSON, che contiene le informazioni sul Logstash installato nel modo seguente:
{
"host":"manu-PC",
"version":"5.0.1",
"http_address":"127.0.0.1:9600",
"build_date":"2016-11-11T22:28:04+00:00",
"build_sha":"2d8d6263dd09417793f2a0c6d5ee702063b5fada",
"build_snapshot":false
}
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 del fileApache 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 seguente configurazione 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 semplicemente 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 sorgente, il timestamp, la versione, il nome host e il tag, che vengono utilizzati per rappresentare i messaggi aggiuntivi come gli errori.
Possiamo usare 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 del 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"]
}
I registri da diversi server o origini dati vengono raccolti utilizzando spedizionieri. Un mittente è un'istanza di Logstash installata nel server, che accede ai log del server e li invia a una posizione di output specifica.
Invia principalmente l'output a Elasticsearch per l'archiviazione. Logstash riceve input dalle seguenti fonti:
- STDIN
- Syslog
- Files
- TCP/UDP
- Log eventi di Microsoft Windows
- Websocket
- Zeromq
- Estensioni personalizzate
Raccolta dei registri utilizzando il server Apache Tomcat 7
In questo esempio, raccogliamo i log del server Apache Tomcat 7 installato in Windows utilizzando il plug-in di input dei file e li inviamo all'altro log.
logstash.conf
Qui, Logstash è configurato per accedere al registro di accesso di Apache Tomcat 7 installato localmente. Un pattern regex viene utilizzato nell'impostazione del percorso del plug-in del file per ottenere i dati dal file di registro. Questo contiene "accesso" nel suo nome e aggiunge un tipo di apache, che aiuta a differenziare gli eventi di apache dagli altri in una sorgente di destinazione centralizzata. Infine, gli eventi di output verranno visualizzati in output.log.
input {
file {
path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/*access*"
type => "apache"
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
}
}
Esegui Logstash
Possiamo eseguire Logstash utilizzando il seguente comando.
C:\logstash\bin> logstash –f Logstash.conf
Registro di Apache Tomcat
Accedi al server Apache Tomcat e alle sue app Web (http://localhost:8080) per generare log. I dati aggiornati nei log vengono letti da Logstash in tempo reale e memorizzati in output.log come specificato nel file di configurazione.
Apache Tomcat genera un nuovo file di registro degli accessi in base alla data e registra lì gli eventi di accesso. Nel nostro caso, era localhost_access_log.2016-12-24.txt nel filelogs directory di Apache Tomcat.
0:0:0:0:0:0:0:1 - - [
25/Dec/2016:18:37:00 +0800] "GET / HTTP/1.1" 200 11418
0:0:0:0:0:0:0:1 - munish [
25/Dec/2016:18:37:02 +0800] "GET /manager/html HTTP/1.1" 200 17472
0:0:0:0:0:0:0:1 - - [
25/Dec/2016:18:37:08 +0800] "GET /docs/ HTTP/1.1" 200 19373
0:0:0:0:0:0:0:1 - - [
25/Dec/2016:18:37:10 +0800] "GET /docs/introduction.html HTTP/1.1" 200 15399
output.log
Puoi vedere negli eventi di output, viene aggiunto un campo tipo e l'evento è presente nel campo messaggio.
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
localhost_access_log.2016-12-25.txt",
"@timestamp":"2016-12-25T10:37:00.363Z","@version":"1","host":"Dell-PC",
"message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:00 +0800] \"GET /
HTTP/1.1\" 200 11418\r","type":"apache","tags":[]
}
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
"@version":"1","host":"Dell-PC",
"message":"0:0:0:0:0:0:0:1 - munish [25/Dec/2016:18:37:02 +0800] \"GET /
manager/html HTTP/1.1\" 200 17472\r","type":"apache","tags":[]
}
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
"@version":"1","host":"Dell-PC",
"message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:08 +0800] \"GET /docs/
HTTP/1.1\" 200 19373\r","type":"apache","tags":[]
}
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:20.436Z",
"@version":"1","host":"Dell-PC",
"message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:10 +0800] \"GET /docs/
introduction.html HTTP/1.1\" 200 15399\r","type":"apache","tags":[]
}
Raccolta dei registri utilizzando il plug-in STDIN
In questa sezione, discuteremo un altro esempio di raccolta di log utilizzando il STDIN Plugin.
logstash.conf
È un esempio molto semplice, dove Logstash sta leggendo gli eventi inseriti dall'utente in uno standard input. Nel nostro caso, è il prompt dei comandi, che memorizza gli eventi nel file output.log.
input {
stdin{}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
}
}
Esegui Logstash
Possiamo eseguire Logstash utilizzando il seguente comando.
C:\logstash\bin> logstash –f Logstash.conf
Scrivi il seguente testo nel prompt dei comandi:
L'utente ha inserito le seguenti due righe. Logstash separa gli eventi in base all'impostazione del delimitatore e il suo valore per impostazione predefinita è "\ n". L'utente può modificare modificando il valore del delimitatore nel plugin del file.
Tutorialspoint.com welcomes you
Simply easy learning
output.log
Il blocco di codice seguente mostra i dati del registro di output.
{
"@timestamp":"2016-12-25T11:41:16.518Z","@version":"1","host":"Dell-PC",
"message":"tutrialspoint.com welcomes you\r","tags":[]
}
{
"@timestamp":"2016-12-25T11:41:53.396Z","@version":"1","host":"Dell-PC",
"message":"simply easy learning\r","tags":[]
}
Logstash supporta una vasta gamma di log da diverse fonti. Funziona con fonti famose come spiegato di seguito.
Raccogli i registri dalle metriche
Gli eventi di sistema e altre attività temporali vengono registrati nelle metriche. Logstash può accedere al registro dalle metriche di sistema ed elaborarli utilizzando i filtri. Questo aiuta a mostrare all'utente il feed live degli eventi in modo personalizzato. Le metriche vengono scaricate in base aflush_interval settingdel filtro delle metriche e per impostazione predefinita; è impostato su 5 secondi.
Stiamo monitorando le metriche di test generate da Logstash, raccogliendo e analizzando gli eventi in esecuzione attraverso Logstash e mostrando il feed live sul prompt dei comandi.
logstash.conf
Questa configurazione contiene un plug-in generatore, che è offerto da Logstash per le metriche di test e imposta l'impostazione del tipo su "generato" per l'analisi. Nella fase di filtraggio, stiamo elaborando solo le righe con un tipo generato utilizzando l'istruzione "if". Quindi, il plug-in delle metriche conta il campo specificato nelle impostazioni del misuratore. Il plug-in delle metriche scarica il conteggio ogni 5 secondi specificati nel fileflush_interval.
Infine, invia gli eventi di filtro a un output standard come il prompt dei comandi utilizzando il codec pluginper la formattazione. Il plug-in Codec utilizza il valore [ events ] [ rate_1m ] per generare gli eventi al secondo in una finestra scorrevole di 1 minuto.
input {
generator {
type => "generated"
}
}
filter {
if [type] == "generated" {
metrics {
meter => "events"
add_tag => "metric"
}
}
}
output {
# only emit events with the 'metric' tag
if "metric" in [tags] {
stdout {
codec => line { format => "rate: %{[events][rate_1m]}"
}
}
}
Esegui Logstash
Possiamo eseguire Logstash utilizzando il seguente comando.
>logsaths –f logstash.conf
stdout (prompt dei comandi)
rate: 1308.4
rate: 1308.4
rate: 1368.654529135342
rate: 1416.4796003951449
rate: 1464.974293984808
rate: 1523.3119444107458
rate: 1564.1602979542715
rate: 1610.6496496890895
rate: 1645.2184750334154
rate: 1688.7768007612485
rate: 1714.652283095914
rate: 1752.5150680019278
rate: 1785.9432934744932
rate: 1806.912181962126
rate: 1836.0070454626025
rate: 1849.5669494173826
rate: 1871.3814756851832
rate: 1883.3443123790712
rate: 1906.4879113216743
rate: 1925.9420717997118
rate: 1934.166137658981
rate: 1954.3176526556897
rate: 1957.0107444542625
Raccogli i registri dal server Web
I server Web generano un gran numero di registri riguardanti l'accesso e gli errori degli utenti. Logstash aiuta a estrarre i log da diversi server utilizzando plug-in di input e ad archiviarli in una posizione centralizzata.
Stiamo estraendo i dati dal file stderr logs del server Apache Tomcat locale e riporlo in output.log.
logstash.conf
Questo file di configurazione Logstash indica a Logstash di leggere i log degli errori di Apache e di aggiungere un tag denominato "apache-error". Possiamo semplicemente inviarlo a output.log usando il plugin di output del file.
input {
file {
path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0 /logs/*stderr*"
type => "apache-error"
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
}
}
Esegui Logstash
Possiamo eseguire Logstash utilizzando il seguente comando.
>Logstash –f Logstash.conf
Esempio di registro di input
Questo è il campione stderr log, che viene generato quando si verificano gli eventi del server in Apache Tomcat.
C: \ Programmi \ Apache Software Foundation \ Tomcat 7.0 \ logs \ tomcat7-stderr.2016-12-25.log
Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-9999"]
Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Dec 25, 2016 7:05:14 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 823 ms
output.log
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z",
"@version":"1","host":"Dell-PC",
"message":"Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start\r",
"type":"apache-error","tags":[]
}
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z",
"@version":"1","host":"Dell-PC",
"message":"INFO: Starting ProtocolHandler [
\"ajp-bio-8009\"]\r","type":"apache-error","tags":[]
}
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z",
"@version":"1","host":"Dell-PC",
"message":"Dec 25, 2016 7:05:14 PM org.apache.catalina.startup.Catalina start\r",
"type":"apache-error","tags":[]
}
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z",
"@version":"1","host":"Dell-PC",
"message":"INFO: Server startup in 823 ms\r","type":"apache-error","tags":[]
}
Raccogli i registri dalle origini dati
Per cominciare, vediamo come configurare MySQL per la registrazione. Aggiungi le seguenti righe inmy.ini file del server di database MySQL in [mysqld].
In Windows, è presente all'interno della directory di installazione di MySQL, che si trova in -
C:\wamp\bin\mysql\mysql5.7.11
In UNIX, puoi trovarlo in - /etc/mysql/my.cnf
general_log_file = "C:/wamp/logs/queries.log"
general_log = 1
logstash.conf
In questo file di configurazione, il plug-in del file viene utilizzato per leggere il registro di MySQL e scriverlo su ouput.log.
input {
file {
path => "C:/wamp/logs/queries.log"
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
}
}
queries.log
Questo è il registro generato dalle query eseguite nel database MySQL.
2016-12-25T13:05:36.854619Z 2 Query select * from test1_users
2016-12-25T13:05:51.822475Z 2 Query select count(*) from users
2016-12-25T13:05:59.998942Z 2 Query select count(*) from test1_users
output.log
{
"path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:05:37.905Z",
"@version":"1","host":"Dell-PC",
"message":"2016-12-25T13:05:36.854619Z 2 Query\tselect * from test1_users",
"tags":[]
}
{
"path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:05:51.938Z",
"@version":"1","host":"Dell-PC",
"message":"2016-12-25T13:05:51.822475Z 2 Query\tselect count(*) from users",
"tags":[]
}
{
"path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:06:00.950Z",
"@version":"1","host":"Dell-PC",
"message":"2016-12-25T13:05:59.998942Z 2 Query\tselect count(*) from test1_users",
"tags":[]
}
Logstash riceve i log utilizzando plug-in di input e quindi utilizza i plug-in di filtro per analizzare e trasformare i dati. L'analisi e la trasformazione dei log vengono eseguite in base ai sistemi presenti nella destinazione di output. Logstash analizza i dati di registrazione e inoltra solo i campi obbligatori. Successivamente, questi campi vengono trasformati nella forma compatibile e comprensibile del sistema di destinazione.
Come analizzare i registri?
L'analisi dei log viene eseguita utilizzando il file GROK (Rappresentazione grafica della conoscenza) e puoi trovarli in Github -
https://github.com/elastic/logstash/tree/v1.4.2/patterns.
Logstash abbina i dati dei log con un pattern GROK specificato o una sequenza di pattern per l'analisi dei log come "% {COMBINEDAPACHELOG}", comunemente usato per i log di Apache.
I dati analizzati sono più strutturati e facili da cercare e per eseguire query. Logstash cerca i pattern GROK specificati nei log di input ed estrae le righe corrispondenti dai log. Puoi utilizzare il debugger GROK per testare i tuoi pattern GROK.
La sintassi per un pattern GROK è% {SYNTAX: SEMANTIC}. Il filtro Logstash GROK è scritto nella seguente forma:
%{PATTERN:FieldName}
Qui, PATTERN rappresenta il pattern GROK e il fieldname è il nome del campo, che rappresenta i dati analizzati nell'output.
Ad esempio, utilizzando il debugger GROK online https://grokdebug.herokuapp.com/
Ingresso
Una riga di errore di esempio in un registro -
[Wed Dec 07 21:54:54.048805 2016] [:error] [pid 1234:tid 3456829102]
[client 192.168.1.1:25007] JSP Notice: Undefined index: abc in
/home/manu/tpworks/tutorialspoint.com/index.jsp on line 11
Sequenza di pattern GROK
Questa sequenza di pattern GROK corrisponde all'evento di registro, che comprende un timestamp seguito da Livello di registro, ID processo, ID transazione e un messaggio di errore.
\[(%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[.*:%{LOGLEVEL:loglevel}\]
\[pid %{NUMBER:pid}:tid %{NUMBER:tid}\] \[client %{IP:clientip}:.*\]
%{GREEDYDATA:errormsg}
produzione
L'output è in formato JSON.
{
"day": [
"Wed"
],
"month": [
"Dec"
],
"loglevel": [
"error"
],
"pid": [
"1234"
],
"tid": [
"3456829102"
],
"clientip": [
"192.168.1.1"
],
"errormsg": [
"JSP Notice: Undefined index: abc in
/home/manu/tpworks/tutorialspoint.com/index.jsp on line 11"
]
}
Logstash utilizza filtri nel mezzo della pipeline tra input e output. I filtri delle misure Logstash manipolano e creano eventi comeApache-Access. Molti plugin di filtro utilizzati per gestire gli eventi in Logstash. Qui, in un esempio diLogstash Aggregate Filter, stiamo filtrando la durata di ogni transazione SQL in un database e calcolando il tempo totale.
Installazione del plug-in del filtro aggregato
Installazione del plug-in del filtro aggregato utilizzando l'utilità del plug-in Logstash. Il plugin Logstash è un file batch per Windows inbin folder in Logstash.
>logstash-plugin install logstash-filter-aggregate
logstash.conf
In questa configurazione, puoi vedere tre istruzioni "if" per Initializing, Incrementing, e generating la durata totale della transazione, ovvero il sql_duration. Il plugin aggregato viene utilizzato per aggiungere la sql_duration, presente in ogni evento del log di input.
input {
file {
path => "C:/tpwork/logstash/bin/log/input.log"
}
}
filter {
grok {
match => [
"message", "%{LOGLEVEL:loglevel} -
%{NOTSPACE:taskid} - %{NOTSPACE:logger} -
%{WORD:label}( - %{INT:duration:int})?"
]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
}
}
Esegui Logstash
Possiamo eseguire Logstash utilizzando il seguente comando.
>logstash –f logstash.conf
input.log
Il blocco di codice seguente mostra i dati del registro di input.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end
output.log
Come specificato nel file di configurazione, l'ultima istruzione "if" in cui si trova il logger - TRANSACTION_END, che stampa il tempo totale della transazione o sql_duration. Questo è stato evidenziato in giallo nel file output.log.
{
"path":"C:/tpwork/logstash/bin/log/input.log","@timestamp": "2016-12-22T19:04:37.214Z",
"loglevel":"INFO","logger":"TRANSACTION_START","@version": "1","host":"wcnlab-PC",
"message":"8566 - TRANSACTION_START - start\r","tags":[]
}
{
"duration":320,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2016-12-22T19:04:38.366Z","loglevel":"INFO","logger":"SQL",
"@version":"1","host":"wcnlab-PC","label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 320\r","taskid":"48566","tags":[]
}
{
"duration":200,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2016-12-22T19:04:38.373Z","loglevel":"INFO","logger":"SQL",
"@version":"1","host":"wcnlab-PC","label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 200\r","taskid":"48566","tags":[]
}
{
"sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2016-12-22T19:04:38.380Z","loglevel":"INFO","logger":"TRANSACTION_END",
"@version":"1","host":"wcnlab-PC","label":"end",
"message":" INFO - 48566 - TRANSACTION_END - end\r","taskid":"48566","tags":[]
}
Logstash offre vari plugin per trasformare il log analizzato. Questi plugin possonoAdd, Delete, e Update campi nei log per una migliore comprensione e interrogazione nei sistemi di output.
Stiamo usando il Mutate Plugin per aggiungere un nome di campo utente in ogni riga del registro di input.
Installa il plugin Mutate Filter
Per installare il plugin del filtro mutate; possiamo usare il seguente comando.
>Logstash-plugin install Logstash-filter-mutate
logstash.conf
In questo file di configurazione, il plug-in Mutate viene aggiunto dopo il plug-in Aggregate per aggiungere un nuovo campo.
input {
file {
path => "C:/tpwork/logstash/bin/log/input.log"
}
}
filter {
grok {
match => [ "message", "%{LOGLEVEL:loglevel} -
%{NOTSPACE:taskid} - %{NOTSPACE:logger} -
%{WORD:label}( - %{INT:duration:int})?" ]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
mutate {
add_field => {"user" => "tutorialspoint.com"}
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
}
}
Esegui Logstash
Possiamo eseguire Logstash utilizzando il seguente comando.
>logstash –f logstash.conf
input.log
Il blocco di codice seguente mostra i dati del registro di input.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end
output.log
Puoi vedere che c'è un nuovo campo denominato "utente" negli eventi di output.
{
"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2016-12-25T19:55:37.383Z",
"@version":"1",
"host":"wcnlab-PC",
"message":"NFO - 48566 - TRANSACTION_START - start\r",
"user":"tutorialspoint.com","tags":["_grokparsefailure"]
}
{
"duration":320,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2016-12-25T19:55:37.383Z","loglevel":"INFO","logger":"SQL",
"@version":"1","host":"wcnlab-PC","label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 320\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
{
"duration":200,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2016-12-25T19:55:37.399Z","loglevel":"INFO",
"logger":"SQL","@version":"1","host":"wcnlab-PC","label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 200\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
{
"sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2016-12-25T19:55:37.399Z","loglevel":"INFO",
"logger":"TRANSACTION_END","@version":"1","host":"wcnlab-PC","label":"end",
"message":" INFO - 48566 - TRANSACTION_END - end\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
L'output è l'ultima fase nella pipeline Logstash, che invia i dati del filtro dai log di input a una destinazione specificata. Logstash offre più plug-in di output per riporre gli eventi di registro filtrati in vari motori di archiviazione e ricerca diversi.
Archiviazione dei registri
Logstash può memorizzare i log filtrati in un file File, Elasticsearch Engine, stdout, AWS CloudWatch, ecc. Protocolli di rete come TCP, UDP, Websocket può essere utilizzato anche in Logstash per trasferire gli eventi del registro a sistemi di archiviazione remoti.
Nello stack ELK, gli utenti utilizzano il motore Elasticsearch per archiviare gli eventi di registro. Qui, nel seguente esempio, genereremo eventi di log per un motore Elasticsearch locale.
Installazione del plug-in di output di Elasticsearch
Possiamo installare il plugin di output Elasticsearch con il seguente comando.
>logstash-plugin install Logstash-output-elasticsearch
logstash.conf
Questo file di configurazione contiene un plug-in Elasticsearch, che memorizza l'evento di output in Elasticsearch installato localmente.
input {
file {
path => "C:/tpwork/logstash/bin/log/input.log"
}
}
filter {
grok {
match => [ "message", "%{LOGLEVEL:loglevel} -
%{NOTSPACE:taskid} - %{NOTSPACE:logger} -
%{WORD:label}( - %{INT:duration:int})?" ]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
mutate {
add_field => {"user" => "tutorialspoint.com"}
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
Input.log
Il blocco di codice seguente mostra i dati del registro di input.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end
Avvia Elasticsearch su Localhost
Per avviare Elasticsearch dall'host locale, è necessario utilizzare il seguente comando.
C:\elasticsearch\bin> elasticsearch
Una volta che Elasticsearch è pronto, puoi verificarlo digitando il seguente URL nel tuo browser.
http://localhost:9200/
Risposta
Il seguente blocco di codice mostra la risposta di Elasticsearch su localhost.
{
"name" : "Doctor Dorcas",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.1.1",
"build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
"build_timestamp" : "2015-12-15T13:05:55Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
},
"tagline" : "You Know, for Search"
}
Note - Per ulteriori informazioni su Elasticsearch, è possibile fare clic sul seguente collegamento.
https://www.tutorialspoint.com/elasticsearch/index.html
Ora, esegui Logstash con il suddetto Logstash.conf
>Logstash –f Logstash.conf
Dopo aver incollato il testo sopra menzionato nel registro di output, quel testo verrà memorizzato in Elasticsearch da Logstash. È possibile controllare i dati memorizzati digitando il seguente URL nel browser.
http://localhost:9200/logstash-2017.01.01/_search?pretty
Risposta
Sono i dati in formato JSON memorizzati nell'indice Logstash-2017.01.01.
{
"took" : 20,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 10,
"max_score" : 1.0,
"hits" : [ {
"_index" : "logstash-2017.01.01",
"_type" : "logs",
"_id" : "AVlZ9vF8hshdrGm02KOs",
"_score" : 1.0,
"_source":{
"duration":200,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2017-01-01T12:17:49.140Z","loglevel":"INFO",
"logger":"SQL","@version":"1","host":"wcnlab-PC",
"label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 200\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
},
{
"_index" : "logstash-2017.01.01",
"_type" : "logs",
"_id" : "AVlZ9vF8hshdrGm02KOt",
"_score" : 1.0,
"_source":{
"sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2017-01-01T12:17:49.145Z","loglevel":"INFO",
"logger":"TRANSACTION_END","@version":"1","host":"wcnlab-PC",
"label":"end",
"message":" INFO - 48566 - TRANSACTION_END - end\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
}
}
}
Logstash fornisce più plugin per supportare vari archivi di dati o motori di ricerca. Gli eventi di output dei log possono essere inviati a un file di output, output standard o un motore di ricerca come Elasticsearch. Esistono tre tipi di output supportati in Logstash, che sono:
- Uscita standard
- Output di file
- Output nullo
Cerchiamo ora di discutere ciascuno di questi in dettaglio.
Uscita standard (stdout)
Viene utilizzato per generare gli eventi di registro filtrati come flusso di dati all'interfaccia della riga di comando. Di seguito è riportato un esempio di generazione della durata totale di una transazione di database su stdout.
logstash.conf
Questo file di configurazione contiene un plugin di output stdout per scrivere la sql_duration totale in uno standard output.
input {
file {
path => "C:/tpwork/logstash/bin/log/input.log"
}
}
filter {
grok {
match => [
"message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid}
- %{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?"
]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
}
output {
if [logger] == "TRANSACTION_END" {
stdout {
codec => line{format => "%{sql_duration}"}
}
}
}
Note - Installa il filtro aggregato, se non è già installato.
>logstash-plugin install Logstash-filter-aggregate
Esegui Logstash
Possiamo eseguire Logstash utilizzando il seguente comando.
>logstash –f logsatsh.conf
Input.log
Il blocco di codice seguente mostra i dati del registro di input.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end
stdout (sarà il prompt dei comandi in Windows o il terminale in UNIX)
Questa è la durata_ql totale 320 + 200 = 520.
520
Output di file
Logstash può anche memorizzare gli eventi del registro del filtro in un file di output. Useremo l'esempio sopra menzionato e memorizzeremo l'output in un file invece di STDOUT.
logstash.conf
Questo file di configurazione di Logstash indirizza a Logstash l'archiviazione totale di sql_duration in un file di registro di output.
input {
file {
path => "C:/tpwork/logstash/bin/log/input1.log"
}
}
filter {
grok {
match => [
"message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid} -
%{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?"
]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
}
output {
if [logger] == "TRANSACTION_END" {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
codec => line{format => "%{sql_duration}"}
}
}
}
Esegui logstash
Possiamo eseguire Logstash utilizzando il seguente comando.
>logstash –f logsatsh.conf
input.log
Il blocco di codice seguente mostra i dati del registro di input.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end
output.log
Il blocco di codice seguente mostra i dati del registro di output.
520
Output nullo
Si tratta di un plug-in di output speciale, utilizzato per analizzare le prestazioni dei plug-in di input e di filtro.
Logstash offre vari plugin per tutte e tre le fasi della sua pipeline (Input, Filter e Output). Questi plugin aiutano l'utente ad acquisire i log da varie fonti come server web, database, protocolli su rete, ecc.
Dopo l'acquisizione, Logstash può analizzare e trasformare i dati in informazioni significative come richiesto dall'utente. Infine, Logstash può inviare o archiviare tali informazioni significative a varie fonti di destinazione come Elasticsearch, AWS Cloudwatch, ecc.
Plugin di input
I plug-in di input in Logstash aiutano l'utente a estrarre e ricevere i log da varie fonti. La sintassi per l'utilizzo del plug-in di input è la seguente:
Input {
Plugin name {
Setting 1……
Setting 2……..
}
}
È possibile scaricare il plug-in di input utilizzando il seguente comando:
>Logstash-plugin install Logstash-input-<plugin name>
L'utility del plugin Logstash è presente nel file bin folderdella directory di installazione di Logstash. La tabella seguente contiene un elenco dei plug-in di input offerti da Logstash.
Sr.No. | Nome e descrizione del plugin |
---|---|
1 | beats Per ottenere i dati di registrazione o gli eventi dal framework dei battiti elastici. |
2 | cloudwatch Per estrarre eventi da CloudWatch, un'offerta API di Amazon Web Services. |
3 | couchdb_changes Eventi dall'URI _chages di couchdb spediti utilizzando questo plugin. |
4 | drupal_dblog Per estrarre i dati di registrazione del watchdog di drupal con DBLog abilitato. |
5 | Elasticsearch Per recuperare i risultati delle query eseguite nel cluster Elasticsearch. |
6 | eventlog Per ottenere gli eventi dal registro eventi di Windows. |
7 | exec Per ottenere l'output del comando della shell come input in Logstash. |
8 | file Per ottenere gli eventi da un file di input. Ciò è utile quando Logstash è installato localmente con la sorgente di input e si ha accesso ai log della sorgente di input. |
9 | generator Viene utilizzato a scopo di test, che crea eventi casuali. |
10 | github Cattura gli eventi dal webhook GitHub. |
11 | graphite Per ottenere i dati delle metriche dallo strumento di monitoraggio della grafite. |
12 | heartbeat Viene anche utilizzato per i test e produce eventi simili a battiti cardiaci |
13 | http Per raccogliere gli eventi di registro su due protocolli di rete e quelli sono http e https. |
14 | http_poller Viene utilizzato per decodificare l'output dell'API HTTP in un evento. |
15 | jdbc Converte le transazioni JDBC in un evento in Logstash. |
16 | jmx Per estrarre le metriche dalle applicazioni Java remote utilizzando JMX. |
17 | log4j Cattura eventi dall'oggetto socketAppender di Log4j su socket TCP. |
18 | rss All'output degli strumenti della riga di comando come evento di input in Logstash. |
19 | tcp Cattura eventi su socket TCP. |
20 | Raccogli eventi dall'API di streaming di Twitter. |
21 | unix Raccogli eventi su socket UNIX. |
22 | websocket Cattura eventi tramite protocollo websocket. |
23 | xmpp Legge gli eventi sui protocolli Jabber / xmpp. |
Impostazioni plugin
Tutti i plugin hanno le loro impostazioni specifiche, che aiutano a specificare i campi importanti come Porta, Percorso, ecc. In un plugin. Discuteremo le impostazioni di alcuni dei plugin di input.
File
Questo plug-in di input viene utilizzato per estrarre gli eventi direttamente dai file di registro o di testo presenti nella sorgente di input. Funziona in modo simile al comando tail in UNIX e salva l'ultimo cursore letto e legge solo i nuovi dati aggiunti dal file di input, ma può essere modificato utilizzando l'impostazione star_position. Di seguito sono riportate le impostazioni di questo plug-in di input.
Nome dell'impostazione | Valore predefinito | Descrizione |
---|---|---|
add_field | {} | Aggiungi un nuovo campo all'evento di input. |
close_older | 3600 | I file con l'ora dell'ultima lettura (in secondi) superiore a quella specificata in questo plugin vengono chiusi. |
codec | "Semplice" | Viene utilizzato per decodificare i dati prima di entrare nella pipeline Logstash. |
delimitatore | "\ N" | Viene utilizzato per specificare un nuovo delimitatore di riga. |
discover_interval | 15 | È l'intervallo di tempo (in secondi) tra la scoperta di nuovi file nel percorso specificato. |
enable_metric | vero | Viene utilizzato per abilitare o disabilitare il reporting e la raccolta di metriche per il plug-in specificato. |
escludere | Viene utilizzato per specificare il nome del file oi modelli, che dovrebbero essere esclusi dal plug-in di input. | |
Id | Per specificare un'identità univoca per quell'istanza di plug-in. | |
max_open_files | Specifica il numero massimo di file di input da Logstash in qualsiasi momento. | |
sentiero | Specifica il percorso dei file e può contenere i modelli per il nome del file. | |
posizione di partenza | "fine" | Puoi cambiare in "inizio", se lo desideri; inizialmente Logstash dovrebbe iniziare a leggere i file dall'inizio e non solo il nuovo evento di log. |
start_interval | 1 | Specifica l'intervallo di tempo in secondi, dopo il quale Logstash verifica i file modificati. |
tag | Per aggiungere qualsiasi informazione aggiuntiva, come Logstash, aggiunge "_grokparsefailure" nei tag, quando un evento di log non è conforme al filtro grok specificato. | |
genere | Questo è un campo speciale, che puoi aggiungere a un evento di input ed è utile nei filtri e nella kibana. |
Elasticsearch
Questo particolare plugin viene utilizzato per leggere i risultati delle query di ricerca in un cluster Elasticsearch. Di seguito sono riportate le impostazioni utilizzate in questo plugin:
Nome dell'impostazione | Valore predefinito | Descrizione |
---|---|---|
add_field | {} | Come nel plugin file, viene utilizzato per aggiungere un campo nell'evento di input. |
ca_file | Viene utilizzato per specificare il percorso del file dell'autorità di certificazione SSL. | |
codec | "Semplice" | Viene utilizzato per decodificare gli eventi di input da Elasticsearch prima di entrare nella pipeline Logstash. |
docinfo | "Falso" | Puoi cambiarlo in true, se desideri estrarre le informazioni aggiuntive come indice, tipo e ID dal motore di Elasticsearch. |
docinfo_fields | ["_index", "_type", "_id"] | Puoi eliminare qualsiasi campo che non desideri inserire nel tuo Logstash. |
enable_metric | vero | Viene utilizzato per abilitare o disabilitare il reporting e la raccolta di metriche per quell'istanza di plug-in. |
host | Viene utilizzato per specificare gli indirizzi di tutti i motori di ricerca elastica, che saranno l'origine di input di quell'istanza di Logstash. La sintassi è host: porta o IP: porta. | |
Id | Viene utilizzato per fornire un numero di identità univoco a quella specifica istanza del plug-in di input. | |
indice | "logstash- *" | Viene utilizzato per specificare il nome dell'indice o un modello, che Logstash monitorerà da Logstash per l'input. |
parola d'ordine | Per scopi di autenticazione. | |
query | "{\" ordina \ ": [\" _ doc \ "]}" | Domanda per l'esecuzione. |
ssl | falso | Abilita o disabilita il secure socket layer. |
tag | Per aggiungere ulteriori informazioni negli eventi di input. | |
genere | Viene utilizzato per classificare i moduli di input in modo che sia facile cercare in tutti gli eventi di input nelle fasi successive. | |
utente | Per scopi autentici. |
registro eventi
Questo plug-in di input legge i dati dall'API win32 dei server Windows. Di seguito sono riportate le impostazioni di questo plugin:
Nome dell'impostazione | Valore predefinito | Descrizione |
---|---|---|
add_field | {} | Come nel plugin file, viene utilizzato per aggiungere un campo nell'evento di input |
codec | "Semplice" | Viene utilizzato per decodificare gli eventi di input da Windows; prima di entrare nella pipeline Logstash |
file di log | ["Applicazione", "Sicurezza", "Sistema"] | Eventi richiesti nel file di registro di input |
intervallo | 1000 | È in millisecondi e definisce l'intervallo tra due controlli consecutivi di nuovi registri eventi |
tag | Per aggiungere ulteriori informazioni negli eventi di input | |
genere | Viene utilizzato per classificare l'input da un plug-in specifico per un determinato tipo, in modo che sia facile cercare tutti gli eventi di input nelle fasi successive |
Questo plug-in di input viene utilizzato per raccogliere il feed di Twitter dalla sua Streaming API. La tabella seguente descrive le impostazioni di questo plugin.
Nome dell'impostazione | Valore predefinito | Descrizione |
---|---|---|
add_field | {} | Come nel plugin file, viene utilizzato per aggiungere un campo nell'evento di input |
codec | "Semplice" | Viene utilizzato per decodificare gli eventi di input da Windows; prima di entrare nella pipeline Logstash |
consumer_key | Contiene la chiave utente dell'app Twitter. Per maggiori informazioni, visitahttps://dev.twitter.com/apps/new | |
consumer_secret | Contiene la chiave segreta del consumatore dell'app Twitter. Per maggiori informazioni, visitahttps://dev.twitter.com/apps/new | |
enable_metric | vero | Viene utilizzato per abilitare o disabilitare il reporting e la raccolta di metriche per quell'istanza di plug-in |
segue | Specifica gli ID utente separati da virgole e LogStash controlla lo stato di questi utenti su Twitter. Per maggiori informazioni, visita https://dev.twitter.com |
|
full_tweet | falso | Puoi cambiarlo in true, se desideri che Logstash legga l'intero oggetto restituito dall'API di Twitter |
id | Viene utilizzato per fornire un numero di identità univoco a quella specifica istanza del plug-in di input | |
ignore_retweets | Falso | Puoi modificare l'impostazione true per ignorare i retweet nel feed Twitter di input |
parole chiave | È un array di parole chiave, che devono essere tracciate nel feed di input di twitter | |
linguaggio | Definisce la lingua dei tweet necessari a LogStash dal feed di Twitter di input. Questo è un array di identificatori, che definisce una lingua specifica in Twitter | |
posizioni | Per filtrare i tweet dal feed di input in base alla posizione specificata. Questo è un array, che contiene la longitudine e la latitudine della posizione | |
oauth_token | È un campo obbligatorio, che contiene il token oauth dell'utente. Per ulteriori informazioni, visitare il seguente collegamentohttps://dev.twitter.com/apps | |
oauth_token_secret | È un campo obbligatorio, che contiene il token segreto oauth dell'utente. Per ulteriori informazioni, visitare il seguente collegamentohttps://dev.twitter.com/apps | |
tag | Per aggiungere ulteriori informazioni negli eventi di input | |
genere | Viene utilizzato per classificare l'input da un plug-in specifico per un determinato tipo, in modo che sia facile cercare tutti gli eventi di input nelle fasi successive |
TCP
TCP viene utilizzato per ottenere gli eventi sul socket TCP; può leggere dalle connessioni utente o dal server, specificato nelle impostazioni della modalità. La tabella seguente descrive le impostazioni di questo plugin:
Nome dell'impostazione | Valore predefinito | Descrizione |
---|---|---|
add_field | {} | Come nel plugin file, viene utilizzato per aggiungere un campo nell'evento di input |
codec | "Semplice" | Viene utilizzato per decodificare gli eventi di input da Windows; prima di entrare nella pipeline Logstash |
enable_metric | vero | Viene utilizzato per abilitare o disabilitare il reporting e la raccolta di metriche per quell'istanza di plug-in |
ospite | "0.0.0.0" | L'indirizzo del sistema operativo del server da cui dipende il client |
id | Contiene la chiave utente dell'app Twitter | |
modalità | "server" | Viene utilizzato per specificare che la sorgente di input è server o client. |
porta | Definisce il numero di porta | |
ssl_cert | Viene utilizzato per specificare il percorso del certificato SSL | |
ssl_enable | falso | Abilita o disabilita SSL |
ssl_key | Per specificare il percorso del file di chiavi SSL | |
tag | Per aggiungere ulteriori informazioni negli eventi di input | |
genere | Viene utilizzato per classificare l'input da un plug-in specifico per un determinato tipo, in modo che sia facile cercare tutti gli eventi di input nelle fasi successive |
Logstash - Plugin di output
Logstash supporta varie origini di output e in diverse tecnologie come database, file, e-mail, output standard, ecc.
La sintassi per l'utilizzo del plug-in di output è la seguente:
output {
Plugin name {
Setting 1……
Setting 2……..
}
}
È possibile scaricare il plug-in di output utilizzando il seguente comando:
>logstash-plugin install logstash-output-<plugin name>
Il Logstash-plugin utilityè presente nella cartella bin della directory di installazione di Logstash. La tabella seguente descrive i plugin di output offerti da Logstash.
Sr.No. | Nome e descrizione del plugin |
---|---|
1 | CloudWatch Questo plug-in viene utilizzato per inviare dati metrici aggregati a CloudWatch dei servizi Web di Amazon. |
2 | csv Viene utilizzato per scrivere gli eventi di output in modo separato da virgole. |
3 | Elasticsearch Viene utilizzato per memorizzare i log di output nell'indice Elasticsearch. |
4 | Viene utilizzato per inviare un'e-mail di notifica, quando viene generato l'output. L'utente può aggiungere informazioni sull'output nell'email. |
5 | exec Viene utilizzato per eseguire un comando, che corrisponde all'evento di output. |
6 | ganglia Scrive le metriche a gmond of Gangila. |
7 | gelf Viene utilizzato per produrre output per Graylog2 in formato GELF. |
8 | google_bigquery Invia gli eventi a Google BigQuery. |
9 | google_cloud_storage Memorizza gli eventi di output su Google Cloud Storage. |
10 | graphite Viene utilizzato per memorizzare gli eventi di output in Graphite. |
11 | graphtastic Viene utilizzato per scrivere le metriche di output su Windows. |
12 | hipchat Viene utilizzato per memorizzare gli eventi del registro di output su HipChat. |
13 | http Viene utilizzato per inviare gli eventi del registro di output agli endpoint http o https. |
14 | influxdb Viene utilizzato per memorizzare l'evento di output in InfluxDB. |
15 | irc Viene utilizzato per scrivere gli eventi di output su irc. |
16 | mongodb Memorizza i dati di output in MongoDB. |
17 | nagios Viene utilizzato per notificare a Nagios i risultati del controllo passivo. |
18 | nagios_nsca Viene utilizzato per notificare a Nagios i risultati del controllo passivo tramite il protocollo NSCA. |
19 | opentsdb Memorizza gli eventi di output di Logstash in OpenTSDB. |
20 | pipe Trasmette gli eventi di output allo standard input di un altro programma. |
21 | rackspace Viene utilizzato per inviare gli eventi del registro di output al servizio di accodamento di Rackspace Cloud. |
22 | redis Utilizza il comando rpush per inviare i dati di registrazione dell'output alla coda Redis. |
23 | riak Viene utilizzato per memorizzare gli eventi di output nella coppia chiave / valore distribuita Riak. |
24 | s3 Memorizza i dati di registrazione dell'output su Amazon Simple Storage Service. |
25 | sns Viene utilizzato per inviare gli eventi di output al Simple Notification Service di Amazon. |
26 | solr_http Indicizza e memorizza i dati di registrazione in uscita in Solr. |
27 | sps Viene utilizzato per inviare gli eventi a Simple Queue Service di AWS. |
28 | statsd Viene utilizzato per inviare i dati delle metriche al demone di rete di statsd. |
29 | stdout Viene utilizzato per mostrare gli eventi di output sull'output standard della CLI come il prompt dei comandi. |
30 | syslog Viene utilizzato per inviare gli eventi di output al server syslog. |
31 | tcp Viene utilizzato per inviare gli eventi di output al socket TCP. |
32 | udp Viene utilizzato per inviare gli eventi di output su UDP. |
33 | websocket Viene utilizzato per eseguire il push degli eventi di output sul protocollo WebSocket. |
34 | xmpp Viene utilizzato per eseguire il push degli eventi di output sul protocollo XMPP. |
Tutti i plugin hanno le loro impostazioni specifiche, che aiutano a specificare i campi importanti come Porta, Percorso, ecc. In un plugin. Discuteremo le impostazioni di alcuni dei plugin di output.
Elasticsearch
Il plug-in di output di Elasticsearch consente a Logstash di memorizzare l'output nei cluster specifici del motore di Elasticsearch. Questa è una delle famose scelte degli utenti perché è inclusa nel pacchetto di ELK Stack e quindi fornisce soluzioni end-to-end per Devops. La tabella seguente descrive le impostazioni di questo plugin di output.
Nome dell'impostazione | Valore predefinito | Descrizione |
---|---|---|
azione | indice | Viene utilizzato per definire l'azione eseguita nel motore Elasticsearch. Altri valori per queste impostazioni sono Elimina, Crea, Aggiorna, ecc. |
cacert | Contiene il percorso del file con .cer o .pem per la convalida del certificato del server. | |
codec | "Semplice" | Viene utilizzato per codificare i dati di registrazione in uscita prima di inviarli all'origine di destinazione. |
doc_as_upset | falso | Questa impostazione viene utilizzata in caso di azione di aggiornamento. Crea un documento nel motore di Elasticsearch, se l'ID del documento non è specificato nel plug-in di output. |
tipo di documento | Viene utilizzato per memorizzare lo stesso tipo di eventi nello stesso tipo di documento. Se non è specificato, il tipo di evento viene utilizzato per lo stesso. | |
flush_size | 500 | Viene utilizzato per migliorare le prestazioni del caricamento collettivo in Elasticsearch |
host | ["127.0.0.1"] | È un array di indirizzi di destinazione per i dati di registrazione in uscita |
idle_flush_time | 1 | Definisce il limite di tempo (secondo) tra i due scaricamenti, Logstash forza lo scaricamento dopo il limite di tempo specificato in questa impostazione |
indice | "logstash -% {+ YYYY.MM.dd}" | Viene utilizzato per specificare l'indice del motore Elasticsearch |
manage_temlpate | vero | Viene utilizzato per applicare il modello predefinito in Elasticsearch |
genitore | zero | Viene utilizzato per specificare l'ID del documento principale in Elasticsearch |
parola d'ordine | Viene utilizzato per autenticare la richiesta in un cluster protetto in Elasticsearch | |
sentiero | Viene utilizzato per specificare il percorso HTTP di Elasticsearch. | |
tubatura | zero | Viene utilizzato per impostare la pipeline di acquisizione, che l'utente desidera eseguire per un evento |
proxy | Viene utilizzato per specificare il proxy HTTP | |
retry_initial_interval | 2 | Viene utilizzato per impostare l'intervallo di tempo iniziale (secondi) tra i tentativi di massa. Ottiene il doppio dopo ogni tentativo fino a raggiungere retry_max_interval |
retry_max_interval | 64 | Viene utilizzato per impostare l'intervallo di tempo massimo per retry_initial_interval |
retry_on_conflict | 1 | È il numero di tentativi effettuati da Elasticsearch per aggiornare un documento |
ssl | Per abilitare o disabilitare SSL / TLS protetto su Elasticsearch | |
modello | Contiene il percorso del template personalizzato in Elasticsearch | |
Nome modello | "logstash" | Viene utilizzato per denominare il modello in Elasticsearch |
tempo scaduto | 60 | È il timeout per le richieste di rete a Elasticsearch |
upsert | "" | Aggiorna il documento o, se document_id non esiste, crea un nuovo documento in Elasticsearch |
utente | Contiene l'utente per autenticare la richiesta Logstash nel cluster Elasticsearch protetto |
Il plug-in di output della posta elettronica viene utilizzato per notificare all'utente quando Logstash genera l'output. La tabella seguente descrive le impostazioni per questo plugin.
Nome dell'impostazione | Valore predefinito | Descrizione |
---|---|---|
indirizzo | "Localhost" | È l'indirizzo del server di posta |
allegati | [] | Contiene i nomi e le posizioni dei file allegati |
corpo | "" | Contiene il corpo dell'email e dovrebbe essere testo normale |
cc | Contiene gli indirizzi di posta elettronica separati da virgole per il cc di posta elettronica | |
codec | "Semplice" | Viene utilizzato per codificare i dati di registrazione in uscita prima di inviarli all'origine di destinazione. |
tipo di contenuto | "text / html; charset = UTF-8" | Viene utilizzato per il tipo di contenuto dell'email |
debug | falso | Viene utilizzato per eseguire l'inoltro della posta in modalità debug |
dominio | "localhost" | Viene utilizzato per impostare il dominio per inviare i messaggi di posta elettronica |
a partire dal | "[email protected]" | Viene utilizzato per specificare l'indirizzo e-mail del mittente |
htmlbody | "" | Viene utilizzato per specificare il corpo dell'email in formato html |
parola d'ordine | Viene utilizzato per autenticarsi con il server di posta | |
porta | 25 | Viene utilizzato per definire la porta per comunicare con il server di posta |
rispondi a | Viene utilizzato per specificare l'ID e-mail per il campo di risposta dell'e-mail | |
soggetto | "" | Contiene la riga dell'oggetto dell'email |
use_tls | falso | Abilita o disabilita TSL per la comunicazione con il server di posta |
nome utente | Contiene il nome utente per l'autenticazione con il server | |
attraverso | "Smtp" | Definisce i metodi di invio di e-mail tramite Logstash |
Http
Questa impostazione viene utilizzata per inviare gli eventi di output su http alla destinazione. Questo plugin ha le seguenti impostazioni:
Nome dell'impostazione | Valore predefinito | Descrizione |
---|---|---|
automatic_retries | 1 | Viene utilizzato per impostare il numero di tentativi di richiesta http tramite logstash |
cacert | Contiene il percorso del file per la convalida del certificato del server | |
codec | "Semplice" | Viene utilizzato per codificare i dati di registrazione in uscita prima di inviarli all'origine di destinazione. |
tipo di contenuto | Specifica il tipo di contenuto della richiesta http al server di destinazione | |
biscotti | vero | Viene utilizzato per abilitare o disabilitare i cookie |
formato | "json" | Viene utilizzato per impostare il formato del corpo della richiesta http |
intestazioni | Contiene le informazioni dell'intestazione http | |
http_method | "" | Viene utilizzato per specificare il metodo http utilizzato nella richiesta da logstash e i valori possono essere "put", "post", "patch", "delete", "get", "head" |
request_timeout | 60 | Viene utilizzato per autenticarsi con il server di posta |
url | È un'impostazione richiesta per questo plug-in per specificare l'endpoint http o https |
stdout
Il plugin di output stdout viene utilizzato per scrivere gli eventi di output sull'output standard dell'interfaccia della riga di comando. È il prompt dei comandi in Windows e il terminale in UNIX. Questo plugin ha le seguenti impostazioni:
Nome dell'impostazione | Valore predefinito | Descrizione |
---|---|---|
codec | "Semplice" | Viene utilizzato per codificare i dati di registrazione in uscita prima di inviarli all'origine di destinazione. |
lavoratori | 1 | Viene utilizzato per specificare il numero di worker per l'output |
statsd
È un demone di rete utilizzato per inviare i dati delle matrici su UDP ai servizi di backend di destinazione. È il prompt dei comandi in Windows e il terminale in UNIX. Questo plugin ha le seguenti impostazioni:
Nome dell'impostazione | Valore predefinito | Descrizione |
---|---|---|
codec | "Semplice" | Viene utilizzato per codificare i dati di registrazione in uscita prima di inviarli all'origine di destinazione. |
contare | {} | Viene utilizzato per definire il conteggio da utilizzare nelle metriche |
decremento | [] | Viene utilizzato per specificare i nomi delle metriche di decremento |
ospite | "Localhost" | Contiene l'indirizzo del server di statsd |
incremento | [] | Viene utilizzato per specificare i nomi delle metriche di incremento |
porta | 8125 | Contiene il port del server statsd |
frequenza di campionamento | 1 | Viene utilizzato per specificare la frequenza di campionamento della metrica |
mittente | "%{ospite}" | Specifica il nome del mittente |
impostato | {} | Viene utilizzato per specificare una metrica impostata |
tempismo | {} | Viene utilizzato per specificare una metrica di temporizzazione |
lavoratori | 1 | Viene utilizzato per specificare il numero di worker per l'output |
Plugin di filtro
Logstash supporta vari plugin di filtri per analizzare e trasformare i log di input in un formato più strutturato e facile da interrogare.
La sintassi per l'utilizzo del plug-in del filtro è la seguente:
filter {
Plugin name {
Setting 1……
Setting 2……..
}
}
Puoi scaricare il plugin del filtro utilizzando il seguente comando:
>logstash-plugin install logstash-filter-<plugin name>
L'utilità del plug-in Logstash è presente nella cartella bin della directory di installazione di Logstash. La tabella seguente descrive i plugin di output offerti da Logstash.
Sr.No. | Nome e descrizione del plugin |
---|---|
1 | aggregate Questo plugin raccoglie o aggrega i dati da vari eventi dello stesso tipo e li elabora nell'evento finale |
2 | alter Consente all'utente di modificare il campo degli eventi di registro, che il filtro di mutazioni non gestisce |
3 | anonymize Viene utilizzato per sostituire i valori dei campi con un hash coerente |
4 | cipher Viene utilizzato per crittografare gli eventi di output prima di archiviarli nell'origine di destinazione |
5 | clone Viene utilizzato per creare duplicati degli eventi di output in Logstash |
6 | collate Unisce gli eventi di diversi registri in base al loro tempo o conteggio |
7 | csv Questo plugin analizza i dati dai log di input in base al separatore |
8 | date Analizza le date dai campi nell'evento e le imposta come timestamp per l'evento |
9 | dissect Questo plugin aiuta l'utente a estrarre i campi da dati non strutturati e rende facile per il filtro grok analizzarli correttamente |
10 | drop Viene utilizzato per eliminare tutti gli eventi dello stesso tipo o qualsiasi altra somiglianza |
11 | elapsed Viene utilizzato per calcolare il tempo tra gli eventi di inizio e di fine |
12 | Elasticsearch Viene utilizzato per copiare i campi degli eventi di log precedenti presenti in Elasticsearch in quello corrente in Logstash |
13 | extractnumbers Viene utilizzato per estrarre il numero dalle stringhe negli eventi del registro |
14 | geoip Aggiunge un campo nell'evento, che contiene la latitudine e la longitudine della posizione dell'IP presente nel registro dell'evento |
15 | grok È il plug-in di filtro comunemente utilizzato per analizzare l'evento per ottenere i campi |
16 | i18n Elimina i caratteri speciali da un evento archiviato nel registro |
17 | json Viene utilizzato per creare un oggetto Json strutturato in un evento o in un campo specifico di un evento |
18 | kv Questo plugin è utile per confrontare coppie di valori chiave nei dati di registrazione |
19 | metrics Viene utilizzato per aggregare metriche come il conteggio della durata del tempo in ogni evento |
20 | multiline È anche uno dei plugin di filtro di uso comune, che aiuta l'utente in caso di conversione di dati di registrazione multilinea in un singolo evento. |
21 | mutate Questo plugin viene utilizzato per rinominare, rimuovere, sostituire e modificare i campi nei tuoi eventi |
22 | range Utilizzato per controllare i valori numerici dei campi negli eventi rispetto a un intervallo previsto e la lunghezza della stringa all'interno di un intervallo. |
23 | ruby Viene utilizzato per eseguire codice Ruby arbitrario |
24 | sleep In questo modo Logstash rimane inattivo per un periodo di tempo specificato |
25 | split Viene utilizzato per dividere un campo di un evento e inserire tutti i valori di divisione nei cloni di quell'evento |
26 | xml Viene utilizzato per creare eventi parando i dati XML presenti nei log |
Plugin codec
I plugin del codec possono essere una parte dei plugin di input o output. Questi plugin vengono utilizzati per modificare o formattare la presentazione dei dati di registrazione. Logstash offre più plug-in di codec e quelli sono i seguenti:
Sr.No. | Nome e descrizione del plugin |
---|---|
1 | avro Questo plugin codifica serializzare eventi Logstash in datum avro o decodificare record avro in eventi Logstash |
2 | cloudfront Questo plug-in legge i dati codificati dal cloudfront AWS |
3 | cloudtrail Questo plugin viene utilizzato per leggere i dati da AWS cloudtrail |
4 | collectd Questo legge i dati dal protocollo binario chiamato raccolti su UDP |
5 | compress_spooler Viene utilizzato per comprimere gli eventi di registro in Logstash in batch di spool |
6 | dots Viene utilizzato il monitoraggio delle prestazioni impostando un punto per ogni evento su stdout |
7 | es_bulk Viene utilizzato per convertire i dati di massa da Elasticsearch in eventi Logstash, inclusi i metadati di Elasticsearch |
8 | graphite Questo codec legge i dati dalla grafite in eventi e modifica l'evento in record formattati in grafite |
9 | gzip_lines Questo plugin viene utilizzato per gestire i dati codificati in gzip |
10 | json Viene utilizzato per convertire un singolo elemento nell'array Json in un singolo evento Logstash |
11 | json_lines Viene utilizzato per gestire i dati Json con delimitatore di nuova riga |
12 | line Il plugin leggerà e scriverà eventi in un unico live, il che significa che dopo il delimitatore di nuova riga ci sarà un nuovo evento |
13 | multiline Viene utilizzato per convertire i dati di registrazione multilinea in un singolo evento |
14 | netflow Questo plugin viene utilizzato per convertire i dati di nertflow v5 / v9 in eventi di logstash |
15 | nmap Analizza i dati dei risultati di nmap in un formato XML |
16 | plain Questo legge il testo senza delimitatori |
17 | rubydebug Questo plugin scriverà gli eventi Logstash di output usando la fantastica libreria di stampa di Ruby |
Crea il tuo plugin
Puoi anche creare i tuoi plugin in Logstash, che soddisfano le tue esigenze. L'utilità del plug-in Logstash viene utilizzata per creare plug-in personalizzati. Qui creeremo un plugin di filtro, che aggiungerà un messaggio personalizzato negli eventi.
Genera la struttura di base
Un utente può generare i file necessari utilizzando l'opzione di generazione dell'utilità logstash-plugin oppure è disponibile anche su GitHub.
>logstash-plugin generate --type filter --name myfilter --path c:/tpwork/logstash/lib
Qui, typeviene utilizzata per specificare che il plug-in è Input, Output o Filter. In questo esempio, stiamo creando un plugin di filtro denominatomyfilter. L'opzione percorso viene utilizzata per specificare il percorso in cui si desidera creare la directory del plug-in. Dopo aver eseguito il comando sopra menzionato, vedrai che viene creata una struttura di directory.
Sviluppa il plugin
Puoi trovare il file di codice del plugin nel file \lib\logstash\filterscartella nella directory dei plugin. L'estensione del file sarà.rb.
Nel nostro caso, il file di codice si trovava nel seguente percorso:
C:\tpwork\logstash\lib\logstash-filter-myfilter\lib\logstash\filters\myfilter.rb
Modifichiamo il messaggio in - predefinito ⇒ "Ciao, lo stai imparando su tutorialspoint.com" e salviamo il file.
Installa il plugin
Per installare questo plugin, è necessario modificare il Gemfile di Logstash. È possibile trovare questo file nella directory di installazione di Logstash. Nel nostro caso, sarà inC:\tpwork\logstash. Modifica questo file utilizzando qualsiasi editor di testo e aggiungi il seguente testo al suo interno.
gem "logstash-filter-myfilter",:path => "C:/tpwork/logstash/lib/logstash-filter-myfilter"
Nel comando precedente, specifichiamo il nome del plugin insieme a dove possiamo trovarlo per l'installazione. Quindi, esegui l'utilità del plugin Logstash per installare questo plugin.
>logstash-plugin install --no-verify
Test
Qui stiamo aggiungendo myfilter in uno degli esempi precedenti -
logstash.conf
Questo file di configurazione Logstash contiene myfilter nella sezione dei filtri dopo il plug-in del filtro grok.
input {
file {
path => "C:/tpwork/logstash/bin/log/input1.log"
}
}
filter {
grok {
match => [
"message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid} -
%{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?" ]
}
myfilter{}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output1.log"
codec => rubydebug
}
}
Run logstash
Possiamo eseguire Logstash utilizzando il seguente comando.
>logstash –f logsatsh.conf
input.log
Il blocco di codice seguente mostra i dati del registro di input.
INFO - 48566 - TRANSACTION_START - start
output.log
Il blocco di codice seguente mostra i dati del registro di output.
{
"path" => "C:/tpwork/logstash/bin/log/input.log",
"@timestamp" => 2017-01-07T06:25:25.484Z,
"loglevel" => "INFO",
"logger" => "TRANSACTION_END",
"@version" => "1",
"host" => "Dell-PC",
"label" => "end",
"message" => "Hi, You are learning this on tutorialspoint.com",
"taskid" => "48566",
"tags" => []
}
Pubblicalo su Logstash
Uno sviluppatore può anche pubblicare il suo plug-in personalizzato su Logstash caricandolo su GitHub e seguendo i passaggi standardizzati definiti da Elasticsearch Company.
Fare riferimento al seguente URL per ulteriori informazioni sulla pubblicazione:
https://www.elastic.co/guide/en/logstash/current/contributing-to-logstash.html
Logstash offre API per monitorare le sue prestazioni. Queste API di monitoraggio estraggono le metriche di runtime su Logstash.
API Info nodo
Questa API viene utilizzata per ottenere le informazioni sui nodi di Logstash. Restituisce le informazioni del sistema operativo, della pipeline Logstash e della JVM in formato JSON.
È possibile estrarre le informazioni inviando un file get richiesta a Logstash utilizzando il seguente URL -
GET http://localhost:9600/_node?pretty
Risposta
Di seguito sarebbe la risposta dell'API Node Info.
{
"host" : "Dell-PC",
"version" : "5.0.1",
"http_address" : "127.0.0.1:9600",
"pipeline" : {
"workers" : 4,
"batch_size" : 125,
"batch_delay" : 5,
"config_reload_automatic" : false,
"config_reload_interval" : 3
},
"os" : {
"name" : "Windows 7",
"arch" : "x86",
"version" : "6.1",
"available_processors" : 4
},
"jvm" : {
"pid" : 312,
"version" : "1.8.0_111",
"vm_name" : "Java HotSpot(TM) Client VM",
"vm_version" : "1.8.0_111",
"vm_vendor" : "Oracle Corporation",
"start_time_in_millis" : 1483770315412,
"mem" : {
"heap_init_in_bytes" : 16777216,
"heap_max_in_bytes" : 1046937600,
"non_heap_init_in_bytes" : 163840,
"non_heap_max_in_bytes" : 0
},
"gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ]
}
}
Puoi anche ottenere le informazioni specifiche di Pipeline, OS e JVM, semplicemente aggiungendo i loro nomi nell'URL.
GET http://localhost:9600/_node/os?pretty
GET http://localhost:9600/_node/pipeline?pretty
GET http://localhost:9600/_node/jvm?pretty
Plugin Info API
Questa API viene utilizzata per ottenere le informazioni sui plug-in installati nel Logstash. Puoi recuperare queste informazioni inviando una richiesta get all'URL indicato di seguito -
GET http://localhost:9600/_node/plugins?pretty
Risposta
Di seguito sarebbe la risposta dell'API Plugins Info.
{
"host" : "Dell-PC",
"version" : "5.0.1",
"http_address" : "127.0.0.1:9600",
"total" : 95,
"plugins" : [ {
"name" : "logstash-codec-collectd",
"version" : "3.0.2"
},
{
"name" : "logstash-codec-dots",
"version" : "3.0.2"
},
{
"name" : "logstash-codec-edn",
"version" : "3.0.2"
},
{
"name" : "logstash-codec-edn_lines",
"version" : "3.0.2"
},
............
}
API Node Stats
Questa API viene utilizzata per estrarre le statistiche del Logstash (Memoria, Processo, JVM, Pipeline) negli oggetti JSON. Puoi recuperare queste informazioni inviando una richiesta get agli URL menzionati di seguito -
GET http://localhost:9600/_node/stats/?pretty
GET http://localhost:9600/_node/stats/process?pretty
GET http://localhost:9600/_node/stats/jvm?pretty
GET http://localhost:9600/_node/stats/pipeline?pretty
API Hot Threads
Questa API recupera le informazioni sui thread attivi in Logstash. Gli hot thread sono i thread java, che hanno un elevato utilizzo della CPU e durano più a lungo del normale tempo di esecuzione. Puoi recuperare queste informazioni inviando una richiesta get all'URL indicato di seguito -
GET http://localhost:9600/_node/hot_threads?pretty
Un utente può utilizzare il seguente URL per ottenere la risposta in una forma più leggibile.
GET http://localhost:9600/_node/hot_threads?human = true
In questo capitolo, discuteremo gli aspetti di sicurezza e monitoraggio di Logstash.
Monitoraggio
Logstash è un ottimo strumento per monitorare i server e i servizi negli ambienti di produzione. Le applicazioni nell'ambiente di produzione producono diversi tipi di dati di log come log di accesso, log di errori, ecc. Logstash può contare o analizzare il numero di errori, accessi o altri eventi utilizzando plugin di filtro. Questa analisi e il conteggio possono essere utilizzati per monitorare diversi server e i loro servizi.
Logstash offre plugin come HTTP Pollerper monitorare il monitoraggio dello stato del sito web. Qui stiamo monitorando un sito web denominatomysite ospitato su un server Apache Tomcat locale.
logstash.conf
In questo file di configurazione, il plug-in http_poller viene utilizzato per raggiungere il sito specificato nel plug-in dopo un intervallo di tempo specificato nell'impostazione dell'intervallo. Infine, scrive lo stato del sito su uno standard output.
input {
http_poller {
urls => {
site => "http://localhost:8080/mysite"
}
request_timeout => 20
interval => 30
metadata_target => "http_poller_metadata"
}
}
output {
if [http_poller_metadata][code] == 200 {
stdout {
codec => line{format => "%{http_poller_metadata[response_message]}"}
}
}
if [http_poller_metadata][code] != 200 {
stdout {
codec => line{format => "down"}
}
}
}
Esegui logstash
Possiamo eseguire Logstash con il seguente comando.
>logstash –f logstash.conf
stdout
Se il sito è attivo, l'output sarà:
Ok
Se interrompiamo il sito utilizzando il Manager App di Tomcat, l'output cambierà in -
down
Sicurezza
Logstash fornisce numerose funzionalità per una comunicazione sicura con sistemi esterni e supporta il meccanismo di autenticazione. Tutti i plug-in di Logstash supportano l'autenticazione e la crittografia su connessioni HTTP.
Sicurezza con protocollo HTTP
Ci sono impostazioni come utente e password per scopi di autenticazione in vari plugin offerti da Logstash come nel plugin Elasticsearch.
elasticsearch {
user => <username>
password => <password>
}
L'altra autenticazione è PKI (public key infrastructure)per Elasticsearch. Lo sviluppatore deve definire due impostazioni nel plug-in di output di Elasticsearch per abilitare l'autenticazione PKI.
elasticsearch {
keystore => <string_value>
keystore_password => <password>
}
Nel protocollo HTTPS, uno sviluppatore può utilizzare il certificato dell'autorità per SSL / TLS.
elasticsearch {
ssl => true
cacert => <path to .pem file>
}
Sicurezza con protocollo di trasporto
Per utilizzare il protocollo di trasporto con Elasticsearch, gli utenti devono impostare l'impostazione del protocollo su trasporto. Ciò evita l'annullamento del marshalling di oggetti JSON e porta a una maggiore efficienza.
L'autenticazione di base è la stessa eseguita nel protocollo http nel protocollo di output Elasticsearch.
elasticsearch {
protocol => “transport”
user => <username>
password => <password>
}
L'autenticazione PKI richiede anche che i set SSL siano veri con altre impostazioni nel protocollo di output di Elasticsearch -
elasticsearch {
protocol => “transport”
ssl => true
keystore => <string_value>
keystore_password => <password>
}
Infine, la sicurezza SSL richiede un po 'di più impostazioni rispetto ad altri metodi di sicurezza nella comunicazione.
elasticsearch {
ssl => true
ssl => true
keystore => <string_value>
keystore_password => <password>
truststore =>
truststore_password => <password> }
Altri vantaggi per la sicurezza di Logstash
Logstash può aiutare a inserire fonti di sistema per prevenire attacchi come attacchi denial of service. Il monitoraggio dei registri e l'analisi dei diversi eventi in tali registri possono aiutare gli amministratori di sistema a verificare la variazione delle connessioni in entrata e degli errori. Queste analisi possono aiutare a vedere se l'attacco sta avvenendo o sta per avvenire sui server.
Altri prodotti di Elasticsearch Company come x-pack e filebeat fornisce alcune funzionalità per comunicare in modo sicuro con Logstash.