【问题标题】:Match double quotes and get the contents using grok匹配双引号并使用 grok 获取内容
【发布时间】:2018-05-09 13:30:51
【问题描述】:

我有一个来自我的服务器的日志,格式如下,开始将日志注入我的 ELK 服务器,但在匹配日志模式时卡住了。

2018-04-20T21:51:13.677291071-0400 level=7 [Common] [Common] [ID=22] [0001232700011fde] [00943 01248] [Thread1] "[key1:N/A key2:0 key3:N/A]: Completed flow"

我能够匹配到Thread1,我怎样才能获得双引号内的key1 的值。

目前我使用以下模式并将整个消息存储在单个字符串中。

%{TIMESTAMP_ISO8601:logTimestamp} level=%{NUMBER:severity} \[Common\] \[Common] \[ID=%{BASE10NUM:logId}] \[%{WORD:taskId1}] \[%{DATA:taskId2}] \[%{DATA:taskName}]%{GREEDYDATA:logString}

我使用http://grokdebug.herokuapp.com/ 来检查语法,是否有任何其他免费实用程序可以根据输入字符串提供 grok 模式?

【问题讨论】:

  • 请检查我的答案

标签: logstash logstash-grok


【解决方案1】:

您可以简单地在grok 模式之外指定双引号,如下所示, "\[key1:%{DATA:key1}

这也将匹配key1

%{TIMESTAMP_ISO8601:logTimestamp} level=%{NUMBER:severity} \[Common\] \[Common] \[ID=%{BASE10NUM:logId}] \[%{WORD:taskId1}] \[%{DATA:taskId2}] \[%{DATA:taskName}] "\[key1:%{DATA:key1}

上述方法的问题是由于正斜杠,它不会匹配N/A。如果keyN/A 并且还接受该字段的其他字符,则更好的方法是编写custom pattern 以从key1 值中转义/

"\[key1:(?<key1>(N\/A|\w+))

key1 的完整模式将是,

%{TIMESTAMP_ISO8601:logTimestamp} level=%{NUMBER:severity} \[Common\] \[Common] \[ID=%{BASE10NUM:logId}] \[%{WORD:taskId1}] \[%{DATA:taskId2}] \[%{DATA:taskName}] "\[key1:(?<key1>(N\/A|\w+))

它会产生以下输出,

{
  "logTimestamp": [
    [
      "2018-04-20T21:51:13.677291071-0400"
    ]
  ],
  "YEAR": [
    [
      "2018"
    ]
  ],
  "MONTHNUM": [
    [
      "04"
    ]
  ],
  "MONTHDAY": [
    [
      "20"
    ]
  ],
  "HOUR": [
    [
      "21",
      "04"
    ]
  ],
  "MINUTE": [
    [
      "51",
      "00"
    ]
  ],
  "SECOND": [
    [
      "13.677291071"
    ]
  ],
  "ISO8601_TIMEZONE": [
    [
      "-0400"
    ]
  ],
  "severity": [
    [
      "7"
    ]
  ],
  "BASE10NUM": [
    [
      "7"
    ]
  ],
  "logId": [
    [
      "22"
    ]
  ],
  "taskId1": [
    [
      "0001232700011fde"
    ]
  ],
  "taskId2": [
    [
      "00943 01248"
    ]
  ],
  "taskName": [
    [
      "Thread1"
    ]
  ],
  "key1": [
    [
      "N/A"
    ]
  ]
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多