Exemples de requêtes d’alerte de recherche dans les journaux qui incluent ADX et ARG

Une règle d’alerte de recherche dans les journaux surveille une ressource à l’aide d’une requête Log Analytics pour évaluer les journaux à une fréquence définie. Vous pouvez inclure des données à partir d’Azure Data Explorer et d’Azure Resource Graph dans vos requêtes de règle d’alerte de recherche dans les journaux.

Cet article fournit des exemples de requêtes de règle d’alerte de recherche dans les journaux qui utilisent Azure Data Explorer et Azure Resource Graph. Pour plus d’informations sur la création d’une règle d’alerte de recherche dans les journaux, consultez Créer une règle d’alerte de recherche de journal.

Requêtes qui case activée l’intégrité de la machine virtuelle

Cette requête recherche les machines virtuelles marquées comme critiques qui n’ont pas eu de pulsation au cours des 2 dernières minutes.

    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

Cette requête recherche les machines virtuelles marquées comme critiques qui avaient une pulsation plus de 24 heures plus tôt, mais qui n’ont pas eu de pulsations au cours des 2 dernières minutes.

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

Requête qui filtre les machines virtuelles qui doivent être surveillées

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

Requête qui recherche des ressources avec des certificats qui vont expirer dans les 30 jours

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

Interroger qui alerte lorsqu’une nouvelle ressource est créée dans l’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

}

Étapes suivantes