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:
- Installeer microsoft Web Platform Installer (v5 of hoger).
- 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
Meld u in PowerShell aan bij Azure met behulp van
$Connect-AzAccount
.Stel uw context in op een abonnement met
Set-AzContext "<subscription ID>"
.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:
- Meld u aan bij Azure met behulp van
$Connect-AzAccount
. - Stel uw context in op een abonnement met
Set-AzContext "<subscription ID>"
. - Gebruik vervolgens:
$resource = Get-AzResource -Name "<resource name>" -ResourceType "Microsoft.Insights/components"
$details = Get-AzResource -ResourceId $resource.ResourceId
$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.
Open Azure Resource Manager. Navigeer omlaag
subscriptions/resourceGroups/<your resource group>/providers/Microsoft.Insights/components
naar uw toepassingsresource.Onderdelen zijn de basis-Application Insights-resources voor het weergeven van toepassingen. Er zijn afzonderlijke resources voor de bijbehorende waarschuwingsregels en webtests voor beschikbaarheid.
Kopieer de JSON van het onderdeel naar de juiste plaats in
template1.json
.Verwijder deze eigenschappen:
id
InstrumentationKey
CreationDate
TenantId
Open de
webtests
secties enalertrules
kopieer de JSON voor afzonderlijke items naar uw sjabloon. Kopieer niet van dewebtests
ofalertrules
knooppunten. Ga naar de items eronder.Elke webtest heeft een bijbehorende waarschuwingsregel, dus u moet beide kopiëren.
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:
- Create an Application Insights resource (Een Application Insights-resource maken)
- Webtests maken.
- Azure Diagnostics verzenden naar Application Insights.
- Maak releaseaantekeningen.