Splunk Log - сравнение дат

Я настроил журналы приложений через splunk и хочу сделать следующее:

  1. Получить события, когда в строке есть сегодняшняя дата
  2. Получить события, когда в строке есть завтрашняя дата.

Я попытался написать запрос для №1, как показано ниже, но он, похоже, ничего не возвращает

REGAVAIL | eval Date=strftime(strptime(Date, "%m%d%Y"), "%m%d%Y") | where Date>= strftime(now(), "%m%d%Y")

Моя строка поиска - REGAVAIL, и все события находятся в следующем формате -

REGAVAIL | 00958645030 | 8871 | 1 | 61745 | 01262017 | 0 | N | N | Y | N | Y | N | N | O | O | O | O | O | O | O | 1013 | F REGAVAIL | 00958647200 | 8871 | 1 | 61745 | 01282017 | 0 | N | N | Y | N | Y | N | N | O | O | O | O | O | O | O | 1013 | F REGAVAIL | 00958649200 | 8871 | 1 | 61745 | 01292017 | 0 | N | N | Y | N | Y | N | N | O | O | O | O | O | O | O | 1013 | F

Я хочу сначала извлечь из него дату - 01262017, а затем сравнить ее с сегодняшней датой. Если совпадение найдено, это событие следует учитывать.

введите здесь описание изображения

Любая помощь будет оценена по достоинству!


person Bhaskar    schedule 23.01.2017    source источник
comment
Ваши события просто получают метку времени _indextime? т.е. как только они попадают в журнал вашего приложения, они отправляются в Splunk с помощью UF / HF?   -  person Urbley    schedule 23.01.2017
comment
А, ладно, только что заметил дату в 6-м поле, я думаю.   -  person Urbley    schedule 23.01.2017
comment
да, это шестое поле.   -  person Bhaskar    schedule 23.01.2017


Ответы (1)


  1. Этот поиск создает две строки на основе файла. событие _time и b. текущая дата с помощью now (). Затем мы создадим новое поле с именем match, в котором будет указано «Да» или «Нет», чтобы определить, совпадает ли событие _time с рассчитанным нами относительным временем.

    index=yourindex "REGAVAIL" | eval eventTime = strftime(_time, "%Y-%m-%d") | eval timeNow = strftime(relative_time(now(),"@d"), "%Y-%m-%d") | eval match=if(eventTime=timeNow, "Yes", "No") | search match="Yes"

  2. Второй поиск почти такой же. Единственное, что я изменил, - это параметр, отправленный в функцию relative_time. Теперь он установлен на -1d @ d, что возвращает вчерашнюю дату.

    index=yourindex "REGAVAIL" | eval eventTime = strftime(_time, "%Y-%m-%d") | eval timeNow = strftime(relative_time(now(),"-1d@d"), "%Y-%m-%d") | eval match=if(eventTime=timeNow, "Yes", "No") | search match="Yes"

Теоретически вы можете изменить эту функцию relative_time, чтобы смотреть на 2 дня вперед, на 3 дня позже и т. Д.

Надеюсь это поможет. Кричите, если у вас возникнут проблемы.

person Urbley    schedule 23.01.2017
comment
Спасибо. Как мне заменить EventDate? У меня нет такой настройки на основе столбцов. Событие выглядит точно так же, как на картинке выше. Я использую _time, чтобы выбрать дату события. Мне просто нужен механизм, чтобы выбрать дату по событию - 01262017. - person Bhaskar; 24.01.2017
comment
EventDate выводится из события _raw с помощью регулярного выражения. Вам не нужно его заменять. Если вы выполните указанное выше (очевидно, сначала указав свое имя индекса), не вернут ли сегодняшние события? - person Urbley; 24.01.2017
comment
Большое спасибо. Наконец, я понял, что для меня подойдут следующие запросы, но я получил от вас все полезные советы. Спасибо еще раз!! index = * REGAVAIL | rex field = _raw ^ (?: [^ \\ | \\ n] * \\ |) {5} (? P ‹DateField› \\ d +) | eval eventTime = strftime (strptime (DateField,% m% d% Y),% Y-% m-% d) | eval timeNow = strftime (_time,% Y-% m-% d) | eval match = if (eventTime = timeNow, Да, Нет) | совпадение поиска = Да - person Bhaskar; 24.01.2017
comment
index = * REGAVAIL | rex field = _raw ^ (?: [^ \\ | \\ n] * \\ |) {5} (? P ‹DateField› \\ d +) | eval eventTime = strftime (strptime (DateField,% m% d% Y),% Y-% m-% d) | eval timeNow = strftime (_time,% Y-% m-% d) | eval match = if (eventTime = timeNow, Да, Нет) | поиск совпадения = Нет | eval diff = toNumber (strptime (eventTime,% Y-% m-% d) - (strptime (timeNow,% Y-% m-% d))) / 3600 | где diff ›= 24 и diff‹ 48 | sort _time asc - person Bhaskar; 24.01.2017