Consultas de alertas de búsqueda de registros de ejemplo que incluyen ADX y ARG

Una regla de alertas de búsqueda de registros supervisa un recurso mediante una consulta de Log Analytics para evaluar los registros con una frecuencia establecida. Puede incluir datos de Azure Data Explorer y Azure Resource Graph en las consultas de reglas de alertas de búsqueda de registros.

En este artículo se proporcionan ejemplos de consultas de reglas de alertas de búsqueda de registros que usan Azure Data Explorer y Azure Resource Graph. Para obtener más información sobre cómo crear una regla de alertas de búsqueda de registros, consulte Creación de una regla de alertas de búsqueda de registros.

Consultas que comprueban el estado de la máquina virtual

Esta consulta busca máquinas virtuales marcadas como críticas que no han tenido un latido en los ú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 busca máquinas virtuales marcadas como críticas que tenían un latido hace más de 24 horas, pero que no han tenido un latido en los ú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 las máquinas virtuales que deben supervisarse

   {
    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 busca recursos con certificados que van a expirar en un plazo de 30 días

{
    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 cuando se crea un nuevo recurso en la suscripción

{
    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

}

Pasos siguientes