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