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.