Application Insights-resources beheren met behulp van PowerShell

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

In dit artikel leest u hoe u het maken en bijwerken van Application Insights-resources automatisch automatiseert met behulp van Azure Resource Manager. U kunt dit bijvoorbeeld doen als onderdeel van een buildproces. Samen met de eenvoudige Application Insights-resource kunt u webtests voor beschikbaarheid maken, waarschuwingen instellen, het prijsschema instellen en andere Azure-resources maken.

De sleutel voor het maken van deze resources is JSON-sjablonen voor Resource Manager. De basisprocedure is:

  • Download de JSON-definities van bestaande resources.
  • Bepaalde waarden, zoals namen, parameteriseren.
  • Voer de sjabloon uit wanneer u een nieuwe resource wilt maken.

U kunt verschillende resources samen verpakken om ze allemaal in één gebruik te maken. U kunt bijvoorbeeld een app-monitor maken met beschikbaarheidstests, waarschuwingen en opslag voor continue export. Er zijn enkele subtiliteiten voor enkele van de parameters, die hier worden uitgelegd.

Eenmalige installatie

Als u PowerShell nog niet eerder met uw Azure-abonnement hebt gebruikt, installeert u de Azure PowerShell-module op de computer waarop u de scripts wilt uitvoeren:

  1. Installeer microsoft Web Platform Installer (v5 of hoger).
  2. Gebruik deze om Azure PowerShell te installeren.

Naast het gebruik van Azure Resource Manager-sjablonen (ARM-sjablonen) is er een uitgebreide set Application Insights PowerShell-cmdlets. Met deze cmdlets kunt u Application Insights-resources programmatisch eenvoudig configureren. U kunt de mogelijkheden die door de cmdlets zijn ingeschakeld, gebruiken voor het volgende:

  • Application Insights-resources maken en verwijderen.
  • Lijsten met Application Insights-resources en hun eigenschappen ophalen.
  • Continue export maken en beheren.
  • Toepassingssleutels maken en beheren.
  • Stel de daglimiet in.
  • Stel het prijsplan in.

Application Insights-resources maken met behulp van een PowerShell-cmdlet

Ga als volgt te werk om een nieuwe Application Insights-resource te maken in het Azure VS-datacenter - oost met behulp van de cmdlet New-AzApplicationInsights :

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

Application Insights-resources maken met behulp van een ARM-sjabloon

U kunt als volgt een nieuwe Application Insights-resource maken met behulp van een ARM-sjabloon.

Het ARM-sjabloon maken

Maak een nieuw .json-bestand. Laten we het template1.json in dit voorbeeld noemen. Kopieer deze inhoud naar deze inhoud:

    {
        "$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": 0,
                "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')]",
                    "ImmediatePurgeDataOn30Days": "[parameters('ImmediatePurgeDataOn30Days')]"
                },
                "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')]"
                    }
                }
            }
        ]
    }

De ARM-sjabloon gebruiken om een nieuwe Application Insights-resource te maken

  1. Meld u in PowerShell aan bij Azure met behulp van $Connect-AzAccount.

  2. Stel uw context in op een abonnement met Set-AzContext "<subscription ID>".

  3. Voer een nieuwe implementatie uit om een nieuwe Application Insights-resource te maken:

        New-AzResourceGroupDeployment -ResourceGroupName Fabrikam `
               -TemplateFile .\template1.json `
               -appName myNewApp
    
    
    • -ResourceGroupName is de groep waarin u de nieuwe resources wilt maken.
    • -TemplateFile moet plaatsvinden vóór de aangepaste parameters.
    • -appName is de naam van de resource die moet worden gemaakt.

U kunt andere parameters toevoegen. U vindt de bijbehorende beschrijvingen in de sectie parameters van de sjabloon.

De instrumentatiesleutel ophalen

Nadat u een toepassingsresource hebt gemaakt, hebt u de instrumentatiesleutel nodig:

  1. Meld u aan bij Azure met behulp van $Connect-AzAccount.
  2. Stel uw context in op een abonnement met Set-AzContext "<subscription ID>".
  3. Gebruik vervolgens:
    1. $resource = Get-AzResource -Name "<resource name>" -ResourceType "Microsoft.Insights/components"
    2. $details = Get-AzResource -ResourceId $resource.ResourceId
    3. $details.Properties.InstrumentationKey

