Resource Graph の初歩的なクエリのサンプルStarter Resource Graph query samples

Azure Resource Graph でクエリを理解する最初の手順は、クエリ言語の基本を理解することです。The first step to understanding queries with Azure Resource Graph is a basic understanding of the Query Language. Kusto Query Language (KQL) にまだ慣れていない場合は、KQL のチュートリアルを参照し、目的のリソースへの要求を作成する方法を理解することをお勧めします。If you aren't already familiar with Kusto Query Language (KQL), it's recommended to review the tutorial for KQL to understand how to compose requests for the resources you're looking for.

次のスターター クエリを説明します。We'll walk through the following starter queries:

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.

言語のサポートLanguage support

Azure CLI (拡張経由) および Azure PowerShell (モジュール経由) は、Azure Resource Graph をサポートします。Azure CLI (through an extension) and Azure PowerShell (through a module) support Azure Resource Graph. 次のクエリを実行する前に、環境が準備できていることを確認します。Before running any of the following queries, check that your environment is ready. 選択するシェル環境をインストールし、検証する手順については、Azure CLI および Azure PowerShell を参照してください。See Azure CLI and Azure PowerShell for steps to install and validate your shell environment of choice.

Azure リソースの数Count Azure resources

このクエリは、あなたがアクセスしたサブスクリプションに存在する Azure リソースの数を返します。This query returns number of Azure resources that exist in the subscriptions that you have access to. また、選択するシェルに適切な Azure Resource Graph コンポーネントがインストールされ、正常に動作していることを検証するために使用する場合にも有効なクエリです。It's also a good query to validate your shell of choice has the appropriate Azure Resource Graph components installed and in working order.

Resources
| summarize count()
az graph query -q "Resources | summarize count()"

キー コンテナー リソースの数Count key vault resources

このクエリでは、summarize ではなく count を使用して、返されるレコードの数をカウントします。This query uses count instead of summarize to count the number of records returned. カウントに含まれるのは、キー コンテナーだけです。Only key vaults are included in the count.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| count
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | count"

名前で並べ替えられたリソースの一覧表示List resources sorted by name

このクエリは、あらゆる種類のリソースを返しますが、返されるプロパティは nametypelocation に限られます。This query returns any type of resource, but only the name, type, and location properties. order by を使用することにより、これらのプロパティが name プロパティの昇順 (asc) で並べ替えらえます。It uses order by to sort the properties by the name property in ascending (asc) order.

Resources
| project name, type, location
| order by name asc
az graph query -q "Resources | project name, type, location | order by name asc"

降順の名前で順序付けられたすべての仮想マシンの表示Show all virtual machines ordered by name in descending order

仮想マシン (Microsoft.Compute/virtualMachines型) のみを一覧表示したければ、結果において type プロパティと突き合わせます。To list only virtual machines (which are type Microsoft.Compute/virtualMachines), we can match the property type in the results. 前のクエリと同様に、descorder by を降順に変更します。Similar to the previous query, desc changes the order by to be descending. =~の種類一致により、Resource Graph では大文字と小文字が区別されないことを示します。The =~ in the type match tells Resource Graph to be case insensitive.

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"

名前とその OS の種類による最初の 5 つの仮想マシンの表示Show first five virtual machines by name and their OS type

このクエリは、名前別に整理された 5 つの一致するレコードを取得するためのみに top を使用します。This query will use top to only retrieve five matching records that are ordered by name. Azure リソースの種類は Microsoft.Compute/virtualMachines です。The type of the Azure resource is Microsoft.Compute/virtualMachines. project により、Azure Resource Graph に含めるプロパティを説明します。project tells Azure Resource Graph which properties to include.

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"

仮想マシンの数 (OS の種類別)Count virtual machines by OS type

