【问题标题】:Chaining grok filter patterns for logstash为 logstash 链接 grok 过滤器模式
【发布时间】:2014-11-19 02:47:05
【问题描述】:

我正在尝试配置 logstash 来管理我的各种日志源,其中之一是 Mongrel2。 Mongrel2 使用的格式是tnetstring,其中日志消息的格式为

86:9:localhost,12:192.168.33.1,5:57089#10:1411396297#3:GET,1:/,8:HTTP/1.1,3:200#6:145978#]

我想编写自己的 grok 模式以从上述格式中提取某些字段。我收到了关于 this question 尝试提取主机的帮助。所以如果在grok-patterns 我定义了

M2HOST ^(?:[^:]*\:){2}(?<hostname>[^,]*)

然后在logstash conf中指定

filter {
  grok {
    match => [ "message", "%{M2HOST}" ]
  }
}

它按预期工作。我现在遇到的问题是我想指定多个模式,例如M2HOST、M2ADDR 等。我尝试在同一个 grok-patterns 文件中定义其他的

M2HOST ^(?:[^:]*\:){2}(?<hostname>[^,]*)
M2ADDR ^(?:[^:]*\:){3}(?<address>[^,]*)

并更改logstash conf

filter {
  grok {
    match => [ "message", "%{M2HOST} %{M2ADDR}" ]
  }
}

但现在我得到了错误_grokparsefailure

【问题讨论】:

  • 你的问题是连接,考虑用它们的正则表达式替换 M2HOST 和 M2ADDR,你会得到^(?:[^:]*\:){2}(?&lt;hostname&gt;[^,]*) ^(?:[^:]*\:){3}(?&lt;address&gt;[^,]*) 你在比赛中间有一个开始,这显然是行不通的. pultiples ALIASES 的主要思想是拆分正则表达式部分以重用它们,而不是神奇地合并它们。
  • 啊好的。我想要的是将 M2HOST 正则表达式应用于消息,然后将 M2ADDR 应用于消息。你知道正确的语法是什么吗?
  • 好吧,我会使用您已经知道的 grok 测试器,尝试匹配每个字段,一旦完成,您可能会拆分有趣的部分。例如,我会说(经过测试)(?:[^:]*:){2}(?&lt;hostname&gt;[^,]*)[^:]*:(?&lt;address&gt;[^,]*) 会做
  • 太好了,谢谢。这有效(缺少右括号)
  • 实际上之前有一个无关的 (?

标签: regex logstash logstash-grok


【解决方案1】:

根据您从其他问题中输入的样本以及对值名称的一些猜测,完整匹配将是:

(?:[^:]*:){2}(?&lt;hostname&gt;[^,]*)[^:]*:(?&lt;address&gt;[^,]*)[^:]*:(?&lt;pid&gt;[^#]*)[^:]*:(?&lt;time&gt;[^#]*)[^:]*:(?&lt;method&gt;[^,]*)[^:]*:(?&lt;query&gt;[^,]*)[^:]*:(?&lt;protocol&gt;[^,]*)[^:]*:(?&lt;code&gt;[^#]*)[^:]*:(?&lt;bytes&gt;[^#]*).*

制作:

{
  "hostname": [
    [
      "localhost"
    ]
  ],
  "address": [
    [
      "192.168.33.1"
    ]
  ],
  "pid": [
    [
      "57089"
    ]
  ],
  "time": [
    [
      "1411396297"
    ]
  ],
  "method": [
    [
      "GET"
    ]
  ],
  "query": [
    [
      "/"
    ]
  ],
  "protocol": [
    [
      "HTTP/1.1"
    ]
  ],
  "code": [
    [
      "200"
    ]
  ],
  "bytes": [
    [
      "145978"
    ]
  ]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多