PowerShell を使用した Application Insights リソースの管理Manage Application Insights resources using PowerShell

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

この記事では、Azure Resource 管理を使用して Application Insights リソースの作成と更新を自動化する方法を説明します。This article shows you how to automate the creation and update of Application Insights resources automatically by using Azure Resource Management. たとえば、ビルド プロセスの一部として実行します。You might, for example, do so as part of a build process. 基本的な Application Insights リソースと共に、可用性 Web テストの作成、アラートの設定、価格の詳細の設定、その他の Azure リソースの作成を行うことができます。Along with the basic Application Insights resource, you can create availability web tests, set up alerts, set the pricing scheme, and create other Azure resources.

これらのリソースを作成する際に重要となるのが、Azure Resource Manager の JSON テンプレートです。The key to creating these resources is JSON templates for Azure Resource Manager. 基本的な手順は、既存のリソースの JSON 定義をダウンロードし、名前などの特定の値をパラメーター化して、新しいリソースを作成するときに、テンプレートを実行するといった手順になります。The basic procedure is: download the JSON definitions of existing resources; parameterize certain values such as names; and then run the template whenever you want to create a new resource. いくつかのリソースをまとめてパッケージ化することで、すべてを一度に作成できます (例、可用性テスト、アラート、および連続エクスポート用の記憶域を使用したアプリの監視)。You can package several resources together, to create them all in one go - for example, an app monitor with availability tests, alerts, and storage for continuous export. パラメーター化の一部には、いくつか細かい点があります。それについては、以降で説明します。There are some subtleties to some of the parameterizations, which we'll explain here.

1 回限りのセットアップOne-time setup

以前に Azure サブスクリプションで PowerShell を使用したことがない場合If you haven't used PowerShell with your Azure subscription before:

スクリプトを実行するコンピューターに Azure PowerShell モジュールをインストールします。Install the Azure Powershell module on the machine where you want to run the scripts:

  1. Microsoft Web Platform Installer (v5 以上)をインストールします。Install Microsoft Web Platform Installer (v5 or higher).
  2. このインストーラーを使用して Microsoft Azure PowerShell をインストールします。Use it to install Microsoft Azure Powershell.

Resource Manager テンプレートの使用に加えて、Application Insights PowerShell コマンドレットの豊富なセットが用意されています。これにより、Application Insights リソースをプログラムによって簡単に構成できます。In addition to using Resource Manager templates, there is a rich set of Application Insights PowerShell cmdlets, which make it easy to configure Application Insights resources programatically. コマンドレットによって有効になる機能は次のとおりです。The capabilities enabled by the cmdlets include:

  • Application Insights リソースの作成と削除Create and delete Application Insights resources
  • Application Insights リソースとそのプロパティの一覧の取得Get lists of Application Insights resources and their properties
  • 連続エクスポートの作成と管理Create and manage Continuous Export
  • アプリケーション キーの作成と管理Create and manage Application Keys
  • 1 日の上限を設定するSet the Daily Cap
  • 料金プランの設定Set the Pricing Plan

PowerShell コマンドレットを使用して Application Insights リソースを作成するCreate Application Insights resources using a PowerShell cmdlet

New-AzApplicationInsights コマンドレットを使用して、Azure 米国東部データセンターに新しい Application Insights リソースを作成する方法を次に示します。Here's how to create a new Application Insights resource in the Azure East US datacenter using the New-AzApplicationInsights cmdlet:

New-AzApplicationInsights -ResourceGroupName <resource group> -Name <resource name> -location eastus

Resource Manager テンプレートを使用して Application Insights リソースを作成するCreate Application Insights resources using a Resource Manager template

Resource Manager テンプレートを使用して新しい Application Insights リソースを作成する方法を次に示します。Here's how to create a new Application Insights resource using a Resource Manager template.

Azure Resource Manager テンプレートの作成Create the Azure Resource Manager template

