Správa prostředků Application Insights pomocí PowerShellu
Poznámka:
Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
V tomto článku se dozvíte, jak automatizovat vytváření a aktualizaci prostředků Application Insights automaticky pomocí Azure Resource Manageru. Můžete to například udělat jako součást procesu sestavení. Kromě základního prostředku Application Insights můžete vytvářet webové testy dostupnosti, nastavovat výstrahy, nastavovat cenové schéma a vytvářet další prostředky Azure.
Klíčem k vytvoření těchto prostředků jsou šablony JSON pro Resource Manager. Základní postup je:
- Stáhněte si definice JSON existujících prostředků.
- Parametrizovat určité hodnoty, například názvy.
- Šablonu spusťte pokaždé, když chcete vytvořit nový prostředek.
Můžete zabalit několik prostředků dohromady a vytvořit je všechny najednou. Můžete například vytvořit monitorování aplikace s testy dostupnosti, upozorněními a úložištěm pro průběžný export. U některých parametrizací existuje několik drobných vlastností, které zde vysvětlíme.
Jednorázové nastavení
Pokud jste před předplatným Azure nepoužívali PowerShell, nainstalujte modul Azure PowerShell na počítač, na kterém chcete skripty spustit:
- Instalace instalačního programu Webová platforma Microsoft (verze 5 nebo vyšší)
- Použijte ho k instalaci Azure PowerShellu.
Kromě použití šablon Azure Resource Manageru (šablon ARM) je k dispozici bohatá sada rutin PowerShellu pro Application Insights. Tyto rutiny usnadňují programově konfiguraci prostředků Application Insights. Funkce povolené rutinami můžete použít k:
- Vytváření a odstraňování prostředků Application Insights
- Získejte seznamy prostředků Application Insights a jejich vlastností.
- Vytváření a správa průběžného exportu
- Vytváření a správa klíčů aplikací
- Nastavte denní limit.
- Nastavte cenový plán.
Vytvoření prostředků Application Insights pomocí rutiny PowerShellu
Tady je postup vytvoření nového prostředku Application Insights v datacentru Azure East US pomocí rutiny New-AzApplicationInsights :
New-AzApplicationInsights -ResourceGroupName <resource group> -Name <resource name> -location eastus
Vytváření prostředků Application Insights pomocí šablony ARM
Tady je postup vytvoření nového prostředku Application Insights pomocí šablony ARM.
Vytvoření šablony ARM
Vytvořte nový soubor .json. Pojďme to template1.json
v tomto příkladu pojmenovat. Zkopírujte do něj tento obsah:
{
"$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')]"
}
}
}
]
}
Vytvoření nového prostředku Application Insights pomocí šablony ARM
V PowerShellu se přihlaste k Azure pomocí .
$Connect-AzAccount
Nastavte kontext na předplatné pomocí
Set-AzContext "<subscription ID>"
.Spuštěním nového nasazení vytvořte nový prostředek Application Insights:
New-AzResourceGroupDeployment -ResourceGroupName Fabrikam ` -TemplateFile .\template1.json ` -appName myNewApp
-ResourceGroupName
je skupina, ve které chcete vytvořit nové prostředky.-TemplateFile
musí nastat před vlastními parametry.-appName
je název prostředku, který se má vytvořit.
Můžete přidat další parametry. Jejich popisy najdete v části parametrů šablony.
Získání klíče instrumentace
Po vytvoření prostředku aplikace chcete instrumentační klíč:
- Přihlaste se k Azure pomocí .
$Connect-AzAccount
- Nastavte kontext na předplatné pomocí
Set-AzContext "<subscription ID>"
. - Pak použijte:
$resource = Get-AzResource -Name "<resource name>" -ResourceType "Microsoft.Insights/components"
$details = Get-AzResource -ResourceId $resource.ResourceId
$details.Properties.InstrumentationKey
Pokud chcete zobrazit seznam mnoha dalších vlastností prostředku Application Insights, použijte:
Get-AzApplicationInsights -ResourceGroupName Fabrikam -Name FabrikamProd | Format-List
Další vlastnosti jsou k dispozici prostřednictvím rutin:
Set-AzApplicationInsightsDailyCap
Set-AzApplicationInsightsPricingPlan
Get-AzApplicationInsightsApiKey
Get-AzApplicationInsightsContinuousExport
Podrobné informace o parametrech těchto rutin najdete v podrobné dokumentaci .
Poznámka:
Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.
Nastavení uchovávání dat
K programovému nastavení uchovávání dat u prostředku Application Insights můžete použít následující tři metody.
Nastavení uchovávání dat pomocí příkazů PowerShellu
Tady je jednoduchá sada příkazů PowerShellu pro nastavení uchovávání dat pro prostředek Application Insights:
$Resource = Get-AzResource -ResourceType Microsoft.Insights/components -ResourceGroupName MyResourceGroupName -ResourceName MyResourceName
$Resource.Properties.RetentionInDays = 365
$Resource | Set-AzResource -Force
Nastavení uchovávání dat pomocí REST
Pokud chcete získat aktuální uchovávání dat pro prostředek Application Insights, můžete použít nástroj OSS ARMClient. Přečtěte si další informace o ARMClient z článků od Davida Ebba a Daniela Bowbye. Tady je příklad, který používá ARMClient
k získání aktuálního uchovávání:
armclient GET /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName?api-version=2018-05-01-preview
Pokud chcete nastavit uchovávání, příkaz je podobný 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}}"
Pokud chcete nastavit uchovávání dat na 365 dnů pomocí předchozí šablony, spusťte:
New-AzResourceGroupDeployment -ResourceGroupName "<resource group>" `
-TemplateFile .\template1.json `
-retentionInDays 365 `
-appName myApp
Nastavení uchovávání dat pomocí skriptu PowerShellu
Ke změně uchovávání je možné použít také následující skript. Zkopírujte tento skript a uložte ho jako 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
Tento skript se pak dá použít jako:
Set-ApplicationInsightsRetention `
[-SubscriptionId] <String> `
[-ResourceGroupName] <String> `
[-Name] <String> `
[-RetentionInDays <Int>]
Nastavení denního limitu
K získání vlastností denního limitu použijte rutinu Set-AzApplicationInsightsPricingPlan :
Set-AzApplicationInsightsDailyCap -ResourceGroupName <resource group> -Name <resource name> | Format-List
Pokud chcete nastavit vlastnosti denního limitu, použijte stejnou rutinu. Pokud například chcete nastavit limit na 300 GB za den:
Set-AzApplicationInsightsDailyCap -ResourceGroupName <resource group> -Name <resource name> -DailyCapGB 300
K získání a nastavení parametrů denního limitu můžete použít také ARMClient . Pokud chcete získat aktuální hodnoty, použijte:
armclient GET /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName/CurrentBillingFeatures?api-version=2018-05-01-preview
Nastavení denní doby resetování limitu
Důležité
Denní doba resetování limitu se už nedá přizpůsobit pomocí atributu ResetTime
.
Nastavení cenového plánu
Pokud chcete získat aktuální cenový plán, použijte rutinu Set-AzApplicationInsightsPricingPlan :
Set-AzApplicationInsightsPricingPlan -ResourceGroupName <resource group> -Name <resource name> | Format-List
Pokud chcete nastavit cenový plán, použijte stejnou rutinu se zadaným kódem -PricingPlan
:
Set-AzApplicationInsightsPricingPlan -ResourceGroupName <resource group> -Name <resource name> -PricingPlan Basic
Cenový plán pro existující prostředek Application Insights můžete také nastavit pomocí předchozí šablony ARM a vynechat prostředek microsoft.insights/components a dependsOn
uzel z fakturačního prostředku. Pokud ho například chcete nastavit na plán Per GB (dříve označovaný jako plán Basic), spusťte:
New-AzResourceGroupDeployment -ResourceGroupName "<resource group>" `
-TemplateFile .\template1.json `
-priceCode 1 `
-appName myApp
Definuje se priceCode
takto:
priceCode | Plánování |
---|---|
0 | Za GB (dříve pojmenovaný plán Basic) |
2 | Podle uzlu (dříve název plánu Enterprise) |
Nakonec můžete pomocí ARMClient získat a nastavit cenové plány a parametry denního limitu. Pokud chcete získat aktuální hodnoty, použijte:
armclient GET /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName/CurrentBillingFeatures?api-version=2018-05-01-preview
Všechny tyto parametry můžete nastavit pomocí:
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}}"
Tento kód nastaví denní limit na 200 GB za den, nakonfiguruje denní dobu resetování limitu na 12:00 UTC, odešle e-maily při dosažení limitu i úroveň upozornění a nastaví prahovou hodnotu upozornění na 90 % limitu.
Přidání upozornění na metriku
Pokud chcete automatizovat vytváření upozornění metrik, přečtěte si článek šablony upozornění na metriky .
Přidání testu dostupnosti
Pokud chcete automatizovat testy dostupnosti, přečtěte si článek šablony upozornění na metriky .
Přidání dalších prostředků
Pokud chcete automatizovat vytváření jakéhokoli jiného prostředku, vytvořte příklad ručně a pak zkopírujte a parametrizujte jeho kód z Azure Resource Manageru.
Otevřete Azure Resource Manager. Přejděte dolů
subscriptions/resourceGroups/<your resource group>/providers/Microsoft.Insights/components
k prostředku aplikace.Komponenty jsou základní prostředky Application Insights pro zobrazení aplikací. Pro přidružená pravidla upozornění a webové testy dostupnosti jsou k dispozici samostatné prostředky.
Zkopírujte JSON komponenty do příslušného místa .
template1.json
Odstraňte tyto vlastnosti:
id
InstrumentationKey
CreationDate
TenantId
Otevřete oddíly
webtests
aalertrules
zkopírujte JSON pro jednotlivé položky do šablony. Nekopírujte z uzlůwebtests
.alertrules
Přejděte do položek pod nimi.Každý webový test má přidružené pravidlo upozornění, takže musíte zkopírovat obě.
Vložte tento řádek do každého prostředku:
"apiVersion": "2015-05-01",
Parametrizace šablony
Teď musíte nahradit konkrétní názvy parametry. Pokud chcete parametrizovat šablonu, napíšete výrazy pomocí sady pomocných funkcí.
Nelze parametrizovat pouze část řetězce, takže se používají concat()
k sestavení řetězců.
Tady jsou příklady nahrazení, které chcete provést. Existuje několik výskytů každé náhrady. Možná budete potřebovat další uživatele ve vaší šabloně. Tyto příklady používají parametry a proměnné, které jsme definovali v horní části šablony.
Najít | 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" (malé) |
"[toLower(parameters('appName'))]" |
"<WebTest Name=\"myWebTest\" ... Url=\"http://fabrikam.com/home\" ...>" |
[concat('<WebTest Name=\"', parameters('webTestName'), '\" ... Url=\"', parameters('Url'), '\"...>')]" |
Nastavení závislostí mezi prostředky
Azure by měly prostředky nastavit v přísném pořadí. Pokud chcete zajistit, aby se jedno nastavení dokončilo před dalším zahájením, přidejte řádky závislostí:
V testovacím prostředku dostupnosti:
"dependsOn": ["[resourceId('Microsoft.Insights/components', parameters('appName'))]"],
V prostředku upozornění pro test dostupnosti:
"dependsOn": ["[resourceId('Microsoft.Insights/webtests', variables('testName'))]"],
Další kroky
Podívejte se na tyto další články o automatizaci: