Пользовательское условие для правила монитора Azure не отображает ожидаемые данные

Я пытаюсь настроить новое настраиваемое условие для правила предупреждений монитора Azure , но когда я ввожу свой запрос kql, он не отображает ожидаемые данные. Когда я запускаю тот же запрос в журналах, он выводит 9 строк, которые удовлетворяют моему условию, но по какой-то причине данные не отображаются в предупреждениях монитора.

Я вижу, что проблема в последнем состоянии поскольку я получаю данные, когда удаляю это условие, но мне нужно, чтобы оно было включено в запрос (или, по крайней мере, аналогичную его версию). Какие-либо предложения? (Я пробовал также содержит и ==, но это дает ту же проблему)

      ADFPipelineRun 
| where TimeGenerated >= ago(30d)
| where PipelineName startswith "Dataflow"
| extend customerName = extractjson("$.customerName", Parameters, typeof(string))
| extend customerBranchName = extractjson("$.customerBranchName", Parameters, typeof(string))
| extend databaseName = extractjson("$.databaseName", Parameters, typeof(string))
| join (ADFActivityRun
        | where ActivityType == "Copy" and Status == "Succeeded"
        | extend RowsCopied = extractjson("$.rowsCopied", Output, typeof(int)))
    on CorrelationId
| summarize AggregatedValue=any(RowsCopied) by customerName, customerBranchName, databaseName, PipelineName, bin(TimeGenerated,1d)
| order by TimeGenerated
| summarize EventCount=make_list(AggregatedValue),TimeGenerated=make_list(TimeGenerated) by customerName, customerBranchName, databaseName, PipelineName
| extend (anomalies, score, baseline)=series_decompose_anomalies(EventCount, 5, 0, "avg")
| extend Anomaly = array_slice(anomalies,0,0)
| where Anomaly has "1"

Спасибо за хорошие идеи и помощь :)

2 ответа

Решение

Проблема, в конце концов, заключалась в функции предупреждений Azure Monitor. У настраиваемого оповещения есть предопределенный диапазон времени, в течение которого он оценивает запрос, и его нельзя продлить вручную.

За предопределенный период, указанный Azure, записей не было найдено (он был слишком коротким, чтобы оценить, возникают ли аномалии ..)

Я решил это, создав отчет power bi, который использует M-запрос выше, и я использовал функцию предупреждения, предлагаемую сервисом power bi.

Самый общий ответ: начните с обратного и подтвердите свои предположения.

удалить последний | where...строку и посмотрите, что вернет запрос. у него есть единицы?

has а также has_any а также contains все они имеют слегка различающуюся семантику, поэтому вам может потребоваться использовать то или иное, или что-то еще.

если в вашем результате нет единиц, вернитесь еще на одну строчку, это ваш array_slice позвонить вернуть предметы, которые вы думаете, что это делает?

если вам нужен только 0-й элемент, зачем вообще использовать срез? почему бы просто не использовать Anomaly=anomalies[0] ?

без вашего точного набора данных у нас нет возможности точно воспроизвести запрос / результаты.

Другие вопросы по тегам