新しい .json ファイルを作成します (この例では、 template1.json と呼びます)。Create a new .json file - let's call it template1.json in this example. ファイルに、次のコンテンツをコピーします。Copy this content into it:

    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "appName": {
                "type": "string",
                "metadata": {
                    "description": "Enter the name of your Application Insights resource."
                }
            },
            "appType": {
                "type": "string",
                "defaultValue": "web",
                "allowedValues": [
                    "web",
                    "java",
                    "other"
                ],
                "metadata": {
                    "description": "Enter the type of the monitored application."
                }
            },
            "appLocation": {
                "type": "string",
                "defaultValue": "eastus",
                "metadata": {
                    "description": "Enter the location of your Application Insights resource."
                }
            },
            "retentionInDays": {
                "type": "int",
                "defaultValue": 90,
                "allowedValues": [
                    30,
                    60,
                    90,
                    120,
                    180,
                    270,
                    365,
                    550,
                    730
                ],
                "metadata": {
                    "description": "Data retention in days"
                }
            },
            "ImmediatePurgeDataOn30Days": {
                "type": "bool",
                "defaultValue": false,
                "metadata": {
                    "description": "If set to true when changing retention to 30 days, older data will be immediately deleted. Use this with extreme caution. This only applies when retention is being set to 30 days."
                }
            },
            "priceCode": {
                "type": "int",
                "defaultValue": 1,
                "allowedValues": [
                    1,
                    2
                ],
                "metadata": {
                    "description": "Pricing plan: 1 = Per GB (or legacy Basic plan), 2 = Per Node (legacy Enterprise plan)"
                }
            },
            "dailyQuota": {
                "type": "int",
                "defaultValue": 100,
                "minValue": 1,
                "metadata": {
                    "description": "Enter daily quota in GB."
                }
            },
            "dailyQuotaResetTime": {
                "type": "int",
                "defaultValue": 24,
                "metadata": {
                    "description": "Enter daily quota reset hour in UTC (0 to 23). Values outside the range will get a random reset hour."
                }
            },
            "warningThreshold": {
                "type": "int",
                "defaultValue": 90,
                "minValue": 1,
                "maxValue": 100,
                "metadata": {
                    "description": "Enter the % value of daily quota after which warning mail to be sent. "
                }
            }
        },
        "variables": {
            "priceArray": [
                "Basic",
                "Application Insights Enterprise"
            ],
            "pricePlan": "[take(variables('priceArray'),parameters('priceCode'))]",
            "billingplan": "[concat(parameters('appName'),'/', variables('pricePlan')[0])]"
        },
        "resources": [
            {
                "type": "microsoft.insights/components",
                "kind": "[parameters('appType')]",
                "name": "[parameters('appName')]",
                "apiVersion": "2014-04-01",
                "location": "[parameters('appLocation')]",
                "tags": {},
                "properties": {
                    "ApplicationId": "[parameters('appName')]"
                },
                "dependsOn": []
            },
            {
                "name": "[variables('billingplan')]",
                "type": "microsoft.insights/components/CurrentBillingFeatures",
                "location": "[parameters('appLocation')]",
                "apiVersion": "2015-05-01",
                "dependsOn": [
                    "[resourceId('microsoft.insights/components', parameters('appName'))]"
                ],
                "properties": {
                    "CurrentBillingFeatures": "[variables('pricePlan')]",
                    "retentionInDays": "[parameters('retentionInDays')]",
                    "DataVolumeCap": {
                        "Cap": "[parameters('dailyQuota')]",
                        "WarningThreshold": "[parameters('warningThreshold')]",
                        "ResetTime": "[parameters('dailyQuotaResetTime')]"
                    }
                }
            }
        ]
    }

Resource Manager テンプレートを使用して新しい Application Insights リソースを作成するUse the Resource Manager template to create a new Application Insights resource

  1. PowerShell で $Connect-AzAccount を使用して Azure にサインインします。In PowerShell, sign in to Azure using $Connect-AzAccount

  2. Set-AzContext "<subscription ID>" を使用して、コンテキストをサブスクリプションに設定します。Set your context to a subscription with Set-AzContext "<subscription ID>"

  3. 新しいデプロイを実行して、新しい Application Insights リソースを作成します。Run a new deployment to create a new Application Insights resource:

        New-AzResourceGroupDeployment -ResourceGroupName Fabrikam `
               -TemplateFile .\template1.json `
               -appName myNewApp
    
    
    • -ResourceGroupName は、新しいリソースを作成するグループです。-ResourceGroupName is the group where you want to create the new resources.
    • -TemplateFile は、カスタム パラメーターの前に置く必要があります。-TemplateFile must occur before the custom parameters.
    • -appName 作成するリソースの名前です。-appName The name of the resource to create.

