Запрос регистратора через splunk на основе определенного условия значения

Мне нужно запросить регистратор через splunk для конкретного оператора, основанного на значении внутри этого оператора, которое> является некоторым значением. Может ли кто-нибудь помочь мне с вопросами ниже?

  1. Я попытался найти под индексом все случаи, когда "Пакет завершен в xx (где xx - это значение, которое должно быть> некоторым заданным значением)". Но результаты равны нулю, даже если в файле журнала есть вхождения, удовлетворяющие условию.

    index="My_App_ID"  APP-NAME makeresults | eval _raw="Batch completed in 23" | rex field=_raw "Batch completed in (?<compltd_time>.\d+)" | where compltd_time > 10
    
  2. Мне нужно написать индекс, который мог бы извлечь мне все вхождения, значение которых 100/23 равно> (какое-то значение, скажем, 10) для приведенного ниже оператора журнала

    Batch completed in 23 seconds for 100 UUIDS
    

person Hirein    schedule 09.08.2019    source источник


Ответы (1)


Позвольте мне начать с уточнения терминологии. Splunk не запрашивает регистраторы. Регистраторы отправляют данные в Splunk, где их запрашивают. Данные, отправленные в Splunk, хранятся в индексах. Поиск по индексу осуществляется с помощью «запроса» или «поиска», а не «индекса».

1) Этот вопрос представляет собой путаницу. Кроме того, модуль форматирования съел строку регулярного выражения, поэтому я должен догадываться о том, что находится в команде rex. У меня работает следующий запрос.

makeresults | eval _raw="Batch completed in 23" 
| rex "Batch completed in (?<compltd_time>\d+)" 
| where compltd_time > 10

По завершении тестирования измените запрос на index="My_App_ID" APP-NAME | rex field=_raw "Batch completed in (?<compltd_time>\d+)" | where compltd_time > 10.

2) Это похоже на первый ответ. Используйте rex, чтобы извлечь два числа из журнала, затем разделите их с помощью eval.

index="My_App_ID" APP-NAME 
| rex "Batch completed in (?<compltd_time>\d+) seconds for (?<UUIDS>\d+)" 
| eval ratio=UUIDS/compltd_time | where ratio > 10
person RichG    schedule 09.08.2019
comment
Привет @RichG. Спасибо за ответ. Я пробовал команду ниже, но все еще не нашел результатов, хотя у нас есть запись в журнале makeresults | eval _raw = Пакет завершен через 23 | rex Пакет завершен за (? ‹compltd_time›. \ d +) | где comptd_time ›10 - person Hirein; 12.08.2019
comment
Если вы измените .\d+ на \d+, запрос будет работать. - person RichG; 12.08.2019