Consultas de alerta de pesquisa de log de exemplo que incluem ADX e ARG

Uma regra de alerta de pesquisa de log monitora um recurso usando uma consulta do Log Analytics para avaliar logs em uma frequência definida. Você pode incluir dados do Azure Data Explorer e do Azure Resource Graph em suas consultas de regra de alerta de pesquisa de log.

Este artigo fornece exemplos de consultas de regra de alerta de pesquisa de log que usam o Azure Data Explorer e o Azure Resource Graph. Para obter mais informações sobre como criar uma regra de alerta de pesquisa de logs, consulte Criar uma regra de alerta de pesquisa de logs.

Consultas que verificam a integridade da máquina virtual

Essa consulta localiza máquinas virtuais marcadas como críticas que não tiveram uma pulsação nos últimos 2 minutos.

    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

Essa consulta localiza máquinas virtuais marcadas como críticas que tiveram uma pulsação há mais de 24 horas, mas que não tiveram uma pulsação nos últimos 2 minutos.

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

Consulta que filtra máquinas virtuais que precisam ser monitoradas

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

Consulta que localiza recursos com certificados que expirarão em 30 dias

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

Consulta que alerta quando um novo recurso é criado na assinatura

{
    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

}

Próximas etapas