Logstash - Fase di output

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 archiviare 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":[]
         }
      }
   }
}