Для эластичного поиска не имеет значения, как вы анализируете сообщения, у него нет информации об этом, вам нужно только отправить документ JSON с полями, которые вы хотите сохранить и выполнить поиск в соответствии с вашим отображением индекса .
Однако то, как вы анализируете сообщение, имеет значение для Logsta sh, поскольку это напрямую повлияет на производительность.
Например, рассмотрите следующее сообщение:
2020-04-17 08:10:50,123 [26] INFO ApplicationName - LogMessage From The Application
Если вы хотите иметь возможность искать и применять фильтры к каждой части этого сообщения, вам необходимо разобрать его по полям.
timestamp: 2020-04-17 08:10:50,123
thread: 26
loglevel: INFO
application: ApplicationName
logmessage: LogMessage From The Application
Для анализа этого сообщения вы можете использовать разные фильтры, один из них - grok
, который использует регулярное выражение, но если ваше сообщение всегда имеет один и тот же формат, вы можете использовать другой фильтр, например dissect
, в этом случае оба получат одно и то же, но в то время как grok
использует регулярное выражение для соответствия полей, dissect
является только позиционным, это имеет огромное значение в использовании ЦП при большом количестве событий в секунду.
Рассмотрим теперь t Если у вас есть то же сообщение, но в формате JSON.
{ "timestamp":"2020-04-17 08:10:50,123", "thread":26, "loglevel":"INFO", "application":"ApplicationName","logmessage":"LogMessage From The Application" }
Logsta sh проще и быстрее разобрать это сообщение, вы можете сделать это в вашем input
, используя json
код c или вы можете использовать фильтр json
в своем блоке фильтров.
Если у вас есть контроль над тем, как создаются ваши сообщения журнала, выберите то, что вам не нужно использовать grok
.