Azure Application Insights Процентное оповещение - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь создать оповещения о возможностях приложения, которые будут предупреждать меня, если более 5% моих запросов превышают определенный порог. Я написал запрос в разделе предупреждений Application Insights и назначил его метрическим измерением для предупреждения о превышении желаемого порога

requests 
| where timestamp >= ago(15m) 
| where (tostring(customDimensions['ProviderName']) == 'ProviderX') 
| where (tostring(customDimensions['operationMethod']) == 'operationX') 
| extend responseTime = tolong(customDimensions['totalMilliseconds']) 
| summarize AggregatedValue = (percentile(responseTime, 95)) by bin(timestamp, 15m)

Хотя это оповещение работает и правильно уведомляет меня, есть одна проблема в том, что существует большое количество ложных срабатываний из-за того, что в определенных 15-минутных окнах очень мало запросов (меньше 3). Таким образом, я только хочу предупредить, когда значение порога превышено И число соответствующих запросов за период превышает определенный порог, скажем, 10.

Я попытался сделать это с помощью «Оповещения о количестве результатов» в разделе предупреждений в обзорах приложений.

requests
| where timestamp  >= ago(15m)
| where (tostring(customDimensions['ProviderName']) == 'ProviderX')
| where (tostring(customDimensions['operationMethod']) == 'OpeartionX')
| extend responseTime = tolong(customDimensions['totalMilliseconds'])
| summarize hasFailed = ((percentile(responseTime, 95) > 1000) and count() > 135)
| project iff(hasFailed, 1, 0)

То, чего я пытался добиться, это вернуть предупреждение 1, если тест не пройден, а затем предупредить об этом значении. Однако «Количество результатов», кажется, только предупреждает о количестве возвращаемых результатов, поэтому этот подход также не работает.

Если бы кто-то мог пролить свет на соответствующий запрос или альтернативную стратегию его реализации в Azure, я был бы очень признателен.

Спасибо.

1 Ответ

0 голосов
/ 23 августа 2018

Если вы хотите использовать оповещение о пороговом значении, я могу заменить ваш первый запрос следующим:

requests 
| where timestamp >= ago(15m) 
| where (tostring(customDimensions['ProviderName']) == 'ProviderX') 
| where (tostring(customDimensions['operationMethod']) == 'operationX') 
| extend responseTime = tolong(customDimensions['totalMilliseconds']) 
| summarize AggregatedValue = iff(count() > 135, percentile(responseTime, 95), 0) by bin(timestamp, 15m)

Если вы предпочитаете подход «Оповещение о количестве результатов», я думаю, что вы могли бы заменить последнюю строку вашего второго запроса на | where hasFailed == true, чтобы в итоге получилась одна строка при выполнении условия и ноль строк при это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...