Splunk поисковый запрос с предложением where не работает
Я использую Splunk Java SDK для поиска шаблонов с сервера Splunk. Я использую шаблон
search index=* env=* (GET OR POST OR PUT OR DELETE) | where isNum(httpStatusCode)
когда я использую этот запрос с Java SDK, Splunk не отправляет никакого события. Но когда я запрашиваю у веб-приложения Splunk, он показывает ответ. Мой журнал Splunk содержит два типа событий. один со строкой httpStatusCode, а другой с номером httpStatusCode. Ниже приведены типы событий:
Тип 1
[31/Jan/2019:10:27:49.970 +0000] 10.255.0.93 "GET URL HTTP/1.1" 200 46 10 host "34*, 10.*, 54.*"
HTTP status code =200
Тип 2
[31/Jan/2019:10:27:49.961 +0000] http-nio-8080-exec-58 INFO RequestID=36de3bde-277a-4f60-82c9-2802debe0593 RequestPath=http:* RequestMethod=GET TimeTaken=3 ms
httpStatusCode = RequestApplication=someString
Как я могу отделить события, которые имеют статус номера типа через Splunk rest API?
Заранее спасибо.
1 ответ
В этом случае в некотором сценарии httpstatuscode заполняется нулевым значением, вы можете использовать предопределенную функцию fillnull splunk, чтобы заполнить это нулевое значение любым номером по умолчанию. Вы можете использовать запрос ниже, где я заполнил нулевое значение 0, ниже запрос предоставит оба типа событий. Если вы хотите фильтровать, добавьте ГДЕ трубу в соответствии с требованием.
индекс поиска =* env=* (ПОЛУЧИТЬ ИЛИ ПОСТ ИЛИ ПОСТАВИТЬ ИЛИ УДАЛИТЬ) | fillnull httpStatusCode=0
Надеюсь, это поможет.