фильтр grok и лог-кэш

#logstash #logstash-grok

Вопрос:

Существует журнал 2 типов: 1.sshd: d.kuprevich@pts/0/79512/1012 124.25 111.561 2.74.205.155.180:52472-76.121.32.65:443/0/0 1.4234 11.4315 В первом случае после sshd: пробел

Вот конфигурация из https://grokdebug.herokuapp.com/ для первого и второго случая

  1. (? <Ip, порт>% {IPORHOST}% {NOTSPACE} s % {NOTSPACE}) s % {NOTSPACE: получен_траффик} s % {NOTSPACE: передан_траффик}
  2. (? <Ip, порт>% {IPORHOST}% {NOTSPACE}% {NOTSPACE}) s % {NOTSPACE: received_traffic} s % {NOTSPACE: transmitted_traffic} Они работают каждый для своего случая, но мне нужен универсальный для обоих случаев, но я пока ничего не могу придумать. Справка.

И второй вопрос, если возможно, в конфигурации logstash у меня есть входной файл, в нем условно 5 строк, после вывода на консоль kibana я вижу все те же данные 2 раза, но с разными идентификаторами, пожалуйста, скажите мне, как избавиться от данного дублирования. Спасибо за помощь.

Ответ №1:

Помещая каждое число в отдельное поле:

 %{HOSTPORT:IP_1}-%{HOSTPORT:IP_2}/%{NUMBER:NUMBER_1}/%{NUMBER:NUMBER_2}%{SPACE}%{NUMBER:NUMBER_3}%{SPACE}%{NUMBER:NUMBER_4}
 

Для данной строки журнала вы получите:

 NUMBER_3    10.5678
NUMBER_2    0
NUMBER_1    0
NUMBER_4    1516.17
IP_2    14.212.55.167:80
IP_1    91.231.121.222:35712 
 

Чтобы помочь вам в следующий раз, когда вы попытаетесь написать шаблон:

тестер шаблонов: http://grokconstructor.appspot.com/do/match

список базовых шаблонов: https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/ecs-v1/grok-patterns