Exemplos de consultas de alerta de pesquisa de log 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 log, consulte Criar uma regra de alerta de pesquisa de log.

Consultas que verificam a integridade da máquina virtual

Esta consulta localiza máquinas virtuais marcadas como críticas que não tiveram um batimento cardíaco 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

Esta consulta encontra máquinas virtuais marcadas como críticas que tiveram um batimento cardíaco há mais de 24 horas, mas que não tiveram um batimento cardíaco 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 vão expirar dentro de 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óximos passos