前のクエリに基づき、Azure リソースの種類 Microsoft.Compute/virtualMachines によりまだ制限していますが、返されるレコード数を制限しなくなっています。Building on the previous query, we're still limiting by Azure resources of type Microsoft.Compute/virtualMachines, but are no longer limiting the number of records returned. 代わりに、プロパティで値をグループ化し、集計する方法を定義するためにsummarize および count() を使用しました。この例では、properties.storageProfile.osDisk.osTypeです。Instead, we used summarize and count() to define how to group and aggregate the values by property, which in this example is properties.storageProfile.osDisk.osType. この文字列が完全なオブジェクトにおいてどのように見えるかという例については、 リソースの確認‐仮想マシンの検出 を参照してください。For an example of how this string looks in the full object, see explore resources - virtual machine discovery.

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)"

同じクエリを記述するさまざまな方法は、プロパティを extend し、クエリ内で使用するために一時的に名前を付けます。この場合は os です。A different way to write the same query is to extend a property and give it a temporary name for use within the query, in this case os. 前の例に示すように、ossummarize および count() により使用されます。os is then used by summarize and count() as in the previous example.

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)"

注意

=~ によりプロパティの大文字と小文字を区別しないことが可能である一方、クエリにおけるプロパティの使用 (properties.storageProfile.osDisk.osType 等) には正しいケースを必要とすることにご注意ください。Be aware that while =~ allows case insensitive matching, use of properties (such as properties.storageProfile.osDisk.osType) in the query require the case to be correct. プロパティが正しくない場合、null 値または間違った値が返され、グループ化または集計が不正確になる可能性があります。If the property is the incorrect case, a null or incorrect value is returned and the grouping or summarization would be incorrect.

ストレージを含むリソースの表示Show resources that contain storage

一致する種類を明示的に定義する代わりに、このクエリの例によりcontains単語ストレージする任意の Azure リソースが見つかります。Instead of explicitly defining the type to match, this example query will find any Azure resource that contains the word storage.

Resources
| where type contains 'storage' | distinct type
az graph query -q "Resources | where type contains 'storage' | distinct type"

パブリック IP アドレスの一覧表示List all public IP addresses

前のクエリと同様に、type に publicIPAddresses という語を含むものをすべて検索します。Similar to the previous query, find everything that is a type with the word publicIPAddresses. このクエリは、そのパターンを拡張して、properties.ipAddress isnotempty の場合にのみ結果を取得し、properties.ipAddress のみを返し、結果を上位 100 件に制限 (limit) します。This query expands on that pattern to only include results where properties.ipAddress isnotempty, to only return the properties.ipAddress, and to limit the results by the top 100. 選択したシェルによって引用符のエスケープが必要となる場合があります。You may need to escape the quotes depending on your chosen shell.

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"

サブスクリプションで構成されている IP アドレスを持つリソースの数Count resources that have IP addresses configured by subscription

前例のクエリを使用し、summarize および count() を追加して、構成された IP アドレスをもつリソースのサブスクリプションにより一覧を取得できます。Using the previous example query and adding summarize and count(), we can get a list by subscription of resources with configured IP addresses.

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"

特定のタグ値が付いたリソースの一覧表示List resources with a specific tag value

タグなどの Azure リソースの種類以外のプロパティによる結果を制限することができます。We can limit the results by properties other than the Azure resource type, such as a tag. この例では、Internal という値を持つ、Environment というタグ名の Azure リソースをフィルターで抽出しています。In this example, we're filtering for Azure resources with a tag name of Environment that have a value of Internal.

Resources
| where tags.environment=~'internal'
| project name
az graph query -q "Resources | where tags.environment=~'internal' | project name"

そのリソースが持っているタグとその値も得る必要がある場合は、project キーワードに tags プロパティを追加します。To also provide what tags the resource has and their values, add the property tags to the project keyword.

Resources
| where tags.environment=~'internal'
| project name, tags
az graph query -q "Resources | where tags.environment=~'internal' | project name, tags"

特定のタグ値を持つすべてのストレージ アカウントの一覧表示List all storage accounts with specific tag value

