У меня есть таблица, в которой показаны данные о задержке, теперь я хочу написать запрос для предупреждения, которое будет предупреждать, когда запросы (метод + 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
Однако он просто показывает те же результаты, что и первый запрос.
| table
"Медиана" и "запрос" - вам не нужно делать все эти дополнительныеstats
шаги :) - person warren   schedule 12.05.2020