Als u een lijst met vele andere eigenschappen van uw Application Insights-resource wilt bekijken, gebruikt u:

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

Er zijn meer eigenschappen beschikbaar via de cmdlets:

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

Raadpleeg de gedetailleerde documentatie voor de parameters voor deze cmdlets.

Notitie

Op 31 maart 2025 eindigt de ondersteuning voor opname van instrumentatiesleutels. Opname van instrumentatiesleutels blijft werken, maar we bieden geen updates of ondersteuning meer voor de functie. Overgang naar verbindingsreeks s om te profiteren van nieuwe mogelijkheden.

De gegevensretentie instellen

U kunt de volgende drie methoden gebruiken om de gegevensretentie programmatisch in te stellen voor een Application Insights-resource.

Gegevensretentie instellen met behulp van PowerShell-opdrachten

Hier volgt een eenvoudige set PowerShell-opdrachten voor het instellen van de gegevensretentie voor uw Application Insights-resource:

$Resource = Get-AzResource -ResourceType Microsoft.Insights/components -ResourceGroupName MyResourceGroupName -ResourceName MyResourceName
$Resource.Properties.RetentionInDays = 365
$Resource | Set-AzResource -Force

Gegevensretentie instellen met REST

Als u de huidige gegevensretentie voor uw Application Insights-resource wilt ophalen, kunt u het OSS-hulpprogramma ARMClient gebruiken. Meer informatie over ARMClient uit artikelen van David Ebbo en Daniel Bowbyes. Hier volgt een voorbeeld dat wordt gebruikt ARMClient om de huidige retentie op te halen:

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

Als u de retentie wilt instellen, is de opdracht een vergelijkbare 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}}"

Als u de gegevensretentie wilt instellen op 365 dagen met behulp van de voorgaande sjabloon, voert u het volgende uit:

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

Gegevensretentie instellen met behulp van een PowerShell-script

Het volgende script kan ook worden gebruikt om de retentie te wijzigen. Kopieer dit script om het op te slaan als 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

Dit script kan vervolgens worden gebruikt als:

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

De daglimiet instellen

Gebruik de cmdlet Set-AzApplicationInsightsPricingPlan om de dagelijkse limieteigenschappen op te halen:

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

Gebruik dezelfde cmdlet om de eigenschappen van de dagelijkse limiet in te stellen. Als u bijvoorbeeld de limiet wilt instellen op 300 GB per dag:

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

U kunt ARMClient ook gebruiken om dagelijkse limietparameters op te halen en in te stellen. Als u de huidige waarden wilt ophalen, gebruikt u:

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

De dagelijkse tijd voor het opnieuw instellen van de limiet instellen

Als u de dagelijkse tijd voor het opnieuw instellen van de limiet wilt instellen, kunt u ARMClient gebruiken. Hier volgt een voorbeeld van ARMClient het instellen van de tijd voor opnieuw instellen op een nieuw uur. In dit voorbeeld ziet u 12:00 UTC:

armclient PUT /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName/CurrentBillingFeatures?api-version=2018-05-01-preview "{'CurrentBillingFeatures':['Basic'],'DataVolumeCap':{'Cap':100,'WarningThreshold':80,'ResetTime':12}}"

Het prijsplan instellen

Gebruik de cmdlet Set-AzApplicationInsightsPricingPlan om het huidige prijsplan op te halen:

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

Als u het prijsplan wilt instellen, gebruikt u dezelfde cmdlet met de -PricingPlan opgegeven:

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

U kunt het prijsplan ook instellen voor een bestaande Application Insights-resource met behulp van de voorgaande ARM-sjabloon, waarbij de resource microsoft.insights/components en het dependsOn knooppunt van de factureringsresource worden weggelaten. Als u dit bijvoorbeeld wilt instellen op het Per GB-abonnement (voorheen het Basic-abonnement genoemd), voert u het volgende uit:

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

Dit priceCode is gedefinieerd als:

