Voorbeeldquery's voor zoeken in logboeken met ADX en ARG

Een waarschuwingsregel voor zoeken in logboeken bewaakt een resource met behulp van een Log Analytics-query om logboeken met een ingestelde frequentie te evalueren. U kunt gegevens uit Azure Data Explorer en Azure Resource Graph opnemen in query's voor waarschuwingsregels voor zoeken in logboeken.

Dit artikel bevat voorbeelden van query's voor waarschuwingsregels voor logboeken die gebruikmaken van Azure Data Explorer en Azure Resource Graph. Zie Een waarschuwingsregel voor zoeken in logboeken maken voor meer informatie over het maken van een waarschuwingsregel voor zoeken in logboeken.

Query's die de status van de virtuele machine controleren

Met deze query worden virtuele machines gevonden die als kritiek zijn gemarkeerd en die de afgelopen 2 minuten geen heartbeat hebben gehad.

    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

Met deze query worden virtuele machines gevonden die meer dan 24 uur geleden als kritiek zijn gemarkeerd, maar die in de afgelopen 2 minuten geen heartbeat hebben gehad.

{
    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
}

Query waarmee virtuele machines worden gefilterd die moeten worden bewaakt

   {
    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)) 
}

Query waarmee resources worden gevonden met certificaten die binnen 30 dagen verlopen

{
    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
}

Query uitvoeren op waarschuwingen wanneer er een nieuwe resource wordt gemaakt in het abonnement

{
    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

}

Volgende stappen