Logstash grok filter从两个特定单词中提取一些消息

Logstash grok filter从两个特定单词中提取一些消息,logstash,logstash-grok,Logstash,Logstash Grok,下面是示例日志文件 2018-07-02 09:35:57 991 [INFO] from application in pool-2-thread-9 - Authenticate document processing time for transactionId : 1271400374895007_node1 documentType : Passport is 1629 msec 我编写了GrokFilter来提取一些字段,如事务、文档类型、持续时间 %{TIMESTAMP_ISO8

下面是示例日志文件

2018-07-02 09:35:57 991 [INFO] from application in pool-2-thread-9 - Authenticate document processing time for transactionId : 1271400374895007_node1 documentType : Passport is 1629 msec
我编写了GrokFilter来提取一些字段,如事务、文档类型、持续时间

%{TIMESTAMP_ISO8601:timestamp} (\[%{WORD:loglevel}\]) (?<logger>(?:[a-zA-Z0-9-]+\.)*[A-Za-z0-9$]+)\s+(-\s+)? %{GREEDYDATA} .*transactionId : %{WORD:transactionid} documentType : %{WORD:document type} is (?<duration>.*msec
%{TIMESTAMP\u ISO8601:TIMESTAMP}(\[%{WORD:loglevel}\])(?(?:[a-zA-Z0-9-]+\)*[a-zA-Z0-9$]+)\s+(\s+)%{GREEDYDATA}.*transactionId:%%{WORD:transactionId}文档类型:%%{WORD:document type}为(?.*msec)

有人能建议如何在两个特定单词“-”(消息之间)“处理时间”之间提取数据吗?

您可以创建一个自定义模式来匹配
-
处理时间之间的所有内容

(?<pool_thread>\w+[-]\d+[-]\w+[-]\d+\s*?)-(?<custom_word>.*?)(processing time)

你能澄清一下你想要提取什么吗?我不明白你需要提取什么我想要在“-”和“处理时间”之间分开的消息字段。因为这两个字段是恒定的,消息的中间部分会经常更改。因此,您需要将
-
处理时间之间的所有内容分配给新字段?在您的示例中,
身份验证文档
应分配给新字段?是的,您是正确的。它正在运行,您能建议我如何操作吗w要在msec关键字之前分开数字字段你能分开匹配吗?
%{INT}%{WORD}
是的,我已经这样做了,但我想在特定关键字“msec”关键字之前分开数字字段,即使它位于日志消息的中间,你能给出一个你想要的例子吗?我想分开单词“msec”之前的关键字始终,无论它将在日志消息中的何处
{
  "pool_thread": [
    [
      "pool-2-thread-9 "
    ]
  ],
  "custom_word": [
    [
      " Authenticate document "
    ]
  ]
}