Ich bin Neuling auf ELK und ich bin eine Config-Datei zu schreiben, die mehrzeilige verwendet, und wir brauchen ein Muster für EingangsdatenKorrigieren Sie ELK mehrzeiligen regulären Ausdruck?
110000|read|<soapenv:Envelope>
<head>hello<head>
<body></body>
</soapenv:Envelope>|<soapenv:Envelope>
<body></body>
</soapenv:Envelope>
210000|read|<soapenv:Envelope>
<head>hello<head>
<body></body>
</soapenv:Envelope>|<soapenv:Envelope>
<body></body>
</soapenv:Envelope>
370000|read|<soapenv:Envelope>
<head>hello<head>
<body></body>
</soapenv:Envelope>|<soapenv:Envelope>
<body></body>
</soapenv:Envelope>
und Konfigurationsdatei verwendet schreiben ist:
input {
file {
path => "/opt/test5/practice_new/xml_input.dat"
start_position => "beginning"
codec => multiline
{
pattern => "^%{INT}\|%{WORD}\|<soapenv:Envelope*>\|<soapenv"
negate => true
what => "previous"
}
}
}
filter {
grok {
match => [ "message", "%{DATA:method_id}\|%{WORD:method_type}\|%{GREEDYDATA:request}\|%{GREEDYDATA:response}" ]
}
}
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "xml"
}
stdout {}
}
Aber die Das verwendete Muster passt nicht zu meiner Anforderung.
bitte schlagen Sie mir das richtige Muster vor.
Erwartete Ausgabe:
Für 1. log
method_id- 110000
method type-
request-
response-
Für 2. log
method id- 210000
method type-
request-
response-
in ähnlicher Weise für den Rest.
Try [diese] (https://regex101.com/r/lP5xef/1) (die Regex aus dem regulären Ausdruck Feld kopieren, um zu versuchen). –
@Wiktor Stribizew können Sie mir mit dem regulären Ausdruck für das folgende Protokoll helfen – Ritwik
Wenn die Antwort unten mit meiner Regex nicht funktioniert, sollten Sie es nicht akzeptieren. –