簡體   English   中英

Splunk:如何在一個查詢中使用多個正則表達式?

[英]Splunk: How to use multiple regular expressions in one query?

我有四個正則表達式,我想用於一個查詢。 所有正則表達式本身都可以,但我沒有找到如何在 pne 查詢中一起使用它們:

這些是正則表達式:

表達式 1:

(?<time>\d{4}.\d{2}.\d{2}\s\d{2}.\d{2}.\d{2}.\d{3})

表達式 2:

deviceId...(?<deviceId>\d+)

表達式 3:

error....code...(?<errorCode>\w+)

表達式 4:

"\"message...(?<errorMessage>.*?)\"

我在 Splunk 中嘗試了其他一些方法:

 source="xyz.log" |rex field=_raw  "(?<time>\d{4}.\d{2}.\d{2}\s\d{2}.\d{2}.\d{2}.\d{3}) deviceId...(?<deviceId>\d+) error....code...(?<errorCode>\w+) "\"message...(?<errorMessage>.*?)\"" |table time deviceId errorCode errorMessage

但我有一個錯誤。

我通常會盡量避免將多個字段提取物放在一個rex

相反,我選擇這樣的順序:

<search>
| rex field=_raw "(?<ip>\d+\.\d+\.\d+\.\d+):"
| rex field=_raw "\d+:(?<port>\d+)"
| rex field=_raw "\d+:\d+\s+(?<msg>.+)"
<more stuff here>

在此示例中,我將 IP、端口和一些消息提取到三個新字段中: ipportmsg

當然,如果可以的話,這應該在props.conf完成……但這並不總是可能的

您可以使用 OR |組合正則表達式| 運算符,但使用多個rex命令要容易得多。 使用多個命令的優點是允許關鍵字與順序無關。

source="xyz.log" 
|rex field=_raw  "(?<time>\d{4}.\d{2}.\d{2}\s\d{2}.\d{2}.\d{2}.\d{3})" 
|rex "deviceId...(?<deviceId>\d+)"
|rex "error....code...(?<errorCode>\w+)"
|rex "\\\"message...(?<errorMessage>.*?)\\\"" 
|table time deviceId errorCode errorMessage

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM