【问题标题】:Logstash Grok regex parsingLogstash Grok 正则表达式解析
【发布时间】:2021-10-24 14:13:34
【问题描述】:

我正在尝试使用 Grok 对纯文本消息进行解析;我的目标是将明文分解为 JSON 日志。

消息的格式相当严格,如下:

<timestamp> <loglevel> <greedydata> field1=value1, field2=value2, .... fieldN=valueN

字段数不固定的地方。

是否可以使用命名捕获组捕获每个 field=value 对,能够使用与输出消息中的键相同的“字段”名称?

谢谢

【问题讨论】:

    标签: logstash logstash-grok elk


    【解决方案1】:

    TL;DR - 使用 dissect 而不是 grok


    你想要这样的东西:

    {
      "timestamp": <timestamp>,
      "loglevel": <loglevel>,
      "field1": value1,
      "field2": value2,
      ....
      "fieldN": valueN
    }
    

    键(field1fieldN 等)是动态的。

    您不能使用grok 来执行此操作。即使使用这样的模式(然后使用数组位置索引)也行不通:

    ( field[0-9]+=%{DATA:value})+$
    

    您需要以不同的方式处理此问题。您的选择是:

    • 在它到达 logstash 之前处理它
    • 使用ruby 过滤器
    • 使用dissect filter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-18
      • 2020-04-09
      • 2021-03-31
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多