priceCode Plannen
1 Per GB (voorheen het Basic-abonnement genoemd)
2 Per knooppunt (voorheen de naam van het Enterprise-abonnement)

Ten slotte kunt u ARMClient gebruiken om prijsplannen en dagelijkse limietparameters op te halen en in te stellen. Als u de huidige waarden wilt ophalen, gebruikt u:

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

U kunt al deze parameters instellen met behulp van:

armclient PUT /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName/CurrentBillingFeatures?api-version=2018-05-01-preview
"{'CurrentBillingFeatures':['Basic'],'DataVolumeCap':{'Cap':200,'ResetTime':12,'StopSendNotificationWhenHitCap':true,'WarningThreshold':90,'StopSendNotificationWhenHitThreshold':true}}"

Met deze code wordt de dagelijkse limiet ingesteld op 200 GB per dag, wordt de tijd voor het opnieuw instellen van de dagelijkse limiet ingesteld op 12:00 UTC, worden e-mailberichten verzonden wanneer de limiet wordt bereikt en wordt voldaan aan het waarschuwingsniveau en wordt de waarschuwingsdrempel ingesteld op 90% van de limiet.

Een waarschuwing voor metrische gegevens toevoegen

Zie het sjabloonartikel met metrische waarschuwingen om het maken van metrische waarschuwingen te automatiseren.

Een beschikbaarheidstest toevoegen

Als u beschikbaarheidstests wilt automatiseren, raadpleegt u het sjabloonartikel met waarschuwingen voor metrische gegevens.

Meer resources toevoegen

Als u het maken van een andere resource van elk type wilt automatiseren, maakt u handmatig een voorbeeld en kopieert en parameteriseert u de bijbehorende code vanuit Azure Resource Manager.

  1. Open Azure Resource Manager. Navigeer omlaag subscriptions/resourceGroups/<your resource group>/providers/Microsoft.Insights/components naar uw toepassingsresource.

    Screenshot that shows navigation in Azure Resource Explorer.

    Onderdelen zijn de basis-Application Insights-resources voor het weergeven van toepassingen. Er zijn afzonderlijke resources voor de bijbehorende waarschuwingsregels en webtests voor beschikbaarheid.

  2. Kopieer de JSON van het onderdeel naar de juiste plaats in template1.json.

  3. Verwijder deze eigenschappen:

    • id
    • InstrumentationKey
    • CreationDate
    • TenantId
  4. Open de webtests secties en alertrules kopieer de JSON voor afzonderlijke items naar uw sjabloon. Kopieer niet van de webtests of alertrules knooppunten. Ga naar de items eronder.

    Elke webtest heeft een bijbehorende waarschuwingsregel, dus u moet beide kopiëren.

  5. Voeg deze regel in elke resource in:

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

De sjabloon parameteriseren

Nu moet u de specifieke namen vervangen door parameters. Als u een sjabloon wilt parameteriseren, schrijft u expressies met behulp van een set helperfuncties.

U kunt niet alleen een deel van een tekenreeks parameteriseren, dus gebruik concat() dit om tekenreeksen te maken.

Hier volgen voorbeelden van de vervangingen die u wilt maken. Er zijn verschillende exemplaren van elke vervanging. Mogelijk hebt u andere personen in uw sjabloon nodig. In deze voorbeelden worden de parameters en variabelen gebruikt die boven aan de sjabloon zijn gedefinieerd.

Zoeken 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" (kleine letter) "[toLower(parameters('appName'))]"
"<WebTest Name=\"myWebTest\" ...
Url=\"http://fabrikam.com/home\" ...>"
[concat('<WebTest Name=\"',
parameters('webTestName'),
'\" ... Url=\"', parameters('Url'),
'\"...>')]"

Afhankelijkheden tussen de resources instellen

Azure moet de resources in strikte volgorde instellen. Voeg afhankelijkheidslijnen toe om ervoor te zorgen dat één installatie is voltooid voordat de volgende begint:

  • In de beschikbaarheidstestresource:

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

  • In de waarschuwingsresource voor een beschikbaarheidstest:

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

Volgende stappen

Zie de volgende andere automatiseringsartikelen: