Logstash: output supportati
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
Discutiamo ora ciascuno di questi in dettaglio.
Uscita standard (stdout)
Viene utilizzato per generare gli eventi di registro filtrati come flusso di dati nell'interfaccia della riga di comando. Ecco 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.