使用自定义模式定义时Grok解析错误

时间:2015-06-10 10:54:37

标签: regex logstash logstash-grok

我正在尝试在logstash 1.5.0版中使用grok过滤器来解析日志文件中的几个数据字段。

我能够解析一个没有问题的简单WORD字段,但是当我尝试定义一个自定义模式并将其添加时,grok解析失败。

我尝试过使用其他地方推荐的一些grok调试器来查找问题:

http://grokconstructor.appspot.com/do/match

http://grokdebug.herokuapp.com/

两者都说我的正则表达式应该没问题,并返回我想要的字段,但是当我将它添加到我的logstash.conf时,grok无法解析日志行并简单地将原始数据传递给elasticsearch。

我的示例行如下:

APPERR [2015/06/10 11:28:56.602] C1P1405 S39 (VPTestSlave002_001)| 8000B Connect to CGDialler DB (VPTest - START)| {39/A612-89A0-A598/60B9-1917-B094/9E98F46E} Failed to get DB connection: SQLConnect failed. 08001 (17) [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.

我的logstash.conf grok配置如下所示:

    grok
    {
        patterns_dir => ["D:\rt\Logstash-1.5.0\bin\patterns"]
        match => {"message" => "%{WORD:LogLevel} \[%{KERNELTIMESTAMP:TimeStamp}\]"}
    }

我的自定义模式文件的内容是:

KERNELTIMESTAMP %{YEAR}/%{MONTHNUM}/%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?

我希望这会返回以下数据集:

{
  "LogLevel": [
    [
      "APPERR"
    ]
  ],
  "TimeStamp": [
    [
      "2015/06/10 11:28:56.602"
    ]
  ],
  "YEAR": [
    [
      "2015"
    ]
  ],
  "MONTHNUM": [
    [
      "06"
    ]
  ],
  "MONTHDAY": [
    [
      "10"
    ]
  ],
  "HOUR": [
    [
      "11",
      null
    ]
  ],
  "MINUTE": [
    [
      "28",
      null
    ]
  ],
  "SECOND": [
    [
      "56.602"
    ]
  ],
  "ISO8601_TIMEZONE": [
    [
      null
    ]
  ]
}

谁能告诉我我的问题在哪里?

0 个答案:

没有答案