Запрос Splunk, чтобы найти больше, чем
У меня есть журнал регистрации спленка: "TOTAL NUMBER OF RECORDS IS:0"
Мне нужно запросить его таким образом, чтобы он нашел сообщение журнала, если число записей оказывается больше 0
Я пробовал следующее
sourcetype=mylogs | rex "\d+:\d+:\d+\s(?<TOTAL NUMBER OF RECORDS IS:>\d+)$" | where TOTAL NUMBER OF RECORDS IS:>=25
Выдает ошибку терминатора
3 ответа
Решение
Есть несколько вещей не так с этим запросом.
- Регулярное выражение ищет 3 набора цифр, разделенных двоеточиями. Это не соответствует вашему примеру. Пытаться
TOTAL NUMBER OF RECORDS IS:(?<field>\d+)
, Вы можете даже обойтись с:(?<field>\d+)
, - Имя поля в вашем запросе не должно содержать пробелов. Попробуйте что-то вроде
TotalNumberOfRecords
, - Имена полей не могут содержать двоеточия. Это, вероятно, источник сообщения об ошибке.
Попробуйте этот запрос:sourcetype=mylogs | rex ":\d+(?<TotalNumberOfRecords>\d+)" | where TotalNumberOfRecords>=25
У меня это не сработало, могут быть разные версии splunk. Я хотел получить журнал «Событие с задержкой 102» для значений больше 100.
Ниже запрос работал.
index="***" sourcetype="***" "An event" | rex "An event at a delay of (?<delay>[0-9]+)" | where delay > 100
Вот пример SPL для удовлетворения ваших требований:
| makeresults
| eval _raw="TOTAL NUMBER OF RECORDS IS:10"
| rex field=_raw "TOTAL NUMBER OF RECORDS IS:(?<record_num>.\d+)"
| where record_num > 0
Построчно Объяснение:
- Строка 1-2: Создание фиктивного события для этого теста.
- Строка 3: извлечь значение числа записей из
_raw
и хранить его вrecord_num
поле. - Строка 4:
where
предложение для фильтрации результатов.