Logstash - Filtros
Logstash usa filtros en el medio de la canalización entre la entrada y la salida. Los filtros de las medidas de Logstash manipulan y crean eventos comoApache-Access. Muchos complementos de filtro se utilizan para administrar los eventos en Logstash. Aquí, en un ejemplo delLogstash Aggregate Filter, estamos filtrando la duración de cada transacción SQL en una base de datos y calculamos el tiempo total.
Instalación del complemento de filtro agregado
Instalación del complemento de filtro agregado mediante la utilidad de complemento Logstash. El complemento Logstash es un archivo por lotes para Windows enbin folder en Logstash.
>logstash-plugin install logstash-filter-aggregate
logstash.conf
En esta configuración, puede ver tres declaraciones 'if' para Initializing, Incrementing, y generating la duración total de la transacción, es decir, la sql_duration. El complemento agregado se utiliza para agregar sql_duration, presente en cada evento del registro de entrada.
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
}
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
}
}
Ejecutar Logstash
Podemos ejecutar Logstash usando el siguiente comando.
>logstash –f logstash.conf
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
output.log
Como se especifica en el archivo de configuración, la última instrucción 'if' donde está el registrador - TRANSACTION_END, que imprime el tiempo total de la transacción o sql_duration. Esto se ha resaltado en color amarillo en el output.log.
{
"path":"C:/tpwork/logstash/bin/log/input.log","@timestamp": "2016-12-22T19:04:37.214Z",
"loglevel":"INFO","logger":"TRANSACTION_START","@version": "1","host":"wcnlab-PC",
"message":"8566 - TRANSACTION_START - start\r","tags":[]
}
{
"duration":320,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2016-12-22T19:04:38.366Z","loglevel":"INFO","logger":"SQL",
"@version":"1","host":"wcnlab-PC","label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 320\r","taskid":"48566","tags":[]
}
{
"duration":200,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2016-12-22T19:04:38.373Z","loglevel":"INFO","logger":"SQL",
"@version":"1","host":"wcnlab-PC","label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 200\r","taskid":"48566","tags":[]
}
{
"sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2016-12-22T19:04:38.380Z","loglevel":"INFO","logger":"TRANSACTION_END",
"@version":"1","host":"wcnlab-PC","label":"end",
"message":" INFO - 48566 - TRANSACTION_END - end\r","taskid":"48566","tags":[]
}