代码之家  ›  专栏  ›  技术社区  ›  Ashok Reddy

grok过滤器从两个特定单词中提取一些消息

  •  1
  • Ashok Reddy  · 技术社区  · 6 年前

    下面是示例日志文件

    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
    

    我编写了grok过滤器来提取一些字段,如事务、文档类型、持续时间

    %{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
    

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sufiyan Ghori    6 年前

    您可以创建一个自定义模式来匹配 - processing time ,

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

    这将输出,

    {
      "pool_thread": [
        [
          "pool-2-thread-9 "
        ]
      ],
      "custom_word": [
        [
          " Authenticate document "
        ]
      ]
    }