Hantera Application Insights-resurser med hjälp av PowerShellManage Application Insights resources using PowerShell

Anteckning

Den här artikeln har uppdaterats till att använda den nya Azure PowerShell Az-modulen.This article has been updated to use the new Azure PowerShell Az module. Du kan fortfarande använda modulen AzureRM som kommer att fortsätta att ta emot felkorrigeringar fram till december 2020 eller längre.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Mer information om den nya Az-modulen och AzureRM-kompatibilitet finns i Introduktion till den nya Azure PowerShell Az-modulen.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Instruktioner för installation av Az-modulen finns i Installera Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Den här artikeln visar hur du automatiserar skapandet och uppdateringen av Application Insights resurser automatiskt med hjälp av Azure Resource Management.This article shows you how to automate the creation and update of Application Insights resources automatically by using Azure Resource Management. Du kan till exempel göra detta som en del av en build-process.You might, for example, do so as part of a build process. Tillsammans med den grundläggande Application Insights-resursen kan du skapa tillgänglighets webbtester, konfigurera aviseringar, ange pris schemaoch skapa andra Azure-resurser.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.

Nyckeln för att skapa dessa resurser är JSON-mallar för Azure Resource Manager.The key to creating these resources is JSON templates for Azure Resource Manager. Den grundläggande proceduren är: Ladda ned JSON-definitionerna för befintliga resurser. Parameterisera vissa värden, t. ex. namn; och kör sedan mallen när du vill skapa en ny resurs.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. Du kan paketera flera resurser för att skapa dem i en enda Go-till exempel en app monitor med tillgänglighets test, aviseringar och lagring för kontinuerlig export.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. Det finns vissa nyanser till vissa av parameterizations, som vi förklarar här.There are some subtleties to some of the parameterizations, which we'll explain here.

Konfiguration vid ett tillfälleOne-time setup

Om du inte har använt PowerShell med din Azure-prenumeration tidigare än:If you haven't used PowerShell with your Azure subscription before:

Installera Azure PowerShell-modulen på den dator där du vill köra skripten:Install the Azure Powershell module on the machine where you want to run the scripts:

  1. Installera installations programmet för Microsoft Web Platform (V5 eller högre).Install Microsoft Web Platform Installer (v5 or higher).
  2. Använd den för att installera Microsoft Azure PowerShell.Use it to install Microsoft Azure Powershell.

Förutom att använda Resource Manager-mallar finns det en omfattande uppsättning Application Insights PowerShell-cmdlets, vilket gör det enkelt att konfigurera Application Insights resurser program mässigt.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. Funktionerna som aktive ras av cmdletarna är:The capabilities enabled by the cmdlets include:

  • Skapa och ta bort Application Insights resurserCreate and delete Application Insights resources
  • Hämta listor över Application Insights resurser och deras egenskaperGet lists of Application Insights resources and their properties
  • Skapa och hantera kontinuerlig exportCreate and manage Continuous Export
  • Skapa och hantera program nycklarCreate and manage Application Keys
  • Ange dagligt takSet the Daily Cap
  • Ange pris PlanenSet the Pricing Plan

Skapa Application Insights-resurser med hjälp av en PowerShell-cmdletCreate Application Insights resources using a PowerShell cmdlet

Så här skapar du en ny Application Insights-resurs i Azures Data Center för USA med cmdleten New-AzApplicationInsights :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

Skapa Application Insights resurser med en Resource Manager-mallCreate Application Insights resources using a Resource Manager template

Så här skapar du en ny Application Insights resurs med hjälp av en Resource Manager-mall.Here's how to create a new Application Insights resource using a Resource Manager template.

Skapa Azure Resource Manager-mallenCreate the Azure Resource Manager template

