J'ai un pipeline Logstash pour ingérer un fichier entier, code multiligne utilisé. Je voudrais obtenir tous les événements correspondants et extraire uniquement le dernier mot ou texte. Je n'arrive pas à faire fonctionner une expression régulière.
Contenu du fichier
some line extract this 875846 85746,857
some other line
some other line with more text
let's extract this 887362 24153,44737
some other final line
Correspondance requise
Trouver toutes les lignes contenant "extraire ceci" et récupérer le dernier mot/texte
Résultat attendu
{
"patternmatch1" => [
[0] [
[0] "85746,857"
],
[1] [
[0] "24153,44737"
]
],
"@timestamp" => 2020-01-14T11:15:34.304Z
}
Pipeline Logstash
input {
file{
path => "C:/file.txt"
start_position => "beginning"
sincedb_path => NUL
codec => multiline {
pattern => "^nomatching"
negate => true
what => previous
auto_flush_interval => 1
multiline_tag => ""
}
}
}
filter {
ruby { code => 'event.set("patternmatch1",event.get("message").scan(/extract this([^\r]*)/))' }
}
output {
stdout { codec => rubydebug }
}
La sortie actuelle
{
"patternmatch1" => [],
"message" => "some line extract this 875846 85746,857\r\nsome other line\r\nsome other line with more text\r\nlet's extract this 887362 24153,44737\r\nsome other final line\r\n\r",
"@timestamp" => 2020-01-14T11:44:50.140Z
}