Установка нескольких пороговых значений для запроса kusto на основе журнала

Я настроил оповещение на основе журнала в Microsoft Azure. Развертывание предупреждений осуществляется с помощью шаблона ARM. Где вы можете ввести свой запрос и установить порог, как показано ниже.

 "triggerThresholdOperator": {
        "value": "GreaterThan"
      },
      "triggerThreshold": {
        "value": 0
      },
      "frequencyInMinutes": {
        "value":15
      },
      "timeWindowInMinutes": {
        "value": 15
      },
      "severityLevel": {
        "value": "0"
      },
      "appInsightsQuery": {
        "value": "exceptions\r\n| where A_ != '2000' \r\n| where A_ != '4000' \r\n| where A_ != '3000' "
      }

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

Вопросы. В моем запросе есть несколько утверждений, которые я исключаю, так как это просто шум. Но теперь я хочу установить порог от 3000 до 5, а также установить временное окно на 30 в том же запросе. это означает исключить только 3000, если это происходит 5 раз за последние 30 минут (при запуске запроса).

exceptions
| where A_ != '2000' 
| where A_ != '4000' 
| where A_ != '3000' 

Я почти уверен, что не могу установить такой порог в запросе, и единственный обходной путь - создать новое предупреждение только для значения 3000 и установить порог в шаблоне ARM. Я не нашел в Aure жестких фильтров порогов и времени. Есть ли способ установить несколько пороговых значений и временных фильтров в одном запросе? который снова проверяется разными пороговыми и временными фильтрами в шаблоне ARM.

Спасибо.


person Auto geek    schedule 31.12.2020    source источник


Ответы (2)


Я не совсем понимаю ваш вопрос.

Но для вашего вопроса временного окна вы могли бы сделать что-то вроде

exceptions
| summarize count() by A_, bin(TimeGenerated, 30m)

Таким образом, вы получите отсчет A_ в блоках по 30 минут.

Другой способ:

let Materialized = materialize(
exceptions
| summarize Count=count(A_) by bin(TimeGenerated, 30m)
); 
Materialized | where Count == 10

Но опять же, все зависит от того, чего вы хотите достичь.

person KustoKing    schedule 03.01.2021

Вы можете легко установить это в запросе и запускать на основе совокупного результата.

exceptions
| where timestamp > ago(30m)
| summarize count2000 = countif(A_ == '2000'), count3000 = countif(A_ == '3000'), count4000 = countif(A_ == '4000')
| where count2000 > 5 or count3000 > 3 or count4000 > 4

Если количество результатов больше единицы, применяется агрегатное условие.

person Yaniv Lavi    schedule 04.01.2021