带有 grokPattern 的子串
Substring with grokPattern
有了这个例子数据
GigabitEthernet102/0/0/28 = TLU-46356_CAR_ONE_RIVERO_AUTO_CENTER_PRINCIPAL Traffic (SNMP Traffic) Down (The interface is disconnected: ifOperStatus=down (2) (code: PE058))
我尝试获取找到“TLU”模式的子字符串并创建一个像这样的新字段“TLU-46356”
我使用这样的 grok 模式
if ([logMessage] =~ /TLU-/){ grok { match => { "logMessage" => 'TLU=(?<TLU>[0-9a-fx]{8})' } }
但是不起作用,结果是“grokparsefailure”
任何想法,请。
我刚刚在 Kibana 的 Grok Debugger 中测试了您的示例,这对我有用
(?<TLU>[0-9a-fx]{5})
出于某种原因 TLU=
一开始不起作用,但 grok 无论如何都会选择命名的捕获组,所以即使没有它,你也会得到名为 TLU
的字段。
问题的另一部分是您试图匹配从 0
到 9
、从 a
到 f
或 [=18] 的 8 个字符=],但在您的示例中 TLU-
之后的数字只有 5 个字符长。因此,要么日志具有您未提及的可变字符数,您应该使用 {n, m}
之类的内容来定义要捕获的字符串的长度。或者你可以只说 *
并用 _
终止它,就像这样
(?<TLU>[0-9a-fx]*)_
如果我遗漏了什么,请用额外的数据更新问题并告诉我。祝你好运!
有了这个例子数据
GigabitEthernet102/0/0/28 = TLU-46356_CAR_ONE_RIVERO_AUTO_CENTER_PRINCIPAL Traffic (SNMP Traffic) Down (The interface is disconnected: ifOperStatus=down (2) (code: PE058))
我尝试获取找到“TLU”模式的子字符串并创建一个像这样的新字段“TLU-46356”
我使用这样的 grok 模式
if ([logMessage] =~ /TLU-/){ grok { match => { "logMessage" => 'TLU=(?<TLU>[0-9a-fx]{8})' } }
但是不起作用,结果是“grokparsefailure”
任何想法,请。
我刚刚在 Kibana 的 Grok Debugger 中测试了您的示例,这对我有用
(?<TLU>[0-9a-fx]{5})
出于某种原因 TLU=
一开始不起作用,但 grok 无论如何都会选择命名的捕获组,所以即使没有它,你也会得到名为 TLU
的字段。
问题的另一部分是您试图匹配从 0
到 9
、从 a
到 f
或 [=18] 的 8 个字符=],但在您的示例中 TLU-
之后的数字只有 5 个字符长。因此,要么日志具有您未提及的可变字符数,您应该使用 {n, m}
之类的内容来定义要捕获的字符串的长度。或者你可以只说 *
并用 _
终止它,就像这样
(?<TLU>[0-9a-fx]*)_
如果我遗漏了什么,请用额外的数据更新问题并告诉我。祝你好运!