Úvodní ukázky dotazů Resource Graphu
Prvním krokem k porozumění dotazům s Azure Resource Graph jsou základní znalosti dotazovacího jazyka. Pokud ještě neznáte dotazovací jazyk Kusto (KQL), doporučujeme si projít kurz KQL, abyste pochopili, jak vytvářet žádosti o prostředky, které hledáte.
Tento článek používá následující úvodní dotazy:
- Počet prostředků Azure
- Počet prostředků služby Key Vault
- Výpis prostředků seřazených podle názvu
- Zobrazení všech virtuálních počítačů, které jsou seřazené podle názvu v sestupném pořadí
- Zobrazení prvních pěti virtuálních počítačů podle názvu a jejich typu operačního systému
- Počet virtuálních počítačů podle typu operačního systému
- Zobrazení prostředků, které obsahují úložiště
- Výpis všech podsítí virtuální sítě Azure
- Seznam všech veřejných IP adres
- Počet prostředků, které mají IP adresy nakonfigurované podle předplatného
- Seznam prostředků s konkrétní hodnotou značky
- Seznam všech účtů úložiště s konkrétní hodnotou značky
- Výpis všech značek a jejich hodnot
- Zobrazení nepřidružených skupin zabezpečení sítě
- Výpis upozornění služby Azure Monitor seřazená podle závažnosti
- Výpis upozornění služby Azure Monitor seřazené podle závažnosti a stavu upozornění
- Výpis upozornění služby Azure Monitor seřazené podle závažnosti, monitorování služby a typu cílového prostředku
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Podpora jazyků
Azure PowerShell (prostřednictvím modulu) a Azure CLI (prostřednictvím rozšíření) podporují Azure Resource Graph. Před spuštěním jakéhokoli z následujících dotazů zkontrolujte, že je vaše prostředí připravené. Zobrazte Azure CLI a Azure PowerShell pro pokyny k instalaci a ověření vašeho výběru prostředí.
Počet prostředků Azure
Tento dotaz vrátí počet prostředků Azure, které existují v předplatných, ke kterým máte přístup. Tento dotaz je také vhodný k ověření, že vaše vybrané prostředí má nainstalované a funkční odpovídající komponenty služby Azure Resource Graph.
Resources
| summarize count()
Azure CLI ve výchozím nastavení dotazuje všechna přístupná předplatná, ale můžete zadat --subscriptions
parametr pro dotazování konkrétních předplatných.
az graph query -q "Resources | summarize count()"
Tento příklad používá proměnnou pro ID předplatného.
subid=$(az account show --query id --output tsv)
az graph query -q "Resources | summarize count()" --subscriptions $subid
Můžete se také dotazovat podle rozsahů pro skupinu pro správu a tenanta. Nahraďte <managementGroupId>
hodnoty a <tenantId>
nahraďte je.
az graph query -q "Resources | summarize count()" --management-groups '<managementGroupId>'
az graph query -q "Resources | summarize count()" --management-groups '<tenantId>'
Pro ID tenanta můžete také použít proměnnou.
tenantid=$(az account show --query tenantId --output tsv)
az graph query -q "Resources | summarize count()" --management-groups $tenantid
Počet prostředků služby Key Vault
Tento dotaz místo count
summarize
počítání vrácených záznamů. Počet zahrnuje pouze trezory klíčů.
Resources
| where type =~ 'microsoft.keyvault/vaults'
| count
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | count"
Výpis prostředků seřazených podle názvu
Tento dotaz vrátí jakýkoli typ prostředku, ale pouze vlastnosti name (Název), type (Typ) a location (Umístění). Pomocí klauzule order by
seřadí vlastnosti podle vlastnosti name (Název) ve vzestupném pořadí (asc
).
Resources
| project name, type, location
| order by name asc
az graph query -q "Resources | project name, type, location | order by name asc"
Zobrazení všech virtuálních počítačů, které jsou seřazené podle názvu v sestupném pořadí
Když chceme vypsat pouze virtuální počítače (typ Microsoft.Compute/virtualMachines
), můžeme ve výsledcích porovnat shodu vlastnosti type (Typ). Podobně jako v předchozím dotazu musí být změny desc
order by
být řazeny sestupně. =~
ve shodě typu říká Azure Resource Graphu aby nerozlišoval malá a velká písmena.
Resources
| project name, location, type
| where type =~ 'Microsoft.Compute/virtualMachines'
| order by name desc
az graph query -q "Resources | project name, location, type| where type =~ 'Microsoft.Compute/virtualMachines' | order by name desc"
Zobrazení prvních pěti virtuálních počítačů podle názvu a jejich typu operačního systému
Tento dotaz používá top
pouze k načtení pěti odpovídajících záznamů, které jsou seřazené podle názvu. Typ prostředku Azure je Microsoft.Compute/virtualMachines
. project
říká Azure Resource Graph, které vlastnosti použít.
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| project name, properties.storageProfile.osDisk.osType
| top 5 by name desc
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project name, properties.storageProfile.osDisk.osType | top 5 by name desc"
Počet virtuálních počítačů podle typu operačního systému
Vycházíme z předchozího dotazu a stále omezujeme prostředky Azure na typ Microsoft.Compute/virtualMachines
, ale už neomezujeme počet vrácených záznamů.
Místo toho jsme použili summarize
a count()
k definování, jak seskupit a agregovat hodnoty podle vlastností, což je v tomto příkladu properties.storageProfile.osDisk.osType
. Příklad toho, jak tento řetězec vypadá v úplném objektu, najdete v části zjišťování prostředků – objevování virtuálních počítačů.
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| summarize count() by tostring(properties.storageProfile.osDisk.osType)
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)"
Jiný způsob, jak napsat stejný dotaz, je na extend
vlastnost a dát mu dočasný název pro použití v rámci dotazu, v tomto případě os. Operační systém se pak použije summarize
a count()
použije jako v předchozím příkladu.
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| extend os = properties.storageProfile.osDisk.osType
| summarize count() by tostring(os)
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | extend os = properties.storageProfile.osDisk.osType | summarize count() by tostring(os)"
Poznámka:
Uvědomte si, že zatímco =~
umožňuje nerozlišovat malá a velká písmena, použití vlastností (jako například properties.storageProfile.osDisk.osType) v dotazu vyžaduje rozlišování malých a velkých písmen. Pokud je vlastnost nesprávným případem, vrátí se hodnota null nebo nesprávná hodnota a seskupení nebo sumarizace by byla nesprávná.
Zobrazení prostředků, které obsahují úložiště
Místo explicitního definování typu, který se má shodovat, tento ukázkový dotaz najde jakýkoli prostředek Azure, který contains
word storage obsahuje.
Resources
| where type contains 'storage' | distinct type
az graph query -q "Resources | where type contains 'storage' | distinct type"
Výpis všech podsítí virtuální sítě Azure
Tento dotaz vrátí seznam virtuálních sítí Azure včetně názvů podsítí a předpon adres. Díky Saul Dolgin za příspěvek.
Resources
| where type == 'microsoft.network/virtualnetworks'
| extend subnets = properties.subnets
| mv-expand subnets
| project name, subnets.name, subnets.properties.addressPrefix, location, resourceGroup, subscriptionId
az graph query -q "Resources | where type == 'microsoft.network/virtualnetworks' | extend subnets = properties.subnets | mv-expand subnets | project name, subnets.name, subnets.properties.addressPrefix, location, resourceGroup, subscriptionId"
Seznam všech veřejných IP adres
Podobně jako v předchozím dotazu se vyhledají všechny záznamy, jejichž typ obsahuje slovo publicIPAddresses.
Tento dotaz rozšiřuje tento vzor tak, aby zahrnoval pouze výsledky, ve kterých properties.ipAddress, aby vracelisnotempty
pouze vlastnosti.ipAddress a výsledky limit
podle prvních 100. V závislosti na zvoleném prostředí možná budete muset uvozovky uvozovky uvozovek utéct.
Resources
| where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress)
| project properties.ipAddress
| limit 100
az graph query -q "Resources | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | project properties.ipAddress | limit 100"
Počet prostředků, které mají IP adresy nakonfigurované podle předplatného
Pomocí předchozího ilustračního dotazu a přidáním summarize
a count()
, získáme seznam podle předplatného prostředků s nakonfigurovanými IP adresami.
Resources
| where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress)
| summarize count () by subscriptionId
az graph query -q "Resources | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | summarize count () by subscriptionId"
Seznam prostředků s konkrétní hodnotou značky
Rozsah výsledků můžeme omezit podle vlastností jiných než typ prostředku Azure, jako je například značka. V tomto příkladu vyfiltrujeme prostředky Azure s názvem značky Environment (Prostředí) s hodnotou Internal (Interní).
Resources
| where tags.environment=~'internal'
| project name
az graph query -q "Resources | where tags.environment=~'internal' | project name"
Pokud chcete vrátit také značky prostředku a jejich hodnoty, přidejte ke klíčovému slovu project
vlastnost tags (Značky).
Resources
| where tags.environment=~'internal'
| project name, tags
az graph query -q "Resources | where tags.environment=~'internal' | project name, tags"
Seznam všech účtů úložiště s konkrétní hodnotou značky
Zkombinujte funkci filtrování z předchozího příkladu a vyfiltrujte typ prostředku Azure podle vlastnosti type (Typ). Tento dotaz naše hledání omezuje také na konkrétní typy prostředků Azure s konkrétním názvem a hodnotou značky.
Resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| where tags['tag with a space']=='Custom value'
az graph query -q "Resources | where type =~ 'Microsoft.Storage/storageAccounts' | where tags['tag with a space']=='Custom value'"
Poznámka:
Tento příklad používá ==
pro shodu místo podmínky =~
. ==
je shoda rozlišující velikost písmen.
Výpis všech značek a jejich hodnot
Tento dotaz uvádí značky skupin pro správu, předplatných a prostředků spolu s jejich hodnotami.
Dotaz nejprve omezuje zdroje, kde značky isnotempty()
, omezuje zahrnutá pole pouze zahrnutím značek do project
a mvexpand
extend
získat spárovaná data z kontejneru vlastností. Potom se použije union
ke kombinování výsledků z ResourceContainers do stejných výsledků z prostředků a poskytuje široké pokrytí, ke kterým značek se načítají. Nakonec omezí výsledky na distinct
spárovaná data a vyloučí značky skryté systémem.
ResourceContainers
| where isnotempty(tags)
| project tags
| mvexpand tags
| extend tagKey = tostring(bag_keys(tags)[0])
| extend tagValue = tostring(tags[tagKey])
| union (
resources
| where isnotempty(tags)
| project tags
| mvexpand tags
| extend tagKey = tostring(bag_keys(tags)[0])
| extend tagValue = tostring(tags[tagKey])
)
| distinct tagKey, tagValue
| where tagKey !startswith "hidden-"
az graph query -q "ResourceContainers | where isnotempty(tags) | project tags | mvexpand tags | extend tagKey = tostring(bag_keys(tags)[0]) | extend tagValue = tostring(tags[tagKey]) | union (resources | where notempty(tags) | project tags | mvexpand tags | extend tagKey = tostring(bag_keys(tags)[0]) | extend tagValue = tostring(tags[tagKey]) ) | distinct tagKey, tagValue | where tagKey !startswith "hidden-""
Zobrazení nepřidružených skupin zabezpečení sítě
Tento dotaz vrátí skupiny zabezpečení sítě (NSG), které nejsou přidružené k síťovému rozhraní nebo podsíti.
Resources
| where type =~ "microsoft.network/networksecuritygroups" and isnull(properties.networkInterfaces) and isnull(properties.subnets)
| project name, resourceGroup
| sort by name asc
az graph query -q "Resources | where type =~ 'microsoft.network/networksecuritygroups' and isnull(properties.networkInterfaces) and isnull(properties.subnets) | project name, resourceGroup | sort by name asc"
Výpis upozornění služby Azure Monitor seřazená podle závažnosti
alertsmanagementresources
| where type =~ 'microsoft.alertsmanagement/alerts'
| where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now()
| project Severity = tostring(properties.essentials.severity)
| summarize AlertsCount = count() by Severity
Výpis upozornění služby Azure Monitor seřazené podle závažnosti a stavu upozornění
alertsmanagementresources
| where type =~ 'microsoft.alertsmanagement/alerts'
| where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now()
| project Severity = tostring(properties.essentials.severity),
AlertState= tostring(properties.essentials.alertState)
| summarize AlertsCount = count() by Severity, AlertState
Výpis upozornění služby Azure Monitor seřazené podle závažnosti, monitorování služby a typu cílového prostředku
alertsmanagementresources
| where type =~ 'microsoft.alertsmanagement/alerts'
| where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now()
| project Severity = tostring(properties.essentials.severity),
MonitorCondition = tostring(properties.essentials.monitorCondition),
ObjectState = tostring(properties.essentials.alertState),
MonitorService = tostring(properties.essentials.monitorService),
AlertRuleId = tostring(properties.essentials.alertRule),
SignalType = tostring(properties.essentials.signalType),
TargetResource = tostring(properties.essentials.targetResourceName),
TargetResourceType = tostring(properties.essentials.targetResourceName), id
| summarize AlertsCount = count() by Severity, MonitorService , TargetResourceType
Další kroky
- Přečtěte si další informace o dotazovacím jazyce.
- Přečtěte si další informace o tom, jak prozkoumat prostředky.
- Podívejte se na ukázky pokročilých dotazů.