Logstash Grok Parse Error - fail2ban日志

问题描述 投票:1回答:2

我正在尝试使用下面的配置文件和模式解析fail2ban日志文件(通过在线教程)。

但是我得到一个grok解析错误,任何想法如何解决这个问题?

日志文件格式:

2017-02-13 18:49:52,567 fail2ban.actions    [1365]: NOTICE  [sshd] Ban 127.0.0.1

logstash配置:

input {
  file {
    type => "fail2ban"
    start_position => "beginning"
    path => [ "/var/log/fail2ban.log" ]
  }
}

filter {
  if [type] == "fail2ban" {
    grok {
      patterns_dir => "/etc/logstash/patterns"
      match => [
        "message", "%{F2B_DATE:date} %{F2B_ACTION} %{WORD:level} %{F2B_JAIL} %{WORD:action} %{IP:ip}",
        "message", "%{F2B_DATE:date} %{F2B_ACTION} %{F2B_LEVEL} %{GREEDYDATA:msg}?"
      ]
    }

    geoip {
      source => "ip"
    }
  }
}

模式配置:

F2B_DATE %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[ ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})
F2B_ACTION (\w+)\.(?:\w+)(\s+)?\:
F2B_JAIL \[(?<jail>\w+\-?\w+?)\]
F2B_LEVEL (?<level>\w+)\s+
logstash-grok grok fail2ban
2个回答
0
投票

我想你在比赛中错过了胡萝卜^符号,这意味着在日志行中说明这是从哪里开始的模式。如果你有这样的匹配怎么办:

match => [
     "message", "^%{F2B_DATE:date} %{F2B_ACTION} %{WORD:level} %{F2B_JAIL} %{WORD:action} %{IP:ip}",
     "message", "^%{F2B_DATE:date} %{F2B_ACTION} %{F2B_LEVEL} %{GREEDYDATA:msg}?"
]

0
投票

F2B_ACTION模式失败。使用您提供的示例:

2017-02-13 18:49:52,567 fail2ban.actions    [1365]: NOTICE  [sshd] Ban 127.0.0.1

并使用此Grok模式:

%{F2B_DATE:date} %{GREEDYDATA:failtoban.actions} %{F2B_LEVEL} %{F2B_JAIL} %{WORD:action} %{IP:ip}

我得到了这个结果:

{
  "date": [
    "2017-02-13 18:49:52,567"
  ],
  "failtoban": [
    "fail2ban.actions    [1365]:"
  ],
  "level": [
    "NOTICE"
  ],
  "jail": [
    "sshd"
  ],
  "action": [
    "Ban"
  ],
  "ip": [
    "127.0.0.1"
  ]
}

我使用了%{GREEDYDATA:failtoban.actions},因为我不确定哪些值可以有效,但问题就是解决了。

© www.soinside.com 2019 - 2024. All rights reserved.