Przykładowe zapytania alertów przeszukiwania dzienników, które obejmują usługi ADX i ARG

Reguła alertu przeszukiwania dzienników monitoruje zasób przy użyciu zapytania usługi Log Analytics w celu oceny dzienników z ustawioną częstotliwością. Dane z usług Azure Data Explorer i Azure Resource Graph można uwzględnić w zapytaniach reguł alertów przeszukiwania dzienników.

Ten artykuł zawiera przykłady zapytań reguł alertów przeszukiwania dzienników korzystających z usług Azure Data Explorer i Azure Resource Graph. Aby uzyskać więcej informacji na temat tworzenia reguły alertu przeszukiwania dzienników, zobacz Tworzenie reguły alertu przeszukiwania dzienników.

Zapytania sprawdzające kondycję maszyny wirtualnej

To zapytanie znajduje maszyny wirtualne oznaczone jako krytyczne, które nie miały pulsu w ciągu ostatnich 2 minut.

    arg("").Resources
    | where type == "microsoft.compute/virtualmachines"
    | summarize LastCall = max(case(isnull(TimeGenerated), make_datetime(1970, 1, 1), TimeGenerated)) by name, id
    | extend SystemDown = case(LastCall < ago(2m), 1, 0)
    | where SystemDown == 1

To zapytanie znajduje maszyny wirtualne oznaczone jako krytyczne, które miały puls ponad 24 godziny temu, ale nie miały pulsu w ciągu ostatnich 2 minut.

{
    arg("").Resources
    | where type == "microsoft.compute/virtualmachines"
    | where tags.BusinessCriticality =~ 'critical' and subscriptionId == '123-456-123-456'
    | join kind=leftouter (
    Heartbeat
    | where TimeGenerated > ago(24h)
    )
    on $left.name == $right.Resource
    | summarize LastCall = max(case(isnull(TimeGenerated), make_datetime(1970, 1, 1), TimeGenerated)) by name, id
    | extend SystemDown = case(LastCall < ago(2m), 1, 0)
    | where SystemDown == 1
}

Zapytanie filtrujące maszyny wirtualne, które muszą być monitorowane

   {
    let RuleGroupTags = dynamic(['Linux']);
    Perf | where ObjectName == 'Processor' and CounterName == '% Idle Time' and (InstanceName in ('_Total,'total'))
    | extend CpuUtilisation = (100 - CounterValue)   
    | join kind=inner hint.remote=left (arg("").Resources
        | where type =~ 'Microsoft.Compute/virtualMachines'
    | project _ResourceId=tolower(id), tags) on _ResourceId
    | project-away _ResourceId1
    | where  (tostring(tags.monitorRuleGroup) in (RuleGroupTags)) 
}

Zapytanie dotyczące odnajdowania zasobów z certyfikatami, które wygasną w ciągu 30 dni

{
    arg("").Resources
    | where type == "microsoft.web/certificates"
    | extend ExpirationDate = todatetime(properties.expirationDate)
    | project ExpirationDate, name, resourceGroup, properties.expirationDate
    | where ExpirationDate < now() + 30d
    | order by ExpirationDate asc
}

Wykonywanie zapytań o alerty po utworzeniu nowego zasobu w subskrypcji

{
    arg("").resourcechanges
    | extend changeTime = todatetime(properties.changeAttributes.timestamp), 
    changeType = tostring(properties.changeType),targetResourceType = tostring(properties.targetResourceType),
    changedBy = tostring(properties.changeAttributes.changedBy),
    createdResource = tostring(properties.targetResourceId)
    | where changeType == "Create" and changeTime <ago(1h)
    | project changeTime,createdResource,changedBy

}

Następne kroki