私はELKの初心者です、私は複数行を使用して設定ファイルを書いているし、我々が使用した入力データELKマルチライン正規表現を修正しますか?
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>
と設定ファイルのパターンを記述する必要がある:
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 {}
}
しかし、それに使われているパターンが私の要求に合っていません。
正しいパターンを教えてください。
予想される出力:第一ログの
method_id- 110000
method type-
request-
response-
第二のログについては
method id- 210000
method type-
request-
response-
同様に残りのため。
を[これ](https://regex101.com/r/lP5xef/1)試してみてください(しようとする正規表現フィールドから正規表現をコピーします)。 –
@Wiktor Stribizewは、次のログの正規表現を助けることができます – Ritwik
以下の答えが私の正規表現ではうまくいかない場合、それを受け入れるべきではありません。 –