Запрос Splunk подсчета статистики

Интересно, может ли кто-нибудь мне помочь.

Я сделал следующий пост о запросе Splunk, который пытаюсь написать:

https://answers.splunk.com/answers/724223/in-a-table-powered-by-a-stats-count-search-can-you.html

Мне очень помогли, но, несмотря на то, что я работал над этим в течение нескольких дней, теперь сосредоточившись на использовании операторов eval if, у меня все еще есть та же проблема с столбцами «Успешно» и «Неудачно», показывающими пустые результаты. Итак, я подумал, что я закрою сеть немного шире и спросите, может ли кто-нибудь взглянуть на это и дать какие-то рекомендации о том, как я могу решить эту проблему.

Большое спасибо и добрые пожелания

Крис


person IRHM    schedule 20.02.2019    source источник


Ответы (2)


Я попытался изучить ваш вариант использования с журналом splunkd-access и придумал простой SPL, чтобы помочь вам. В этом запросе я фактически объединяю результаты двух поисков, которые объединяют требуемые результаты (не беспокоясь о производительности поиска).

Попробуйте. Если у вас есть доступ к _internal index, он будет работать как есть. Вы должны иметь возможность легко изменить это в соответствии с вашими событиями (например, заменить user на ClientID).

index=_internal source="/opt/splunk/var/log/splunk/splunkd_access.log" 
| stats count as All sum(eval(if(status <= 303,1,0))) as Successful sum(eval(if(status > 303,1,0))) as Unsuccessful by user 
| join user type=left 
    [ search index=_internal source="/opt/splunk/var/log/splunk/splunkd_access.log" 
    | chart count BY user status ]

Я обновил ваш поиск по ответам сообщества splunk (должно выглядеть так):

w2_wmf(RequestCompleted)`request.detail.Context="*test" 
| dedup eventId 
| rename request.ClientID as ClientID detail.statusCode AS statusCode 
| stats count as All sum(eval(if(statusCode <= 303,1,0))) as Successful sum(eval(if(statusCode > 303,1,0))) as Unsuccessful by ClientID 
| join ClientID type=left 
    [ search w2_wmf(RequestCompleted)`request.detail.Context="*test" 
    | dedup eventId 
    | rename request.ClientID as ClientID detail.statusCode AS statusCode 
    | chart count BY ClientID statusCode ]
person Anant Naugai    schedule 26.02.2019
comment
Привет, @Anant Naugai, спасибо, что вернулись ко мне. Единственное, что у меня есть сомнения по поводу этого, - это объединение, потому что я читал, что они довольно неэффективны и имеют отсечку 50 000 записей, и я знаю, что мои выдержки будут иметь больше, чем это, если я не неправильно понял? Большое спасибо и добрые пожелания - person IRHM; 27.02.2019

Я ответил в Splunk

https://answers.splunk.com/answers/724223/in-a-table-powered-by-a-stats-count-search-can-you.html?childToView=729492#answer-729492

но с использованием фиктивной кодировки это выглядит как

w2_wmf(RequestCompleted)`request.detail.Context="*test"
  | dedup eventId
  | rename request.ClientId as ClientID, detail.statusCode as Status
  | eval X_{Status}=1
  | stats count as Total sum(X_*) as X_* by ClientID
  | rename X_* as *

Вы получите ClientID, количество, а затем столбец для каждого найденного кода состояния с суммой каждого кода в этом столбце.

Насколько я понимаю, вы не можете заставить это работать, этот запрос должен показать фиктивную кодировку в действии.

`index=_internal sourcetype=*access
 | eval X_{status}=1
 | stats count as Total sum(X_*) as X_* by source, user
 | rename X_* as *`

Это даст что-то вроде

введите здесь описание изображения

person adb    schedule 27.02.2019
comment
Привет @adb. Спасибо, что вернулись ко мне с этим. Итак, я попробовал код, как вы предложили, но, к сожалению, он не работает так, как мне хотелось бы, чтобы результат был. Коды состояния не отображаются ни в одном столбце, и при использовании второго решения, которое вы любезно предоставили в Splunk, отвечает, что столбцы «Успешно» и «Неудачно» остаются пустыми. Большое спасибо и добрые пожелания - person IRHM; 27.02.2019
comment
Привет @IHRM, это не имеет смысла. Причина, по которой у вас не будет столбцов, а также пропущены успешные и неудачные, если у вас нет правильного rename detail.statusCode as Status, тогда нет поля «Статус» для последующих команд. Можете ли вы сделать простой stats count by Status, так как это проверит, работает ли переименование, иначе оно не даст результатов. - person adb; 28.02.2019
comment
Привет @adb. Я просто использовал запрос, который вы разместили здесь, и ответы Splunk. Большое спасибо. - person IRHM; 28.02.2019
comment
Что делать, если вы выполните w2_wmf (RequestCompleted) request.detail.Context="*test" | dedup eventId | rename request.ClientId as ClientID, detail.statusCode as Status | stats count as Total by Status and w2_wmf(RequestCompleted)request.detail.Context = * test | dedup eventId | переименуйте request.ClientId в ClientID, detail.statusCode в Status | статистика считается как Итого по detail.statusCode - person adb; 28.02.2019
comment
Если у вас есть доступ к индексу журналов внутреннего доступа, вы можете увидеть принцип в действии, используя следующий запрос index=_internal sourcetype=*access | eval X_{status}=1 | stats count as Total sum(X_*) as X_* by source, user | rename X_* as * - person adb; 28.02.2019
comment
Привет @Adb. К сожалению, у меня нет доступа к журналам. Когда я попробовал ваш запрос, я получил следующую ошибку: Ошибка в команде 'stats': аргумент 'detail.apiContext = * vat' недействителен. Большое спасибо и добрые пожелания - person IRHM; 01.03.2019