Logstash - Ausgabestufe

Die Ausgabe ist die letzte Stufe in der Logstash-Pipeline, in der die Filterdaten aus den Eingabeprotokollen an ein bestimmtes Ziel gesendet werden. Logstash bietet mehrere Ausgabe-Plugins, um die gefilterten Protokollereignisse in verschiedenen Speicher- und Suchmaschinen zu speichern.

Speichern von Protokollen

Logstash kann die gefilterten Protokolle in a speichern File, Elasticsearch Engine, stdout, AWS CloudWatch, etc. Netzwerkprotokolle wie TCP, UDP, Websocket kann auch in Logstash zum Übertragen der Protokollereignisse auf Remotespeichersysteme verwendet werden.

Im ELK-Stack verwenden Benutzer die Elasticsearch-Engine, um die Protokollereignisse zu speichern. Im folgenden Beispiel werden hier Protokollereignisse für eine lokale Elasticsearch-Engine generiert.

Installieren des Elasticsearch-Ausgabe-Plugins

Wir können das Elasticsearch-Ausgabe-Plugin mit dem folgenden Befehl installieren.

>logstash-plugin install Logstash-output-elasticsearch

logstash.conf

Diese Konfigurationsdatei enthält ein Elasticsearch-Plugin, das das Ausgabeereignis in Elasticsearch speichert, das lokal installiert ist.

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

Der folgende Codeblock zeigt die Eingabeprotokolldaten.

INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end

Starten Sie Elasticsearch bei Localhost

Um Elasticsearch am localhost zu starten, sollten Sie den folgenden Befehl verwenden.

C:\elasticsearch\bin> elasticsearch

Sobald Elasticsearch fertig ist, können Sie es überprüfen, indem Sie die folgende URL in Ihren Browser eingeben.

http://localhost:9200/

Antwort

Der folgende Codeblock zeigt die Antwort von Elasticsearch bei 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 - Für weitere Informationen zu Elasticsearch können Sie auf den folgenden Link klicken.

https://www.tutorialspoint.com/elasticsearch/index.html

Führen Sie nun Logstash mit der oben genannten Logstash.conf aus

>Logstash –f Logstash.conf

Nach dem Einfügen des oben genannten Textes in das Ausgabeprotokoll wird dieser Text in Elasticsearch by Logstash gespeichert. Sie können die gespeicherten Daten überprüfen, indem Sie die folgende URL in den Browser eingeben.

http://localhost:9200/logstash-2017.01.01/_search?pretty

Antwort

Es sind die Daten im JSON-Format, die im Index Logstash-2017.01.01 gespeichert sind.

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