Как я могу исключить синтаксический анализ событий с помощью фильтра kv, который не соответствует шаблону - PullRequest
0 голосов
/ 23 апреля 2019

Я анализирую логи многих демонов решения UTM.Конфигурация Grok и kv выглядит следующим образом:

 grok {
      match => [ "message", "%{SYSLOGPROG} %{NOTSPACE:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" ]
    }
    kv {
      id => "syslogkv"
      source => "syslog_message"
      trim_key => " "
      trim_value => " "
      value_split => "="
      field_split => " "
    }

Обычно события выглядят как

    <30>2019:04:23-20:13:38 hostname ulogd[5354]: id="2001" severity="info" sys="SecureNet" sub="packetfilter" name="Packet dropped" action="drop" fwrule="60002" initf="eth3.5" outitf="eth5" srcmac="c8:9c:1d:af:68:7f" dstmac="00:1a:8c:f0:f5:23" srcip="x.x.x.x" dstip="y.y.y.y" proto="17" length="56" tos="0x00" prec="0x00" ttl="63" srcport="5892" dstport="53" 

и анализируются без проблем

Но когда некоторые демоны генерируют события, похожие на (WAFв примере)

<139>2019:04:23-16:21:38 hostname httpd[1475]: [security2:error] [pid 1475:tid 3743300464] [client x.x.x.x] ModSecurity: Warning. Pattern match "([\\\\~\\\\!\\\\@\\\\#\\\\$\\\\%\\\\^\\\\&\\\\*\\\\(\\\\)\\\\-\\\\+\\\\=\\\\{\\\\}\\\\[\\\\]\\\\|\\\\:\\\\;\\"\\\\'\\\\\\xc2\\xb4\\\\\\xe2\\x80\\x99\\\\\\xe2\\x80\\x98\\\\`\\\\<\\\\>].*?){8,}"

мой вывод прерывается, и logstash прекращает обработку любых журналов.Как я могу исключить события синтаксического анализа kv с помощью регулярных выражений или любого шаблона?Простыми словами - не используйте kv, если первые слова в syslog_message начинаются с "[" или любого другого регулярного выражения.

1 Ответ

0 голосов
/ 23 апреля 2019

Заверните ваш kv фильтр в условное поле:

if [syslog_message] !~ /^\[/ {
    kv { }
}
...