Как Splunk искать типы транзакций со средней задержкой более 3 секунд

У меня есть таблица, в которой показаны данные о задержке, теперь я хочу написать запрос для предупреждения, которое будет предупреждать, когда запросы (метод + uri) имеют более высокое медианное значение, чем 3000 мс (3 с)

Запрос, который я использую для этой таблицы задержки:

index=ms-app  environment=prod AND "*"
| eval uri=replace(mvindex(split('request.uri', "?"), 0), "\/\d+[-+\w]+", "/:n"), methodOverride='request.headers.X-HTTP-Method-Override'
| eval methodOverrideStr = if(isnull(methodOverride) OR methodOverride=="null", "", "(" + methodOverride + ")")
| eval request = 'request.method' + methodOverrideStr + " " + uri + " " + 'response.httpStatusCode'
| stats
min(stats.overallResponseTimeInMilliSeconds) as "Min",
avg(stats.overallResponseTimeInMilliSeconds) as avg_latency,
max(stats.overallResponseTimeInMilliSeconds) as "Max",
median(stats.overallResponseTimeInMilliSeconds) as "Median",
perc95(stats.overallResponseTimeInMilliSeconds) as "95th %",
count(request) as "# req total", count(eval('stats.overallResponseTimeInMilliSeconds' > 3000)) as "#>3s",
count(eval('stats.overallResponseTimeInMilliSeconds' > 5000)) as "#>5s",
count(eval('stats.overallResponseTimeInMilliSeconds' > 10000)) as "#>10s" by request
| eval "Avg" = round(avg_latency, 0)
| table request, "Median"

Это создает таблицу, отображающую средние задержки на основе метода + uri. Например:

  • POST / первая конечная точка 1000
  • GET / вторая конечная точка 2000
  • УДАЛЕНИЕ / третья конечная точка 1500
  • POST / четвертая конечная точка 4000
  • GET / пятая конечная точка 4500

Теперь я пытаюсь создать запрос, который будет отображать только метод + uris с высокой средней задержкой выше 3 с, чтобы я мог создать предупреждение, чтобы предупредить splunk, какие конечные точки имеют высокую задержку. Это то, что я пробовал:

index=ms-app  environment=prod AND "*"
| eval uri=replace(mvindex(split('request.uri', "?"), 0), "\/\d+[-+\w]+", "/:n"), methodOverride='request.headers.X-HTTP-Method-Override'
| eval methodOverrideStr = if(isnull(methodOverride) OR methodOverride=="null", "", "(" + methodOverride + ")")
| eval request = 'request.method' + methodOverrideStr + " " + uri + " " + 'response.httpStatusCode'
| stats
median(stats.overallResponseTimeInMilliSeconds) as "Median"
| table request, "Median" > 3000

Что должно отображать это:

  • POST / четвертая конечная точка 4000
  • GET / пятая конечная точка 4500

Однако он просто показывает те же результаты, что и первый запрос.


person monkey123    schedule 11.05.2020    source источник
comment
Если вы собираетесь использовать только | table "Медиана" и "запрос" - вам не нужно делать все эти дополнительные stats шаги :)   -  person warren    schedule 12.05.2020
comment
да, они были для более раннего запроса, забыл удалить их, спасибо :)   -  person monkey123    schedule 12.05.2020


Ответы (1)


Используйте команду where для фильтрации событий на основе значений полей.

... | where Median > 3000
| table request, Median
person RichG    schedule 11.05.2020