【问题标题】:Logstash Grok Pattern for mysql logs用于 mysql 日志的 Logstash Grok 模式
【发布时间】:2018-05-29 06:26:13
【问题描述】:

这是我正在解析的示例日志模式。我正在使用 grok,但它并不完全符合我的预期

180528 8:46:26 2 Query  SELECT 1

要解析这个日志,我的 grok 模式是

%{NUMBER:date} %{NOTSPACE:time}%{INT:pid}%{GREEDYDATA:message}

在 grok 调试器中的输出是

> {   "date": [
>     [
>       "180528"
>     ]   ],   "time": [
>     [
>       "8:46:2"
>     ]   ],   "pid": [
>     [
>       "6"
>     ]   ],   "message": [
>     [
>       " 2 Query\tSELECT 1"
>     ]   ] }

如果您在输出中观察到,pid 是从 time 中提取的,并且 2 的实际 pid 正在合并到消息中。不知道这里出了什么问题。

【问题讨论】:

    标签: logstash logstash-grok


    【解决方案1】:

    为什么你不能用TIME 模式来匹配你的时间呢?将它与等于\S+NOTSPACE 匹配是没有意义的,并且匹配任何非空白字符(等于[^\r\n\t\f\v ]

    您可以使用TIME 模式作为您的时间值,使用INT 作为pid,如下所示,

    %{NUMBER:date}\s%{TIME:time}\s%{INT:pid}\s%{GREEDYDATA:message}
    

    这会给你,

    {
      "date": [
        [
          "180528"
        ]
      ],
      "BASE10NUM": [
        [
          "180528"
        ]
      ],
      "time": [
        [
          "8:46:26"
        ]
      ],
      "HOUR": [
        [
          "8"
        ]
      ],
      "MINUTE": [
        [
          "46"
        ]
      ],
      "SECOND": [
        [
          "26"
        ]
      ],
      "pid": [
        [
          "2"
        ]
      ],
      "message": [
        [
          "Query  SELECT 1"
        ]
      ]
    }
    

    【讨论】:

    • 成功了。谢谢你。我以前也用过时间,但错过了/s。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多