Logstash - Filtres
Logstash utilise des filtres au milieu du pipeline entre l'entrée et la sortie. Les filtres des mesures Logstash manipulent et créent des événements tels queApache-Access. De nombreux plugins de filtrage permettent de gérer les événements dans Logstash. Ici, dans un exemple duLogstash Aggregate Filter, nous filtrons la durée de chaque transaction SQL dans une base de données et calculons le temps total.
Installation du plug-in de filtre d'agrégat
Installation du plug-in de filtre d'agrégation à l'aide de l'utilitaire Logstash-plugin. Le plugin Logstash est un fichier batch pour Windows dansbin folder dans Logstash.
>logstash-plugin install logstash-filter-aggregate
logstash.conf
Dans cette configuration, vous pouvez voir trois instructions «if» pour Initializing, Incrementing, et generating la durée totale de la transaction, c'est-à-dire le sql_duration. Le plugin agrégat est utilisé pour ajouter le sql_duration, présent dans chaque événement du journal d'entrée.
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"
}
}
Exécutez Logstash
Nous pouvons exécuter Logstash en utilisant la commande suivante.
>logstash –f logstash.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
Comme spécifié dans le fichier de configuration, la dernière instruction «if» où le journal est - TRANSACTION_END, qui imprime la durée totale de la transaction ou sql_duration. Cela a été mis en évidence en jaune dans le fichier 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":[]
}