Предупреждение измерения метрик в Azure Log Analytics - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть запрос журнала, например,

example_cl
| top 1 by TimeGenerated desc
| project in_use, unused, total = (in_use + unused)

, который дает мне простой вывод;

in_use  unused  total
  75     45      120

Я хочу установить метрическое оповещение для этого запроса таким образом, чтобы при in_useпреодолеть 90% от общего числа, оно отправит оповещение по электронной почте

При попытке сделать оповещение Я всегда получаю следующую ошибку

Search Query should contain 'AggregatedValue' and 'bin(TimeGenerated, [roundTo])' for Metric alert type

Нужна помощь в определении правильного запроса для этого конкретного метрического оповещения.

Ответы [ 2 ]

0 голосов
/ 26 июля 2019

Чтобы добавить к чему @ KrishnaG-MSFT, если вы не хотите использовать среднее в качестве агрегированного значения, вы можете использовать агрегатные функции, такие как count (), которые будут просто обрабатывать отдельные результаты как уникальные значения и отображать результаты.

example_cl
| top 1 by TimeGenerated desc
| project in_use, unused, total = (in_use + unused)
| summarize AggregatedValue= count() by xxxxxxx, bin(TimeGenerated, 30s)

Еще несколько примеров того, как я переписал

Log Alert

Event
| where EventID == 1235
| project Computer,  TimeGenerated,  AlertType_s = "Test Connectrix",  Severity = 4,  
SeverityName_s = "Information",  AffectedCI_s = Computer ,  AlertTitle_s = 
strcat(Computer, ":Test Connectrix"  ) ,  AlertDetails_s = RenderedDescription

Re написано выше Log Alert с измерением метрики

Обратите внимание, что агрегация выполненана количество возвращенных строк.

Event
| where EventID == 1235
| project Computer,  TimeGenerated,  AlertType_s = "Test Connectrix",  Severity = 4,  
SeverityName_s = "Information",  AffectedCI_s = Computer ,  AlertTitle_s = 
strcat(Computer, ":Test Connectrix"  ) ,  AlertDetails_s = RenderedDescription
| summarize AggregatedValue = count()  by bin(TimeGenerated, 30m) , Computer 

Еще один пример таблицы параметров измерения метрических показателей (CPU)

let _maxValue = 80; 
let _timeWindow = 4h; 
let _AvgCpu = Perf 
| where TimeGenerated >= ago(_timeWindow) 
| where CounterName == "% Processor Time" and InstanceName =~ "_Total"  
| summarize mtgPerf=max(TimeGenerated), CounterValue=round(avg(CounterValue)), 
SampleCount= count(CounterValue) by Computer, InstanceName, CounterName, ObjectName; 
_AvgCpu 
| where CounterValue > _maxValue 
| project      Computer     , ObjectName     , CounterName     , InstanceName     , 
TimeGenerated=mtgPerf     , CounterValue     , AlertType_s = "Sustained High CPU 
Utilization"     , Severity = 4     , SeverityName_s = "WARNING"     , AffectedCI_s = 
strcat(Computer, "/CPUPercent/", InstanceName)     , AlertTitle_s = strcat(Computer, 
": Sustained High CPU Utilization")     , AlertDetails_s = strcat("Computer: ", 
Computer, "Average CPU Utilization: ", CounterValue, "%Sample Period: Last ", 
_timeWindow, "Sample Count: ", SampleCount, "Alert Threshold: > ", _maxValue, "%")
| summarize AggregatedValue = count() by bin(TimeGenerated, 30m), Computer , 
ObjectName , CounterName , InstanceName, CounterValue, AlertType_s, Severity, 
SeverityName_s, AffectedCI_s , AlertTitle_s, AlertDetails_s

Надеюсь, это поможет.

0 голосов
/ 06 февраля 2019

Обычно вы получаете такую ​​ошибку, связанную с AggregatedValue, когда выбираете логику оповещения «на основе» в качестве параметра «Измерение метрики».

Для всех правил оповещения измерения метрики см. Это -> https://docs.microsoft.com/en-us/azure/azure-monitor/platform/alerts-unified-log#metric-measurement-alert-rules Ссылка на документацию Microsoft.

Вам необходимо обновить запрос, как показано ниже.Обратите внимание, что xxxxxxx в приведенном ниже примере запроса является записью поля группы.Чтобы понять, что вам, возможно, придется использовать в этой области, обратитесь по указанной выше ссылке на документацию Microsoft.

example_cl
| top 1 by TimeGenerated desc
| project in_use, unused, total = (in_use + unused)
| summarize AggregatedValue= avg(in_use) by xxxxxxx, bin(TimeGenerated, 30s)

Надеюсь, это поможет !!Ура !!

...