前の例のフィルター機能を組み合わせて、type プロパティで Azure リソースの種類をフィルター処理してみましょう。Combine the filter functionality of the previous example and filter Azure resource type by type property. このクエリでは、特定の種類の Azure リソースを抽出する検索が、さらに特定のタグ名と値で制限されています。This query also limits our search for specific types of Azure resources with a specific tag name and value.

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'"

注意

この例では=~の条件付きの代わりに、==をマッチングに使用しています。This example uses == for matching instead of the =~ conditional. == は大文字小文字が区別します。== is a case sensitive match.

仮想マシン リソースの別名の表示Show aliases for a virtual machine resource

Azure ポリシーの別名は、リソースのコンプライアンスを管理するために Azure Policy によって使用されます。Azure Policy aliases are used by Azure Policy to manage resource compliance. Azure Resource Graph は、リソースの種類の "別名" を返すことができます。Azure Resource Graph can return the aliases of a resource type. これらの値は、カスタム ポリシー定義を作成するときに別名の現在の値を比較するのに役立ちます。These values are useful for comparing the current value of aliases when creating a custom policy definition. aliases 配列は、既定ではクエリの結果に提供されません。The aliases array isn't provided by default in the results of a query. 明示的に結果に追加するには、project aliases を使用します。Use project aliases to explicitly add it to the results.

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| limit 1
| project aliases
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | limit 1 | project aliases"

特定の別名の個別の値の表示Show distinct values for a specific alias

単一のリソースの別名の値を確認することは有用ですが、それだけでは Azure Resource Graph を使用して複数のサブスクリプションにわたってクエリを実行することの真の価値は表されません。Seeing the value of aliases on a single resource is helpful, but it doesn't show the true value of using Azure Resource Graph to query across subscriptions. この例では、特定の別名のすべての値を調べて、個別の値を返します。This example looks at all values of a specific alias and returns the distinct values.

Resources
| where type=~'Microsoft.Compute/virtualMachines'
| extend alias = aliases['Microsoft.Compute/virtualMachines/storageProfile.osDisk.managedDisk.storageAccountType']
| distinct tostring(alias)
az graph query -q "Resources | where type=~'Microsoft.Compute/virtualMachines' | extend alias = aliases['Microsoft.Compute/virtualMachines/storageProfile.osDisk.managedDisk.storageAccountType'] | distinct tostring(alias)"

関連付けられていないネットワーク セキュリティ グループの表示Show unassociated network security groups

このクエリでは、ネットワーク インターフェイスまたはサブネットに関連付けられていないネットワーク セキュリティ グループ (NSG) が返されます。This query returns Network Security Groups (NSGs) that aren't associated to a network interface or subnet.

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"

Azure Advisor からコスト削減の概要を取得するGet cost savings summary from Azure Advisor

このクエリは、各 Azure Advisor 推奨事項によるコスト削減をまとめます。This query summarizes the cost savings of each Azure Advisor recommendation.

advisorresources
| where type == 'microsoft.advisor/recommendations'
| where properties.category == 'Cost'
| extend
    resources = tostring(properties.resourceMetadata.resourceId),
    savings = todouble(properties.extendedProperties.savingsAmount),
    solution = tostring(properties.shortDescription.solution),
    currency = tostring(properties.extendedProperties.savingsCurrency)
| summarize
    dcount(resources), 
    bin(sum(savings), 0.01)
    by solution, currency
| project solution, dcount_resources, sum_savings, currency
| order by sum_savings desc
az graph query -q "advisorresources | where type == 'microsoft.advisor/recommendations' | where properties.category == 'Cost' | extend resources = tostring(properties.resourceMetadata.resourceId), savings = todouble(properties.extendedProperties.savingsAmount), solution = tostring(properties.shortDescription.solution), currency = tostring(properties.extendedProperties.savingsCurrency) | summarize dcount(resources), bin(sum(savings), 0.01) by solution, currency | project solution, dcount_resources, sum_savings, currency | order by sum_savings desc"

次のステップNext steps