Skapa en ny. JSON-fil – låt oss anropa den template1.json i det här exemplet.Create a new .json file - let's call it template1.json in this example. Kopiera det här innehållet till det: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')]",
                    "retentionInDays": "[parameters('retentionInDays')]"
                },
                "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')]",
                    "DataVolumeCap": {
                        "Cap": "[parameters('dailyQuota')]",
                        "WarningThreshold": "[parameters('warningThreshold')]",
                        "ResetTime": "[parameters('dailyQuotaResetTime')]"
                    }
                }
            }
        ]
    }

Använd Resource Manager-mallen för att skapa en ny Application Insights resursUse the Resource Manager template to create a new Application Insights resource

  1. Logga in på Azure med hjälp av $Connect-AzAccount i PowerShellIn PowerShell, sign in to Azure using $Connect-AzAccount

  2. Ange din kontext till en prenumeration med Set-AzContext "<subscription ID>"Set your context to a subscription with Set-AzContext "<subscription ID>"

  3. Kör en ny distribution för att skapa en ny Application Insights-resurs:Run a new deployment to create a new Application Insights resource:

        New-AzResourceGroupDeployment -ResourceGroupName Fabrikam `
               -TemplateFile .\template1.json `
               -appName myNewApp
    
    
    • -ResourceGroupName är den grupp där du vill skapa de nya resurserna.-ResourceGroupName is the group where you want to create the new resources.
    • -TemplateFile måste inträffa innan de anpassade parametrarna.-TemplateFile must occur before the custom parameters.
    • -appName namnet på den resurs som ska skapas.-appName The name of the resource to create.

Du kan lägga till andra parametrar – du hittar deras beskrivningar i avsnittet parametrar i mallen.You can add other parameters - you'll find their descriptions in the parameters section of the template.

Hämta Instrumentation-nyckelnGet the instrumentation key

När du har skapat en program resurs vill du ha Instrumentation-nyckeln: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

Om du vill se en lista över många andra egenskaper för din Application Insights-resurs använder du:To see a list of many other properties of your Application Insights resource, use:

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

Ytterligare egenskaper är tillgängliga via cmdletarna:Additional properties are available via the cmdlets:

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

Se den detaljerade dokumentationen för parametrarna för dessa cmdletar.Refer to the detailed documentation for the parameters for these cmdlets.

Ange data kvarhållningSet the data retention

Om du vill hämta aktuell datakvarhållning för din Application Insights-resurs kan du använda OSS-verktyget ARMClient.To get the current data retention for your Application Insights resource, you can use the OSS tool ARMClient. (Läs mer om ARMClient från artiklar av David Ebbo och Daniel Bowbyes.) Här är ett exempel som använder ARMClientför att hämta aktuell kvarhållning:(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

Om du vill ställa in kvarhållning är kommandot ett liknande sätt: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}}"

Om du vill ange data kvarhållning till 365 dagar med mallen ovan kör du: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

Följande skript kan även användas för att ändra kvarhållning.The following script can also be used to change retention. Kopiera det här skriptet för att spara som 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

Skriptet kan sedan användas som:This script can then be used as:

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

Ange dagligt takSet the daily cap

Använd cmdleten set-AzApplicationInsightsPricingPlan för att hämta egenskaperna för dagligt tak:To get the daily cap properties, use the Set-AzApplicationInsightsPricingPlan cmdlet:

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

Använd samma cmdlet för att ange egenskaper för dagligt tak.To set the daily cap properties, use same cmdlet. Om du t. ex. vill ange 300 GB/dag för CapFor instance, to set the cap to 300 GB/day,

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

Ange pris PlanenSet the pricing plan

Använd cmdleten set-AzApplicationInsightsPricingPlan för att hämta aktuell pris sättnings plan:To get current pricing plan, use the Set-AzApplicationInsightsPricingPlan cmdlet:

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

Ange pris Planen genom att använda samma cmdlet med den angivna -PricingPlan:To set the pricing plan, use same cmdlet with the -PricingPlan specified:

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

