Log Analytics クエリを使用して、モニター ブックで VM の SLA を追跡したいと考えています。このために、各 VM のハートビートを提供する「ハートビート」テーブルを使用します。ただし、一部の VM は可用性セット/ゾーン内にあるため、1 分間の間隔で両方のハートビートが欠落している場合にのみ、SLA が破られます。そのため、クエリで可用性セット/ゾーンごとにハートビートをグループ化できる必要がありますが、ハートビートにはそのようなプロパティがないようです。
別の Azure Resource Graph クエリを使用して、どの VM が可用性セット/ゾーン内にあるかを検索できますが、このクエリを Log Analytics クエリとマージすると、クエリに対してそれ以上の Kusto クエリ言語処理を行うことができません (私はテーブルのマージのみ可能です)。
情報として、これらは私の Log Analytics Heartbeat クエリと私の Resource Graph SLA クエリです。
let timeRangeStart = {TimeRange:start};
let timeRangeEnd = {TimeRange:end};
Heartbeat
| where ResourceType == "virtualMachines"
| extend ResourceGroup = case(ResourceGroup <> "", ResourceGroup, "On-Prem")
| where TimeGenerated > timeRangeStart and TimeGenerated < timeRangeEnd and Computer in ({Servers})
| extend Resource=tolower(iff(isempty(_ResourceId), Resource, _ResourceId))
| summarize heartbeat_tot = count() by Resource,ResourceGroup, SubscriptionId
| extend total_number_of_buckets=round((timeRangeEnd-timeRangeStart)/1m)
| extend round(availability_rate=heartbeat_tot*100/total_number_of_buckets,2)
| extend availability_rate = min_of(availability_rate, 100)
| order by availability_rate asc
Resources // VMs
| where type == 'microsoft.compute/virtualmachines'
| extend AvSet = properties.availabilitySet.id
| extend AvZone = properties.availabilityZone.id
| extend VMname_SLA = iff(isnotempty(AvZone), AvZone, iff(isnotempty(AvSet), AvSet, id))
| extend SLA_VM = iff(isnotnull(AvZone), '99.99%', iff(isnotnull(AvSet), '99.95%', ''))
| extend managedBy = tolower(id)
| join kind = leftouter (
Resources // Disks
| where type == 'microsoft.compute/disks'
| where isnotempty(managedBy)
| extend managedBy = tolower(managedBy)
// What do Standard HDD disks have as SKU tag??? I used StandardHDD for the time being
| extend Tier_disk = sku.tier
| extend SLA_disk = iff(Tier_disk == 'StandardHDD', '95%', iff(Tier_disk == 'Standard', '99.5%', '99.9%'))
) on managedBy
| extend SLA_tot = iff(isnotempty(SLA_VM), SLA_VM, SLA_disk)
| project managedBy, VMname_SLA, SLA_tot
| order by managedBy asc