Verwalten von Application Insights-Ressourcen mithilfe von PowerShell
Hinweis
Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.
Dieser Artikel beschreibt, wie Sie die Erstellung und Aktualisierung von Application Insights-Ressourcen mit dem Azure Resource Manager automatisieren können. Dies kann z. B. als Teil eines Buildvorgangs erfolgen. Zusammen mit der grundlegenden Application Insights-Ressource können Sie Verfügbarkeitswebtests erstellen, Warnungen einrichten, das Preisschema festlegen und andere Azure-Ressourcen erstellen.
Im Wesentlichen werden diese Ressourcen mit JSON-Vorlagen für den Azure Resource Manager erstellt. Die grundlegende Prozedur lautet wie folgt:
- Laden Sie die JSON-Definitionen vorhandener Ressourcen herunter.
- Parametrisieren Sie bestimmte Werte, z. B. Namen.
- Führen Sie die Vorlage immer dann aus, wenn Sie eine neue Ressource erstellen möchten.
Sie können mehrere Ressourcen zusammen packen, um sie alle auf einmal zu erstellen. Sie können beispielsweise einen App-Monitor mit Verfügbarkeitstests, Warnungen und Speicher für den fortlaufenden Export erstellen. Einige Parametrisierungen weisen Besonderheiten auf, die hier erläutert werden.
Einmalige Konfiguration
Wenn Sie PowerShell noch nicht mit Ihrem Azure-Abonnement verwendet haben, installieren Sie das Azure PowerShell-Modul auf dem Computer, auf dem Sie die Skripts ausführen möchten:
- Installieren Sie Microsoft-Webplattform-Installer (Version 5 oder höher).
- Verwenden Sie es, um Azure PowerShell zu installieren.
Zusätzlich zur Verwendung von Azure Resource Manager-Vorlagen (ARM-Vorlagen) gibt es eine Vielzahl von PowerShell-Cmdlets für Application Insights. Diese Cmdlets erleichtern die programmgesteuerte Konfiguration von Application Insights-Ressourcen. Die mit Cmdlets ermöglichten Funktionen umfassen Folgendes:
- Erstellen und Löschen von Application Insights-Ressourcen
- Abrufen von Listen mit Application Insights-Ressourcen und deren Eigenschaften
- Erstellen und Verwalten von fortlaufendem Export
- Erstellen und Verwalten von Anwendungsschlüsseln
- Festlegen der täglichen Obergrenze
- Festlegen des Tarifs
Erstellen von Application Insights-Ressourcen mithilfe eines PowerShell-Cmdlets
Hier wird gezeigt, wie Sie mithilfe des Cmdlets New-AzApplicationInsights eine neue Application Insights-Ressource im Azure-Rechenzentrum „USA, Osten“ erstellen:
New-AzApplicationInsights -ResourceGroupName <resource group> -Name <resource name> -location eastus
Erstellen von Application Insights-Ressourcen mithilfe einer ARM-Vorlage
Nachfolgend wird beschrieben, wie Sie mithilfe einer ARM-Vorlage eine neue Application Insights-Ressource erstellen.
Erstellen der ARM-Vorlage
Erstellen Sie eine neue JSON-Datei. In diesem Beispiel nennen wir sie template1.json
. Kopieren Sie den folgenden Inhalt in die Datei:
{
"$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')]"
}
}
}
]
}
Verwenden der ARM-Vorlage zum Erstellen einer neuen Application Insights-Ressource
Melden Sie sich in PowerShell mit
$Connect-AzAccount
bei Azure an.Legen Sie mit
Set-AzContext "<subscription ID>"
den Kontext auf ein Abonnement fest.Führen Sie eine neue Bereitstellung aus, um eine neue Application Insights-Ressource zu erstellen:
New-AzResourceGroupDeployment -ResourceGroupName Fabrikam ` -TemplateFile .\template1.json ` -appName myNewApp
-ResourceGroupName
ist die Gruppe, in der Sie die neuen Ressourcen erstellen möchten.-TemplateFile
muss vor den benutzerdefinierten Parametern angegeben werden.-appName
ist der Name der zu erstellenden Ressource.
Sie können weitere Parameter hinzufügen. Die entsprechenden Beschreibungen finden Sie im Abschnitt „Parameter“ der Vorlage.
Abrufen des Instrumentierungsschlüssels
Nach dem Erstellen einer Anwendungsressource benötigen Sie den Instrumentierungsschlüssel:
- Anmelden bei Azure mithilfe von
$Connect-AzAccount
. - Legen Sie mit
Set-AzContext "<subscription ID>"
den Kontext auf ein Abonnement fest. - Verwenden Sie anschließend Folgendes:
$resource = Get-AzResource -Name "<resource name>" -ResourceType "Microsoft.Insights/components"
$details = Get-AzResource -ResourceId $resource.ResourceId
$details.Properties.InstrumentationKey
Verwenden Sie Folgendes, um eine Liste vieler anderer Eigenschaften Ihrer Application Insights-Ressource anzuzeigen:
Get-AzApplicationInsights -ResourceGroupName Fabrikam -Name FabrikamProd | Format-List
Zusätzliche Eigenschaften stehen über die folgenden Cmdlets zur Verfügung:
Set-AzApplicationInsightsDailyCap
Set-AzApplicationInsightsPricingPlan
Get-AzApplicationInsightsApiKey
Get-AzApplicationInsightsContinuousExport
Informationen zu den Parametern für diese Cmdlets finden Sie in der ausführlichen Dokumentation.
Hinweis
Am 31. März 2025 wird der Support für die auf Instrumentierungsschlüsseln basierende Erfassung eingestellt. Die Erfassung von Instrumentierungsschlüsseln funktioniert zwar weiterhin, wir stellen jedoch keine Updates und keinen Support mehr für das Feature bereit. Wechseln Sie zu Verbindungszeichenfolgen, damit Sie neue Funktionen nutzen können.
Festlegen der Datenaufbewahrung
Im Folgenden finden Sie drei Methoden, um die Datenaufbewahrung für eine Application Insights-Ressource programmgesteuert festzulegen.
Festlegen der Datenaufbewahrung mithilfe von PowerShell-Befehlen
Hier finden Sie eine einfache Gruppe von PowerShell-Befehlen, um die Datenaufbewahrung für Ihre Application Insights Ressource festzulegen:
$Resource = Get-AzResource -ResourceType Microsoft.Insights/components -ResourceGroupName MyResourceGroupName -ResourceName MyResourceName
$Resource.Properties.RetentionInDays = 365
$Resource | Set-AzResource -Force
Festlegen der Datenaufbewahrung mithilfe von REST
Zum Abrufen der aktuelle Datenaufbewahrung für Ihre Application Insights Ressource können Sie das OSS-Tool ARMClient verwenden. Weitere Informationen zu ARMClient finden Sie in den Artikeln von David Ebbo und Daniel Bowbyes. Es folgt ein Beispiel für die Verwendung von ARMClient
zum Abrufen der aktuellen Aufbewahrung:
armclient GET /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName?api-version=2018-05-01-preview
Zum Festlegen der Aufbewahrung dient ein ähnlicher PUT-Befehl:
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}}"
Führen Sie Folgendes aus, um die Datenaufbewahrung mithilfe der vorangegangenen Vorlage auf 365 Tage festzulegen:
New-AzResourceGroupDeployment -ResourceGroupName "<resource group>" `
-TemplateFile .\template1.json `
-retentionInDays 365 `
-appName myApp
Festlegen der Datenaufbewahrung mithilfe eines PowerShell-Skripts
Das folgende Skript kann auch verwendet werden, um die Aufbewahrung zu ändern. Kopieren Sie dieses Skript, um es als Set-ApplicationInsightsRetention.ps1
zu speichern.
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
Dieses Skript kann dann für Folgendes verwendet werden:
Set-ApplicationInsightsRetention `
[-SubscriptionId] <String> `
[-ResourceGroupName] <String> `
[-Name] <String> `
[-RetentionInDays <Int>]
Festlegen der täglichen Obergrenze
Verwenden Sie das Cmdlet Set-AzApplicationInsightsPricingPlan, um die Eigenschaften für die tägliche Obergrenze abzurufen:
Set-AzApplicationInsightsDailyCap -ResourceGroupName <resource group> -Name <resource name> | Format-List
Zum Festlegen der Eigenschaften für die tägliche Obergrenze verwenden Sie das gleiche Cmdlet. Führen Sie zum Festlegen der Obergrenze auf 300 GB pro Tag beispielsweise Folgendes aus:
Set-AzApplicationInsightsDailyCap -ResourceGroupName <resource group> -Name <resource name> -DailyCapGB 300
Sie können ARMClient auch verwenden, um Parameter für das Obergrenze pro Tag abzurufen und festzulegen. Verwenden Sie Folgendes, um die aktuellen Werte zu erhalten:
armclient GET /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName/CurrentBillingFeatures?api-version=2018-05-01-preview
Festlegen der Zeit der Zurücksetzung der Obergrenze pro Tag
Mit ARMClient können Sie die Zeit der Zurücksetzung der Obergrenze pro Tag festlegen. Hier ist ein Beispiel mit ARMClient
, um die Zeit der Zurücksetzung auf eine neue Stunde festzulegen. In diesem Beispiel wird 12:00 UTC angezeigt:
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}}"
Festlegen des Tarifs
Zum Abrufen des aktuellen Tarifs verwenden Sie das Cmdlet Set-AzApplicationInsightsPricingPlan:
Set-AzApplicationInsightsPricingPlan -ResourceGroupName <resource group> -Name <resource name> | Format-List
Verwenden Sie zum Festlegen des Tarifs das gleiche Cmdlet mit angegebenem -PricingPlan
:
Set-AzApplicationInsightsPricingPlan -ResourceGroupName <resource group> -Name <resource name> -PricingPlan Basic
Sie können auch den Tarif für eine vorhandene Application Insights-Ressource mithilfe der vorangegangenen ARM-Vorlage festlegen, wobei Sie die Ressource „microsoft.insights/components“ und den Knoten dependsOn
aus der Abrechnungsressource auslassen. Führen Sie z.B. Folgendes aus, um den Tarif auf „Pro GB“ (früher als Basic-Tarif bezeichnet) festzulegen:
New-AzResourceGroupDeployment -ResourceGroupName "<resource group>" `
-TemplateFile .\template1.json `
-priceCode 1 `
-appName myApp
priceCode
ist wie folgt definiert:
priceCode | Planen |
---|---|
1 | Pro GB (früher als Basic-Tarif bezeichnet) |
2 | Pro Knoten (früher als Enterprise-Tarif bezeichnet) |
Schließlich können Sie ARMClient verwenden, um Preispläne und Parameter für das Obergrenze pro Tag abzurufen und festzulegen. Verwenden Sie Folgendes, um die aktuellen Werte zu erhalten:
armclient GET /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName/CurrentBillingFeatures?api-version=2018-05-01-preview
Sie können alle diese Einstellungen mit folgenden Parametern festlegen:
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}}"
Durch diesen Code wird die Obergrenze pro Tag auf 200 GB pro Tag und die Zeit der Zurücksetzung der Obergrenze pro Tag auf 12:00 UTC festgelegt. Außerdem werden E-Mails bei Erreichen sowohl der Obergrenze als auch der Warnstufe gesendet, und die Warnschwelle wird auf 90 % der Obergrenze festgelegt.
Hinzufügen einer Metrikwarnung
Informationen zum Automatisieren der Erstellung von Metrikwarnungen finden Sie im Artikel Vorlage für eine Metrikwarnung.
Hinzufügen eines Verfügbarkeitstests
Informationen zum Automatisieren von Verfügbarkeitstests finden Sie im Artikel Vorlage für eine Metrikwarnung.
Hinzufügen weiterer Ressourcen
Um die Erstellung von beliebigen anderen Ressourcen zu automatisieren, erstellen Sie manuell ein Beispiel und kopieren und parametrisieren den Code dann über Azure Resource Manager.
Öffnen Sie den Azure-Ressourcen-Manager. Navigieren Sie über
subscriptions/resourceGroups/<your resource group>/providers/Microsoft.Insights/components
nach unten zu Ihrer Anwendungsressource.Komponenten sind die grundlegenden Application Insights-Ressourcen zum Anzeigen von Anwendungen. Für die zugeordneten Warnungsregeln und Verfügbarkeitswebtests liegen separate Ressourcen vor.
Kopieren Sie die JSON-Definition der Komponente an die entsprechende Stelle in der Datei
template1.json
.Löschen Sie folgende Eigenschaften:
id
InstrumentationKey
CreationDate
TenantId
Öffnen Sie die Abschnitte
webtests
undalertrules
, und kopieren Sie die JSON-Definition für einzelne Elemente in die Vorlage. Kopieren Sie nicht aus den Knotenwebtests
oderalertrules
. Wechseln Sie zu den Elementen unter ihnen.Jeder Webtest weist eine zugeordnete Warnungsregel auf, die Sie auch kopieren müssen.
Fügen Sie diese Zeile in jede Ressource ein:
"apiVersion": "2015-05-01",
Parametrisieren der Vorlage
Nun müssen Sie die Namen durch Parameter ersetzen. Zum Parametrisieren einer Vorlage schreiben Sie Ausdrücke mithilfe einer Reihe von Hilfsfunktionen.
Sie können nicht nur einen Teil einer Zeichenfolge parametrisieren. Verwenden Sie daher concat()
zum Erstellen von Zeichenfolgen.
Es folgen einige Beispiele der Ersetzungen, die Sie vornehmen können. Es gibt mehrere Vorkommen der einzelnen Ersetzungen. In Ihrer Vorlage müssen Sie unter Umständen andere Ersetzungen vornehmen. In diesen Beispielen werden die Parameter und Variablen verwendet, die oben in der Vorlage definiert wurden.
Suchen | Ersetzen durch |
---|---|
"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" (Kleinbuchstaben) |
"[toLower(parameters('appName'))]" |
"<WebTest Name=\"myWebTest\" ... Url=\"http://fabrikam.com/home\" ...>" |
[concat('<WebTest Name=\"', parameters('webTestName'), '\" ... Url=\"', parameters('Url'), '\"...>')]" |
Festlegen von Abhängigkeiten zwischen den Ressourcen
Die Ressourcen sollten in Azure in strikter Reihenfolge eingerichtet werden. Um sicherzustellen, dass eine Einrichtung abgeschlossen ist, bevor die nächste beginnt, fügen Sie Abhängigkeitszeilen hinzu:
In der Ressource für Verfügbarkeitstests:
"dependsOn": ["[resourceId('Microsoft.Insights/components', parameters('appName'))]"],
In der Warnungsressource für einen Verfügbarkeitstest:
"dependsOn": ["[resourceId('Microsoft.Insights/webtests', variables('testName'))]"],
Nächste Schritte
Andere Artikel zu Automation: