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