その他のパラメーターを追加することもできます。テンプレートのパラメーター セクションに説明があります。You can add other parameters - you'll find their descriptions in the parameters section of the template.

インストルメンテーション キーの取得Get the instrumentation key

アプリケーション リソースを作成したら、インストルメンテーション キーが必要になります。After creating an application resource, you'll want the instrumentation key:

  1. $Connect-AzAccount
  2. Set-AzContext "<subscription ID>"
  3. $resource = Get-AzResource -Name "<resource name>" -ResourceType "Microsoft.Insights/components"
  4. $details = Get-AzResource -ResourceId $resource.ResourceId
  5. $details.Properties.InstrumentationKey

Application Insights リソースの他の多くのプロパティの一覧を表示するには、以下を使用します。To see a list of many other properties of your Application Insights resource, use:

Get-AzApplicationInsights -ResourceGroupName Fabrikam -Name FabrikamProd | Format-List

その他のプロパティについては、以下のコマンドレットを使用して確認できます。Additional properties are available via the cmdlets:

  • Set-AzApplicationInsightsDailyCap
  • Set-AzApplicationInsightsPricingPlan
  • Get-AzApplicationInsightsApiKey
  • Get-AzApplicationInsightsContinuousExport

これらのコマンドレットのパラメーターについては、詳細なドキュメントを参照してください。Refer to the detailed documentation for the parameters for these cmdlets.

データ保有期間を設定するSet the data retention

Application Insights リソースの現在のデータ保有期間を取得するには、OSS ツール ARMClient を使用します。To get the current data retention for your Application Insights resource, you can use the OSS tool ARMClient. (ARMClient の詳細については、David Ebbo および Daniel Bowbyes による記事を参照してください。)ARMClient を使用して現在の保有期間を取得する例を次に示します。(Learn more about ARMClient from articles by David Ebbo and Daniel Bowbyes.) Here's an example using ARMClient, to get the current retention:

armclient GET /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName?api-version=2018-05-01-preview

保有期間を設定するには、次のような PUT コマンドを使用します。To set the retention, the command is a similar PUT:

armclient PUT /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName?api-version=2018-05-01-preview "{location: 'eastus', properties: {'retentionInDays': 365}}"

上記のテンプレートを使用してデータ保有期間を 365 日に設定するには、次のように実行します。To set the data retention to 365 days using the template above, run:

