Splunk Log - Сравнение дат
Я настроил журналы приложений через Splunk и хочу сделать следующее:
- Получить события, когда строка имеет сегодняшнюю дату
- Получить события, когда строка имеет завтрашнюю дату.
Я попытался написать запрос, как показано ниже для # 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|O|1013|F REGAVAIL|00958647200|8871|1|61745|01282017|0|N|N|Y|N|Y|N|N|O|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| Р
Я хочу сначала извлечь из него дату - 01262017, а затем сравнить ее с сегодняшней датой. Если совпадение найдено, это событие следует рассмотреть.
Любая помощь будет оценена!
1 ответ
Этот поиск создает две строки на основе. Событие _time и б. текущая дата с использованием 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"
Второй поиск почти такой же. Единственное, что я изменил, - это параметр, отправленный в функцию lative_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"
Теоретически вы можете изменить эту относительную функцию времени, чтобы она смотрела на 2 дня вперед, на 3 дня назад и т. Д.
Надеюсь это поможет. Кричите, если у вас есть какие-либо проблемы.