Как избежать набора строк или символов в GROK

Я новичок в Grok в logstash, и мне нужно проанализировать следующий шаблон журнала.

Jul 26 09:46:37 abc-lb1 2016-07-26 09:46:37.245 +0200  abc-lb1 WF WARN UNRECOGNIZED_COOKIE 188.200.126.234 50011 10.50.51.25 443 global GLOBAL LOG NONE [Cookie\="_ga" Service-created\="769 days back" Reason\="No valid encrypted pair"] GET example.com/search.action?searchText\=EH-5H&token\=--0----EH-5H-- TLSv1.2 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 188.200.126.234 50011 "-" https://example.com/my-account/login 

Мне нужно знать, как избежать набора строк в GROK

В приведенных выше журналах можно увидеть повторяющиеся отметки времени, мне нужно знать, как избежать таких строк, как:

26 июля 09:46:37 abc-lb1


person Jerald Sabu M    schedule 26.07.2016    source источник
comment
1) Без названия 2) Пользовательские шаблоны 3) несколько возможных совпадений || Каждый из них следует задавать как отдельный вопрос, если они остались у вас после прочтения elastic.co/guide/en/logstash/current/plugins-filters-grok.html.   -  person Will Barnwell    schedule 26.07.2016
comment
Grok использует атрибут named capature only, по умолчанию установленный в значение true. Это означает, что в вашем шаблоне grok, если вы не укажете ненужные поля, они не будут добавлены в вывод.   -  person Mrunal Pagnis    schedule 27.07.2016


Ответы (1)


Предположим, вам нужны только два поля: 2016-07-26 09:46:37.245 и https://example.com/my-account/login, тогда ваш фильтр grok должен быть следующим:

grok{ match => {"message" => "%{TIMESTAMP_ISO8601:time} %{GREEDYDATA} %{URI:url}"} }

Вы получите следующий результат:

{
  "time": [
    [
      "2016-07-26 09:46:37.245"
    ]
  ],
  "url": [
    [
      "https://example.com/my-account/login"
    ]
  ]
}

Здесь вы избегаете первых нескольких полей в строке журнала, начиная с 2016-07-26 09:46:37.245, и избегаете всего, что находится между ними, не называя %{GREEDYDATA}. Если вы назовете %{GREEDYDATA} как %{GREEDYDATA:data}, вы получите следующий результат:

{
  "time": [
    [
      "2016-07-26 09:46:37.245"
    ]
  ],
  "data": [
    [
      "+0200  abc-lb1 WF WARN UNRECOGNIZED_COOKIE 188.200.126.234 50011 10.50.51.25 443 global GLOBAL LOG NONE [Cookie\\="_ga" Service-created\\="769 days back" Reason\\="No valid encrypted pair"] GET example.com/search.action?searchText\\=EH-5H&token\\=--0----EH-5H-- TLSv1.2 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 188.200.126.234 50011 "-""
    ]
  ],
  "url": [
    [
      "https://example.com/my-account/login"
    ]
  ]
}

Теперь вы можете применить те же шаги к любым полям, которых хотите избежать.

вы можете отладить результаты здесь

person Mrunal Pagnis    schedule 27.07.2016
comment
Спасибо за объяснение с примерами, это поможет новичкам. - person Jerald Sabu M; 27.07.2016