NAME
Search::ESsearcher::Templates::sfail2ban - Provicdes support for fail2ban logs sucked down via beats.
VERSION
Version 0.0.2
LOGSTASH
This uses a logstash configuration like below.
input {
  beats {
    host => "10.10.10.10"
    port => 5044
    type => "beats"
  }
}
filter {
    if [fields][log] == "fail2ban" {
            grok {
                    match => {
                            "message" => "%{TIMESTAMP_ISO8601:timestamp} %{WORD:log_src}.%{WORD:src_action} *\[%{INT:fail2ban_digit}\]: %{LOGLEVEL:loglevel} *\[%{NOTSPACE:service}\] %{WORD:ban_status} %{IP:clientip}"
                    }
            }
            geoip {
                    source => "clientip"
            }
    }
}
output {
  if [type] == "beats" {
    elasticsearch {
      hosts => [ "127.0.0.1:9200" ]
    }
  }
}
For filebeats, it is assuming this sort of configuration.
- type: log
  paths:
    - /var/log/fail2ban.log
  fields:
     log: fail2ban
If you have type set different or are using a diffent field, you can change that via --field and --fieldv.
If you have fields.log set differently, you can set that via --field2 and --field2v.
Options
--host <host>
The machine beasts is running on feeding fail2ban info to logstash/ES.
--jail <jail>
The fail2ban jail name to query.
--country <country>
The 2 letter country code.
--region <state>
The state/province/etc to search for.
--postal <zipcode>
The postal code to search for.
--city <cide>
The city to search for.
--ip <ip>
The IP to search for.
--size <count>
The number of items to return.
--dgt <date>
Date greater than.
--dgte <date>
Date greater than or equal to.
--dlt <date>
Date less than.
--dlte <date>
Date less than or equal to.
--msg <message>
Messages to match.
--field <field>
The term field to use for matching them all.
--fieldv <fieldv>
The value of the term field to matching them all.
--field2 <field2>
The term field to use for what beats is setting.
--field2v <field2v>
The value to look for in the field beats is setting.
AND, OR, or NOT shortcut
, OR
+ AND
! NOT
A list seperated by any of those will be transformed
These may be used with program, facility, pid, or host.
example: --program postfix,spamd
results: postfix OR spamd
date
date
/^-/ appends "now" to it. So "-5m" becomes "now-5m".
/^u\:/ takes what is after ":" and uses Time::ParseDate to convert it to a unix time value.
Any thing not matching maching any of the above will just be passed on.