Du kan också ställa in pris Planen för en befintlig Application Insights resurs med hjälp av Resource Manager-mallen ovan, utan att använda resursen "Microsoft. Insights/Components" och noden dependsOn från fakturerings resursen.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. Om du till exempel vill ange den till per GB-plan (tidigare kallat bas planen) kör du: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 planeraplan
11 Per GB (tidigare kallat Basic-planen)Per GB (formerly named the Basic plan)
22 Per nod (tidigare namn företags planen)Per Node (formerly name the Enterprise plan)

Lägg till en måtta aviseringAdd a metric alert

Om du vill automatisera skapandet av mått aviseringar läser du artikeln om mall för mått varningarTo automate the creation of metric alerts consult the metric alerts template article

Lägg till ett tillgänglighets testAdd an availability test

Om du vill automatisera tillgänglighets test läser du artikeln om mall för mått varningar.To automate availability tests consult the metric alerts template article.

Lägg till fler resurserAdd more resources

Om du vill automatisera skapandet av någon annan resurs av någon typ skapar du ett exempel manuellt och kopierar sedan och Parameterisera koden från 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. Öppna Azure Resource Manager.Open Azure Resource Manager. Navigera till program resursen genom att gå till 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.

    Navigering i Azure Resource Explorer

    Komponenterna är de grundläggande Application Insights resurserna för att visa program.Components are the basic Application Insights resources for displaying applications. Det finns separata resurser för tillhör ande aviserings regler och webb test för tillgänglighet.There are separate resources for the associated alert rules and availability web tests.

  2. Kopiera JSON för komponenten till lämplig plats i template1.json.Copy the JSON of the component into the appropriate place in template1.json.

  3. Ta bort följande egenskaper:Delete these properties:

    • id
    • InstrumentationKey
    • CreationDate
    • TenantId
  4. Öppna avsnitten webtests och alertrules och kopiera JSON för enskilda objekt till din mall.Open the webtests and alertrules sections and copy the JSON for individual items into your template. (Kopiera inte från webtests eller alertrules noderna: gå till objekten under dem.)(Don't copy from the webtests or alertrules nodes: go into the items under them.)

    Varje webb test har en associerad aviserings regel, så du måste kopiera båda.Each web test has an associated alert rule, so you have to copy both of them.

    Du kan även inkludera aviseringar för mått.You can also include alerts on metrics. Mått namn.Metric names.

  5. Infoga den här raden i varje resurs:Insert this line in each resource:

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

Parameterisera mallenParameterize the template

Nu måste du ersätta de angivna namnen med parametrar.Now you have to replace the specific names with parameters. Om du vill Parameterisera en mallskriver du uttryck med hjälp av en uppsättning hjälp funktioner.To parameterize a template, you write expressions using a set of helper functions.

Du kan inte Parameterisera bara en del av en sträng, så Använd concat() för att bygga strängar.You can't parameterize just part of a string, so use concat() to build strings.

Här följer några exempel på de ersättningar du vill göra.Here are examples of the substitutions you'll want to make. Det finns flera förekomster av varje ersättning.There are several occurrences of each substitution. Du kan behöva andra i din mall.You might need others in your template. I de här exemplen används de parametrar och variabler som vi definierade överst i mallen.These examples use the parameters and variables we defined at the top of the template.

findfind Ersätt medreplace 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" (gemen)"myappname" (lower case) "[toLower(parameters('appName'))]"
"<WebTest Name=\"myWebTest\" ...
Url=\"http://fabrikam.com/home\" ...>"
[concat('<WebTest Name=\"',
parameters('webTestName'),
'\" ... Url=\"', parameters('Url'),
'\"...>')]"

Ange beroenden mellan resursernaSet dependencies between the resources

Azure bör konfigurera resurserna i strikt ordning.Azure should set up the resources in strict order. För att se till att en installation är slutförd innan nästa börjar lägger du till beroende linjer:To make sure one setup completes before the next begins, add dependency lines:

  • I tillgänglighets test resursen:In the availability test resource:

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

  • I aviserings resursen för ett tillgänglighets test:In the alert resource for an availability test:

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

Nästa stegNext steps

Andra automatiserings artiklar:Other automation articles: