我正在尝试用logstash(版本1.4.2)和grok解析我的应用程序日志,但由于某种原因我不明白,grok无法解析一些应该与指定过滤器匹配的行 . 我搜索了谷歌和Stackoverflow,但其他人的大多数问题似乎与多行日志消息有关(对我来说不是这种情况),我找不到任何解决我问题的方法 .

我的过滤器看起来像这样:

filter {
  grok {
    match => { "message" => "%{SYSLOGBASE} -(?<script>\w*)-: Adding item with ID %{WORD:item_id} to database."}
    add_tag => ["insert_item"]
  }
}

这是正确解析的行的消息字段:

May 11 16:47:55 myhost rqworker: -script-: Adding item with ID 982663745238221172_227691295 to database.

这是一行不是的消息字段:

May 11 16:47:55 myhost rqworker: -script-: Adding item with ID 982663772746479443_1639853260 to database.

这些消息之间唯一不同的是项目的ID,并且Grok Debugger正确地解析它们 .

我检查了logstash日志文件,但没有看到任何相关的错误消息 .

我刚开始使用logstash并且不知道这里发生了什么;任何帮助将非常感激!