Запрос 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. Строка 1-2: Создание фиктивного события для этого теста.
  2. Строка 3: извлечь значение числа записей из _raw и хранить его в record_num поле.
  3. Строка 4: where предложение для фильтрации результатов.
Другие вопросы по тегам