#logstash-grok #elk #sssd
#logstash-grok #elk #sssd
Вопрос:
Я пытаюсь проанализировать журналы демонов SSSD, используя шаблоны grok Logstash для лучшей видимости
образцы журналов
(Mon Nov 9 12:08:56 2020) [sssd[nss]] [client_recv] (0x0200): Client disconnected!
(Mon Nov 9 12:08:56 2020) [sssd[nss]] [client_close_fn] (0x2000): Terminated client [0x55ffd29d93c0][22]
Я создал пользовательские шаблоны Grok, как указано ниже:
SSSD_TIME [ (%{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{YEAR})]
SSSD_DEMON [[a-z]*[[a-z]*]]
SSSD_FUNCTION [[a-z,_]*]
SSD_LOG_LEVEL ((dxd*))
Я получаю приведенный ниже результат, используя приведенные выше пользовательские шаблоны grok для запроса, указанного ниже
%{SSSD_TIME:time} %{SSSD_DEMON:demon} %{SSSD_FUNCTION:function} %{SSD_LOG_LEVEL:loglevel}[:]s %{GREEDYDATA:message}
Вывод:
{
"function": "[client_recv]",
"loglevel": "(0x0200)",
"time": "(Mon Nov 9 12:08:56 2020)",
"demon": "[sssd[nss]]",
"message": "Client disconnected!"
}
Мне нужно извлекать только значения в скобках, а не все содержимое
Я попытался пропустить скобки, но это работает только для первого значения
запрос ниже для пропуска первой скобки
(%{SSSD_TIME:time}) %{SSSD_DEMON:demon} %{SSSD_FUNCTION:function} %{SSD_LOG_LEVEL:loglevel}[:]s %{GREEDYDATA:message}
Мне нужно получить следующий результат
{
"function": "client_recv",
"loglevel": "0x0200",
"time": "Mon Nov 9 12:08:56 2020",
"demon": "sssd[nss]",
"message": "Client disconnected!"
}
Если кто-нибудь может мне в этом помочь, это будет здорово
Спасибо
Ответ №1:
Вот шаблон grok для желаемого результата:
((?<timestamp>%{DAY} %{MONTH} %{MONTHNUM} %{TIME} %{YEAR})) [(?<daemon>(.*))] [%{DATA:function}] (%{DATA:log_level}): %{GREEDYDATA:message}
Я использовал отладчик Grok для создания шаблона from .
Вот скриншот вывода:
Если вы хотите, вы можете удалить ненужные теги, такие как DAY
, MONTH
и т.д., Используя mutate
фильтр logstash .