New-AzResourceGroupDeployment -ResourceGroupName "<resource group>" `
       -TemplateFile .\template1.json `
       -retentionInDays 365 `
       -appName myApp

次のスクリプトは、保有期間の変更にも使用できます。The following script can also be used to change retention. Set-ApplicationInsightsRetention.ps1 として保存するには、このスクリプトをコピーします。Copy this script to save as Set-ApplicationInsightsRetention.ps1.

Param(
    [Parameter(Mandatory = $True)]
    [string]$SubscriptionId,

    [Parameter(Mandatory = $True)]
    [string]$ResourceGroupName,

    [Parameter(Mandatory = $True)]
    [string]$Name,

    [Parameter(Mandatory = $True)]
    [string]$RetentionInDays
)
$ErrorActionPreference = 'Stop'
if (-not (Get-Module Az.Accounts)) {
    Import-Module Az.Accounts
}
$azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
if (-not $azProfile.Accounts.Count) {
    Write-Error "Ensure you have logged in before calling this function."    
}
$currentAzureContext = Get-AzContext
$profileClient = New-Object Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient($azProfile)
$token = $profileClient.AcquireAccessToken($currentAzureContext.Tenant.TenantId)
$UserToken = $token.AccessToken
$RequestUri = "https://management.azure.com/subscriptions/$($SubscriptionId)/resourceGroups/$($ResourceGroupName)/providers/Microsoft.Insights/components/$($Name)?api-version=2015-05-01"
$Headers = @{
    "Authorization"         = "Bearer $UserToken"
    "x-ms-client-tenant-id" = $currentAzureContext.Tenant.TenantId
}
## Get Component object via ARM
$GetResponse = Invoke-RestMethod -Method "GET" -Uri $RequestUri -Headers $Headers 

## Update RetentionInDays property
if($($GetResponse.properties | Get-Member "RetentionInDays"))
{
    $GetResponse.properties.RetentionInDays = $RetentionInDays
}
else
{
    $GetResponse.properties | Add-Member -Type NoteProperty -Name "RetentionInDays" -Value $RetentionInDays
}
## Upsert Component object via ARM
$PutResponse = Invoke-RestMethod -Method "PUT" -Uri "$($RequestUri)" -Headers $Headers -Body $($GetResponse | ConvertTo-Json) -ContentType "application/json"
$PutResponse

このスクリプトを使用して次のことを行えます。This script can then be used as:

Set-ApplicationInsightsRetention `
        [-SubscriptionId] <String> `
        [-ResourceGroupName] <String> `
        [-Name] <String> `
        [-RetentionInDays <Int>]

1 日の上限を設定するSet the daily cap

1 日あたりの上限のプロパティを取得するには、Set-AzApplicationInsightsPricingPlan コマンドレットを使用します。To get the daily cap properties, use the Set-AzApplicationInsightsPricingPlan cmdlet:

Set-AzApplicationInsightsDailyCap -ResourceGroupName <resource group> -Name <resource name> | Format-List

1 日あたりの上限のプロパティを設定するには、同じコマンドレットを使用します。To set the daily cap properties, use same cmdlet. たとえば、上限を 300 GB/日に設定するには、以下のようにします。For instance, to set the cap to 300 GB/day,

Set-AzApplicationInsightsDailyCap -ResourceGroupName <resource group> -Name <resource name> -DailyCapGB 300

料金プランを設定するSet the pricing plan

現在の料金プランを取得するには、Set-AzApplicationInsightsPricingPlan コマンドレットを使用します。To get current pricing plan, use the Set-AzApplicationInsightsPricingPlan cmdlet:

Set-AzApplicationInsightsPricingPlan -ResourceGroupName <resource group> -Name <resource name> | Format-List

料金プランを設定するには、-PricingPlan を指定して、同じコマンドレットを使用します。To set the pricing plan, use same cmdlet with the -PricingPlan specified:

Set-AzApplicationInsightsPricingPlan -ResourceGroupName <resource group> -Name <resource name> -PricingPlan Basic

また、上記の Resource Manager テンプレートを使用して、"microsoft.insights/components" リソースと dependsOn ノードを課金リソースから省略して、既存の Application Insights リソースに対して料金プランを設定することもできます。You can also set the pricing plan on an existing Application Insights resource using the Resource Manager template above, omitting the "microsoft.insights/components" resource and the dependsOn node from the billing resource. たとえば、GB あたりのプラン (以前は Basic プランと呼ばれていました) に設定するには、次のように実行します。For instance, to set it to the Per GB plan (formerly called the Basic plan), run:

        New-AzResourceGroupDeployment -ResourceGroupName "<resource group>" `
               -TemplateFile .\template1.json `
               -priceCode 1 `
               -appName myApp
priceCodepriceCode プランplan
11 GB あたり (以前は Basic プランと呼ばれていました)Per GB (formerly named the Basic plan)
22 ノードごと (以前は Enterprise プランと呼ばれていました)Per Node (formerly name the Enterprise plan)

メトリック アラートの追加Add a metric alert

アプリ リソースと同時にメトリック アラートを設定するには、次のように、テンプレート ファイルにコードをマージします。To set up a metric alert at the same time as your app resource, merge code like this into the template file:

