【问题标题】:Substring with grokPattern带有 grokPattern 的子字符串
【发布时间】:2021-11-17 05:54:51
【问题描述】:

有了这个示例数据

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”

任何想法,请。

【问题讨论】:

    标签: elasticsearch logstash


    【解决方案1】:

    我刚刚在 Kibana 的 Grok Debugger 中测试了您的示例,这对我有用

    (?<TLU>[0-9a-fx]{5})
    

    由于某种原因,一开始TLU= 不起作用,但 grok 无论如何都会选择命名的捕获组,所以即使没有它,您也会得到名为 TLU 的字段。

    问题的另一部分是您尝试匹配从09、从afx 的8 个字符,但在您的示例编号中TLU- 之后仅 5 个字符长。因此,要么日志具有您未提及的可变数量的字符,您应该使用 {n, m} 之类的东西来定义要捕获的字符串的长度。或者你可以直接说 * 并像这样用 _ 终止它

    (?<TLU>[0-9a-fx]*)_
    

    如果我遗漏了什么,请使用其他数据更新问题并告诉我。祝你好运!

    【讨论】:

      猜你喜欢
      • 2020-11-20
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多