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.