{
    parameters: { ... // existing parameters ...
            "responseTime": {
              "type": "int",
              "defaultValue": 3,
              "minValue": 1,
              "metadata": {
                "description": "Enter response time threshold in seconds."
              }
    },
    variables: { ... // existing variables ...
      // Alert names must be unique within resource group.
      "responseAlertName": "[concat('ResponseTime-', toLower(parameters('appName')))]"
    }, 
    resources: { ... // existing resources ...
     {
      //
      // Metric alert on response time
      //
      "name": "[variables('responseAlertName')]",
      "type": "Microsoft.Insights/alertrules",
      "apiVersion": "2014-04-01",
      "location": "[parameters('appLocation')]",
      // Ensure this resource is created after the app resource:
      "dependsOn": [
        "[resourceId('Microsoft.Insights/components', parameters('appName'))]"
      ],
      "tags": {
        "[concat('hidden-link:', resourceId('Microsoft.Insights/components', parameters('appName')))]": "Resource"
      },
      "properties": {
        "name": "[variables('responseAlertName')]",
        "description": "response time alert",
        "isEnabled": true,
        "condition": {
          "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.ThresholdRuleCondition, Microsoft.WindowsAzure.Management.Mon.Client",
          "odata.type": "Microsoft.Azure.Management.Insights.Models.ThresholdRuleCondition",
          "dataSource": {
            "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.RuleMetricDataSource, Microsoft.WindowsAzure.Management.Mon.Client",
            "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource",
            "resourceUri": "[resourceId('microsoft.insights/components', parameters('appName'))]",
            "metricName": "request.duration"
          },
          "threshold": "[parameters('responseTime')]", //seconds
          "windowSize": "PT15M" // Take action if changed state for 15 minutes
        },
        "actions": [
          {
            "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.RuleEmailAction, Microsoft.WindowsAzure.Management.Mon.Client",
            "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction",
            "sendToServiceOwners": true,
            "customEmails": []
          }
        ]
      }
    }
}

テンプレートを呼び出す際には、必要に応じて、次のパラメーターを追加できます。When you invoke the template, you can optionally add this parameter:

`-responseTime 2`

もちろん、その他のフィールドをパラメーター化することもできます。You can of course parameterize other fields.

その他のアラート ルールのタイプ名と詳しい構成を確認するには、ルールを手動で作成した後、Azure Resource Manager でそれらを調べます。To find out the type names and configuration details of other alert rules, create a rule manually and then inspect it in Azure Resource Manager.

可用性テストの追加Add an availability test

ここでは、(単一ページをテストするための) ping テストの例を示します。This example is for a ping test (to test a single page).

可用性テストは 2 つの部分で構成されます。テスト自体と、エラーを通知するアラートです。There are two parts in an availability test: the test itself, and the alert that notifies you of failures.

アプリを作成するテンプレート ファイルに、次のコードをマージします。Merge the following code into the template file that creates the app.

{
    parameters: { ... // existing parameters here ...
      "pingURL": { "type": "string" },
      "pingText": { "type": "string" , defaultValue: ""}
    },
    variables: { ... // existing variables here ...
      "pingTestName":"[concat('PingTest-', toLower(parameters('appName')))]",
      "pingAlertRuleName": "[concat('PingAlert-', toLower(parameters('appName')), '-', subscription().subscriptionId)]"
    },
    resources: { ... // existing resources here ...
    { //
      // Availability test: part 1 configures the test
      //
      "name": "[variables('pingTestName')]",
      "type": "Microsoft.Insights/webtests",
      "apiVersion": "2014-04-01",
      "location": "[parameters('appLocation')]",
      // Ensure this is created after the app resource:
      "dependsOn": [
        "[resourceId('Microsoft.Insights/components', parameters('appName'))]"
      ],
      "tags": {
        "[concat('hidden-link:', resourceId('Microsoft.Insights/components', parameters('appName')))]": "Resource"
      },
      "properties": {
        "Name": "[variables('pingTestName')]",
        "Description": "Basic ping test",
        "Enabled": true,
        "Frequency": 900, // 15 minutes
        "Timeout": 120, // 2 minutes
        "Kind": "ping", // single URL test
        "RetryEnabled": true,
        "Locations": [
          {
            "Id": "us-va-ash-azr"
          },
          {
            "Id": "emea-nl-ams-azr"
          },
          {
            "Id": "apac-jp-kaw-edge"
          }
        ],
        "Configuration": {
          "WebTest": "[concat('<WebTest   Name=\"', variables('pingTestName'), '\"   Enabled=\"True\"         CssProjectStructure=\"\"    CssIteration=\"\"  Timeout=\"120\"  WorkItemIds=\"\"         xmlns=\"http://microsoft.com/schemas/VisualStudio/TeamTest/2010\"         Description=\"\"  CredentialUserName=\"\"  CredentialPassword=\"\"         PreAuthenticate=\"True\"  Proxy=\"default\"  StopOnError=\"False\"         RecordedResultFile=\"\"  ResultsLocale=\"\">  <Items>  <Request Method=\"GET\"    Version=\"1.1\"  Url=\"', parameters('Url'),   '\" ThinkTime=\"0\"  Timeout=\"300\" ParseDependentRequests=\"True\"         FollowRedirects=\"True\" RecordResult=\"True\" Cache=\"False\"         ResponseTimeGoal=\"0\"  Encoding=\"utf-8\"  ExpectedHttpStatusCode=\"200\"         ExpectedResponseUrl=\"\" ReportingName=\"\" IgnoreHttpStatusCode=\"False\" />        </Items>  <ValidationRules> <ValidationRule  Classname=\"Microsoft.VisualStudio.TestTools.WebTesting.Rules.ValidationRuleFindText, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" DisplayName=\"Find Text\"         Description=\"Verifies the existence of the specified text in the response.\"         Level=\"High\"  ExecutionOrder=\"BeforeDependents\">  <RuleParameters>        <RuleParameter Name=\"FindText\" Value=\"',   parameters('pingText'), '\" />  <RuleParameter Name=\"IgnoreCase\" Value=\"False\" />  <RuleParameter Name=\"UseRegularExpression\" Value=\"False\" />  <RuleParameter Name=\"PassIfTextFound\" Value=\"True\" />  </RuleParameters> </ValidationRule>  </ValidationRules>  </WebTest>')]"
        },
        "SyntheticMonitorId": "[variables('pingTestName')]"
      }
    },

    {
      //
      // Availability test: part 2, the alert rule
      //
      "name": "[variables('pingAlertRuleName')]",
      "type": "Microsoft.Insights/alertrules",
      "apiVersion": "2014-04-01",
      "location": "[parameters('appLocation')]", 
      "dependsOn": [
        "[resourceId('Microsoft.Insights/webtests', variables('pingTestName'))]"
      ],
      "tags": {
        "[concat('hidden-link:', resourceId('Microsoft.Insights/components', parameters('appName')))]": "Resource",
        "[concat('hidden-link:', resourceId('Microsoft.Insights/webtests', variables('pingTestName')))]": "Resource"
      },
      "properties": {
        "name": "[variables('pingAlertRuleName')]",
        "description": "alert for web test",
        "isEnabled": true,
        "condition": {
          "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.LocationThresholdRuleCondition, Microsoft.WindowsAzure.Management.Mon.Client",
          "odata.type": "Microsoft.Azure.Management.Insights.Models.LocationThresholdRuleCondition",
          "dataSource": {
            "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.RuleMetricDataSource, Microsoft.WindowsAzure.Management.Mon.Client",
            "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource",
            "resourceUri": "[resourceId('microsoft.insights/webtests', variables('pingTestName'))]",
            "metricName": "GSMT_AvRaW"
          },
          "windowSize": "PT15M", // Take action if changed state for 15 minutes
          "failedLocationCount": 2
        },
        "actions": [
          {
            "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.RuleEmailAction, Microsoft.WindowsAzure.Management.Mon.Client",
            "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction",
            "sendToServiceOwners": true,
            "customEmails": []
          }
        ]
      }
    }
}

他のテスト場所のコードを見つけたり、より複雑な Web テストの作成を自動化するには、サンプルを手動で作成した後、Azure Resource Manager からコードをパラメーター化します。To discover the codes for other test locations, or to automate the creation of more complex web tests, create an example manually and then parameterize the code from Azure Resource Manager.

リソースの追加Add more resources

他のリソース (任意の種類) の作成を自動化するには、サンプルを手動で作成した後、Azure Resource Manager からそのコードをパラメーター化します。To automate the creation of any other resource of any kind, create an example manually, and then copy and parameterize its code from Azure Resource Manager.

  1. Azure リソース マネージャーを開きます。Open Azure Resource Manager. subscriptions/resourceGroups/<your resource group>/providers/Microsoft.Insights/components に移動して、目的のアプリケーション リソースに移動します。Navigate down through subscriptions/resourceGroups/<your resource group>/providers/Microsoft.Insights/components, to your application resource.

    Azure リソース エクスプローラーのナビゲーション

    コンポーネント はアプリケーションを表示するための基本的な Application Insights リソースです。Components are the basic Application Insights resources for displaying applications. 関連するアラート ルールおよび可用性 Web テストに対して別々 のリソースがあります。There are separate resources for the associated alert rules and availability web tests.

  2. コンポーネントの JSON を template1.jsonの適切な場所にコピーします。Copy the JSON of the component into the appropriate place in template1.json.

  3. 次のプロパティを削除します。Delete these properties:

    • id
    • InstrumentationKey
    • CreationDate
    • TenantId
  4. webtestsalertrules セクションを開き、個々の項目の JSON をテンプレートにコピーします。Open the webtests and alertrules sections and copy the JSON for individual items into your template. (webtests または alertrules ノードからコピーせず、その下の項目に移動してください。)(Don't copy from the webtests or alertrules nodes: go into the items under them.)

    各 Web テストには、関連するアラート ルールがあるため、両方をコピーする必要があります。Each web test has an associated alert rule, so you have to copy both of them.

    メトリックでのアラートを含めることもできます。You can also include alerts on metrics. メトリック名Metric names.

  5. 各リソースに次の行を挿入します。Insert this line in each resource:

    "apiVersion": "2015-05-01",

テンプレートのパラメーター化Parameterize the template

ここでは、特定の名前をパラメーターで置き換える必要があります。Now you have to replace the specific names with parameters. テンプレートをパラメーター化するには、一連のヘルパー関数を使用して式を記述します。To parameterize a template, you write expressions using a set of helper functions.

文字列の一部のみをパラメーター化することはできません。そのため、concat() を使用して、文字列を構築します。You can't parameterize just part of a string, so use concat() to build strings.

次に、作成する代替文字列の例を示します。Here are examples of the substitutions you'll want to make. それぞれの代替文字列は、複数回現れます。There are several occurrences of each substitution. 作成するテンプレートには、その他のものが必要になる場合があります。You might need others in your template. これらの例では、テンプレートの上部で定義したパラメーターと変数を使用しています。These examples use the parameters and variables we defined at the top of the template.

findfind 置き換えreplace with
"hidden-link:/subscriptions/.../../components/MyAppName" "[concat('hidden-link:',
resourceId('microsoft.insights/components',
parameters('appName')))]"
"/subscriptions/.../../alertrules/myAlertName-myAppName-subsId", "[resourceId('Microsoft.Insights/alertrules', variables('alertRuleName'))]",
"/subscriptions/.../../webtests/myTestName-myAppName", "[resourceId('Microsoft.Insights/webtests', parameters('webTestName'))]",
"myWebTest-myAppName" "[variables(testName)]"'
"myTestName-myAppName-subsId" "[variables('alertRuleName')]"
"myAppName" "[parameters('appName')]"
"myappname" (小文字)"myappname" (lower case) "[toLower(parameters('appName'))]"
"<WebTest Name=\"myWebTest\" ...
Url=\"http://fabrikam.com/home\" ...>"
[concat('<WebTest Name=\"',
parameters('webTestName'),
'\" ... Url=\"', parameters('Url'),
'\"...>')]"

リソース間の依存関係の設定Set dependencies between the resources

Azure では、厳密な順序でリソースを設定する必要があります。Azure should set up the resources in strict order. 次の設定を開始する前に、確実に 1 つの設定を完了するために、依存関係の行を追加します。To make sure one setup completes before the next begins, add dependency lines:

  • 可用性テスト リソースIn the availability test resource:

    "dependsOn": ["[resourceId('Microsoft.Insights/components', parameters('appName'))]"],

  • 可用性テストのアラート リソースIn the alert resource for an availability test:

    "dependsOn": ["[resourceId('Microsoft.Insights/webtests', variables('testName'))]"],

次の手順Next steps

自動化に関するその他の記事:Other automation articles: