шаблон grok для анализа журналов с помощью logstash

Я пытался проанализировать образец файла журнала с помощью фильтра grok logstash, но не смог вывести поля различения. мои образцы журналов выглядят следующим образом:

INFO  [2016-05-26 11:54:57,741]  [main]: org.eclipse.jetty.util.log:?:?- Logging initialized @5776ms`enter code here`

я хочу выделить INFO, метку времени, [main] и сообщение из двух частей от ?:?. какой шаблон я пробовал в фильтре grok ->

match => {"message" => "% {WORD: severity}% {CISCOTIMESTAMP: timestamp}% {NOTSPACE}% {GREEDYDATA: logmsg}"}

но это не правильно выводит образец. Может, кто-нибудь предоставит мне правильное совпадение с шаблоном Grok !! Была бы полезна любая связанная помощь !!


person amateur17    schedule 08.06.2016    source источник


Ответы (1)


Поскольку неясно, какой именно формат вы хотите получить, я предлагаю вам следующий фильтр:

match => { "message" => "%{LOGLEVEL:severity} *\[%{TIMESTAMP_ISO8601:timestamp}\] *\[%{WORD:tread}\]\: *%{NOTSPACE:file} *%{GREEDYDATA:msg}" }

Это эффективно разделит ваш пример на:

{
  "severity": [
    [
      "INFO"
    ]
  ],
  "timestamp": [
    [
      "2016-05-26 11:54:57,741"
    ]
  ],
  "YEAR": [
    [
      "2016"
    ]
  ],
  "MONTHNUM": [
    [
      "05"
    ]
  ],
  "MONTHDAY": [
    [
      "26"
    ]
  ],
  "HOUR": [
    [
      "11",
      null
    ]
  ],
  "MINUTE": [
    [
      "54",
      null
    ]
  ],
  "SECOND": [
    [
      "57,741"
    ]
  ],
  "ISO8601_TIMEZONE": [
    [
      null
    ]
  ],
  "tread": [
    [
      "main"
    ]
  ],
  "file": [
    [
      "org.eclipse.jetty.util.log:?:?-"
    ]
  ],
  "msg": [
    [
      "Logging initialized @5776ms`enter code here`"
    ]
  ]
}

Это не изящно анализирует :?:?- часть, поэтому при необходимости отрегулируйте ее.

Взгляните на Grokdebug, который отлично подходит для тестирования фильтров на лету.

person doz10us    schedule 26.07.2016