Logstash: salidas admitidas
Logstash proporciona varios complementos para admitir varios almacenes de datos o motores de búsqueda. Los eventos de salida de los registros se pueden enviar a un archivo de salida, salida estándar o un motor de búsqueda como Elasticsearch. Hay tres tipos de salidas admitidas en Logstash, que son:
- Salida estándar
- Salida de archivo
- Salida nula
Analicemos ahora cada uno de estos en detalle.
Salida estándar (stdout)
Se utiliza para generar los eventos de registro filtrados como un flujo de datos a la interfaz de línea de comandos. A continuación, se muestra un ejemplo de cómo generar la duración total de una transacción de base de datos en stdout.
logstash.conf
Este archivo de configuración contiene un complemento de salida estándar para escribir el total de sql_duration en una salida estándar.
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 {
if [logger] == "TRANSACTION_END" {
stdout {
codec => line{format => "%{sql_duration}"}
}
}
}
Note - Instale el filtro agregado, si aún no lo ha hecho.
>logstash-plugin install Logstash-filter-aggregate
Ejecutar Logstash
Podemos ejecutar Logstash usando el siguiente comando.
>logstash –f logsatsh.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
stdout (será el símbolo del sistema en Windows o terminal en UNIX)
Este es el sql_duration total 320 + 200 = 520.
520
Salida de archivo
Logstash también puede almacenar los eventos de registro de filtro en un archivo de salida. Usaremos el ejemplo mencionado anteriormente y almacenaremos la salida en un archivo en lugar de STDOUT.
logstash.conf
Este archivo de configuración de Logstash indica a Logstash que almacene el sql_duration total en un archivo de registro de salida.
input {
file {
path => "C:/tpwork/logstash/bin/log/input1.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 {
if [logger] == "TRANSACTION_END" {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
codec => line{format => "%{sql_duration}"}
}
}
}
Ejecutar logstash
Podemos ejecutar Logstash usando el siguiente comando.
>logstash –f logsatsh.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
El siguiente bloque de código muestra los datos del registro de salida.
520
Salida nula
Este es un complemento de salida especial, que se utiliza para analizar el rendimiento de los complementos de entrada y filtro.