Logstash - Etapa de salida
La salida es la última etapa en la canalización de Logstash, que envía los datos del filtro desde los registros de entrada a un destino específico. Logstash ofrece múltiples complementos de salida para almacenar los eventos de registro filtrados en varios motores de búsqueda y almacenamiento diferentes.
Almacenamiento de registros
Logstash puede almacenar los registros filtrados en un File, Elasticsearch Engine, stdout, AWS CloudWatch, etc. Protocolos de red como TCP, UDP, Websocket También se puede utilizar en Logstash para transferir los eventos de registro a sistemas de almacenamiento remoto.
En la pila de ELK, los usuarios usan el motor Elasticsearch para almacenar los eventos de registro. Aquí, en el siguiente ejemplo, generaremos eventos de registro para un motor de Elasticsearch local.
Instalación del complemento de salida de Elasticsearch
Podemos instalar el complemento de salida Elasticsearch con el siguiente comando.
>logstash-plugin install Logstash-output-elasticsearch
logstash.conf
Este archivo de configuración contiene un complemento de Elasticsearch, que almacena el evento de salida en Elasticsearch instalado 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
El siguiente bloque de código muestra los datos del registro de entrada.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end
Inicie Elasticsearch en Localhost
Para iniciar Elasticsearch en el localhost, debe usar el siguiente comando.
C:\elasticsearch\bin> elasticsearch
Una vez que Elasticsearch esté listo, puede verificarlo escribiendo la siguiente URL en su navegador.
http://localhost:9200/
Respuesta
El siguiente bloque de código muestra la respuesta de Elasticsearch en 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 - Para obtener más información sobre Elasticsearch, puede hacer clic en el siguiente enlace.
Ahora, ejecute Logstash con el Logstash.conf mencionado anteriormente
>Logstash –f Logstash.conf
Después de pegar el texto mencionado anteriormente en el registro de salida, Logstash almacenará ese texto en Elasticsearch. Puede verificar los datos almacenados escribiendo la siguiente URL en el navegador.
http://localhost:9200/logstash-2017.01.01/_search?pretty
Respuesta
Son los datos en formato JSON almacenados en el índice 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":[]
}
}
}
}