Учебники

Logstash — анализ логов

Logstash получает журналы, используя входные плагины, а затем использует плагины фильтров для анализа и преобразования данных. Анализ и преобразование журналов выполняются в соответствии с системами, присутствующими в выходном месте назначения. Logstash анализирует данные регистрации и пересылает только обязательные поля. Позднее эти поля преобразуются в совместимую и понятную форму системы назначения.

Как разобрать логи?

Разбор журналов выполняется с использованием шаблонов GROK (Графическое представление знаний), и вы можете найти их в Github —

https://github.com/elastic/logstash/tree/v1.4.2/patterns .

Logstash сопоставляет данные журналов с указанным шаблоном GROK или последовательностью шаблонов для анализа журналов, таких как «% {COMBINEDAPACHELOG}», которая обычно используется для журналов apache.

Анализируемые данные более структурированы и просты для поиска и выполнения запросов. Logstash ищет указанные шаблоны GROK во входных журналах и извлекает совпадающие строки из журналов. Вы можете использовать отладчик GROK для проверки ваших паттернов GROK.

Синтаксис для шаблона GROK:% {SYNTAX: SEMANTIC}. Фильтр Logstash GROK записывается в следующем виде —

% {ОБРАЗЕЦ: Имя_поль}

Здесь, PATTERN представляет шаблон GROK, а имя поля — это имя поля, которое представляет проанализированные данные в выходных данных.

Например, с помощью онлайн-отладчика GROK https://grokdebug.herokuapp.com/

вход

Пример строки ошибки в журнале —

[Wed Dec 07 21:54:54.048805 2016] [:error] [pid 1234:tid 3456829102]
   [client 192.168.1.1:25007] JSP Notice:  Undefined index: abc in
   /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11

Последовательность паттернов GROK

Эта последовательность шаблонов GROK соответствует событию журнала, которое включает метку времени, за которой следуют Уровень журнала, Идентификатор процесса, Идентификатор транзакции и Сообщение об ошибке.

\[(%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[.*:%{LOGLEVEL:loglevel}\]
   \[pid %{NUMBER:pid}:tid %{NUMBER:tid}\] \[client %{IP:clientip}:.*\]
   %{GREEDYDATA:errormsg}

выход

Вывод в формате JSON.