Logstash - Sorties prises en charge

Logstash fournit plusieurs plugins pour prendre en charge divers magasins de données ou moteurs de recherche. Les événements de sortie des journaux peuvent être envoyés à un fichier de sortie, à une sortie standard ou à un moteur de recherche comme Elasticsearch. Il existe trois types de sorties prises en charge dans Logstash, à savoir -

  • Sortie standard
  • Sortie de fichier
  • Sortie nulle

Examinons maintenant chacun de ces éléments en détail.

Sortie standard (stdout)

Il est utilisé pour générer les événements de journal filtrés sous forme de flux de données vers l'interface de ligne de commande. Voici un exemple de génération de la durée totale d'une transaction de base de données vers stdout.

logstash.conf

Ce fichier de configuration contient un plugin de sortie stdout pour écrire la durée totale de sql_duration sur une sortie standard.

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 - Veuillez installer le filtre agrégé, s'il n'est pas déjà installé.

>logstash-plugin install Logstash-filter-aggregate

Exécutez Logstash

Nous pouvons exécuter Logstash en utilisant la commande suivante.

>logstash –f logsatsh.conf

Input.log

Le bloc de code suivant montre les données du journal d'entrée.

INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end

stdout (ce sera l'invite de commande dans Windows ou le terminal sous UNIX)

C'est la durée totale de sql_duration 320 + 200 = 520.

520

Sortie de fichier

Logstash peut également stocker les événements du journal de filtrage dans un fichier de sortie. Nous utiliserons l'exemple mentionné ci-dessus et stockerons la sortie dans un fichier au lieu de STDOUT.

logstash.conf

Ce fichier de configuration Logstash ordonne à Logstash de stocker la durée totale de sql_duration dans un fichier journal de sortie.

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}"}
      }
   }
}

Exécutez logstash

Nous pouvons exécuter Logstash en utilisant la commande suivante.

>logstash –f logsatsh.conf

input.log

Le bloc de code suivant montre les données du journal d'entrée.

INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end

output.log

Le bloc de code suivant montre les données du journal de sortie.

520

Sortie nulle

Il s'agit d'un plugin de sortie spécial, utilisé pour analyser les performances des plugins d'entrée et de filtre.