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.