Примеры запросов оповещений поиска по журналам, включающим ADX и ARG
Правило генерации оповещений поиска по журналам отслеживает ресурс с помощью запроса Log Analytics для оценки журналов с заданной частотой. Вы можете включить данные из Azure Data Explorer и Azure Resource Graph в запросы правил генерации оповещений поиска журналов.
В этой статье приведены примеры запросов правил генерации оповещений поиска журналов, использующих Azure Data Explorer и Azure Resource Graph. Дополнительные сведения о создании правила генерации оповещений поиска по журналам см. в статье "Создание правила генерации оповещений поиска по журналам".
Запросы, проверяющие работоспособность виртуальной машины
Этот запрос находит виртуальные машины, помеченные как критически важные, которые не имели пульса за последние 2 минуты.
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
Этот запрос находит виртуальные машины, помеченные как критически важные, которые имели пульс более 24 часов назад, но это не было пульса за последние 2 минуты.
{
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
}
Запрос, который фильтрует виртуальные машины, которые необходимо отслеживать
{
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))
}
Запрос, который находит ресурсы с сертификатами, срок действия которых истекает в течение 30 дней
{
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
}
Запрос, который оповещает при создании нового ресурса в подписке
{
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
}