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.