Mengelola sumber daya Application Insights dengan menggunakan PowerShell
Catatan
Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Artikel ini memperlihatkan kepada Anda cara mengotomatiskan pembuatan dan pembaruan sumber daya Application Insights secara otomatis dengan menggunakan Azure Resource Manager. Anda mungkin, misalnya, melakukannya sebagai bagian dari proses build. Seiring dengan sumber daya Application Insights dasar, Anda dapat membuat pengujian web ketersediaan, menyiapkan pemberitahuan, mengatur skema harga, dan membuat sumber daya Azure lainnya.
Kunci untuk membuat sumber daya ini adalah templat JSON untuk Resource Manager. Prosedur dasarnya adalah:
- Unduh definisi JSON dari sumber daya yang ada.
- Parameterisasi nilai tertentu, seperti nama.
- Jalankan templat kapan pun Anda ingin membuat sumber daya baru.
Anda dapat mengemas beberapa sumber daya bersama-sama untuk membuatnya semuanya dalam sekali jalan. Misalnya, Anda dapat membuat monitor aplikasi dengan pengujian ketersediaan, pemberitahuan, dan penyimpanan untuk ekspor berkelanjutan. Ada beberapa seluk-beluk untuk beberapa parameterisasi, yang akan kami jelaskan di sini.
Penyiapan satu kali
Jika Anda belum menggunakan PowerShell dengan langganan Azure Anda sebelumnya, instal modul Azure PowerShell di komputer tempat Anda ingin menjalankan skrip:
- Instal Penginstal Platform Web Microsoft (v5 atau lebih tinggi).
- Gunakan untuk menginstal Azure PowerShell.
Selain menggunakan templat Azure Resource Manager (templat ARM), ada sekumpulan cmdlet Application Insights PowerShell yang kaya. Cmdlet ini memudahkan konfigurasi sumber daya Application Insights secara terprogram. Anda dapat menggunakan kemampuan yang diaktifkan oleh cmdlet untuk:
- Membuat dan menghapus sumber daya Application Insights.
- Dapatkan daftar sumber daya Application Insights dan propertinya.
- Membuat dan mengelola ekspor berkelanjutan.
- Membuat dan mengelola kunci aplikasi.
- Atur batas harian.
- Mengatur paket harga.
Membuat sumber daya Application Insights dengan menggunakan cmdlet PowerShell
Berikut cara membuat sumber daya Application Insights baru di pusat data Azure US Timur dengan menggunakan cmdlet New-AzApplicationInsights :
New-AzApplicationInsights -ResourceGroupName <resource group> -Name <resource name> -location eastus
Membuat sumber daya Application Insights dengan menggunakan templat ARM
Berikut cara membuat sumber daya Application Insights baru dengan menggunakan templat ARM.
Buat templat ARM
Buat file .json baru. Sebut template1.json
saja dalam contoh ini. Salin konten ini ke dalamnya:
{
"$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')]"
}
}
}
]
}
Menggunakan templat ARM untuk membuat sumber daya Application Insights baru
Di PowerShell, masuk ke Azure dengan menggunakan
$Connect-AzAccount
.Atur konteks Anda ke langganan dengan
Set-AzContext "<subscription ID>"
.Jalankan penyebaran baru untuk membuat sumber daya Application Insights baru:
New-AzResourceGroupDeployment -ResourceGroupName Fabrikam ` -TemplateFile .\template1.json ` -appName myNewApp
-ResourceGroupName
adalah grup tempat Anda ingin membuat sumber daya baru.-TemplateFile
harus terjadi sebelum parameter kustom.-appName
adalah nama sumber daya yang akan dibuat.
Anda dapat menambahkan parameter lain. Anda akan menemukan deskripsinya di bagian parameter templat.
Mendapatkan kunci instrumentasi
Setelah membuat sumber daya aplikasi, Anda akan menginginkan kunci instrumentasi:
- Masuk ke Azure dengan menggunakan
$Connect-AzAccount
. - Atur konteks Anda ke langganan dengan
Set-AzContext "<subscription ID>"
. - Kemudian gunakan:
$resource = Get-AzResource -Name "<resource name>" -ResourceType "Microsoft.Insights/components"
$details = Get-AzResource -ResourceId $resource.ResourceId
$details.Properties.InstrumentationKey
Untuk melihat daftar banyak properti lain dari sumber daya Application Insights, gunakan:
Get-AzApplicationInsights -ResourceGroupName Fabrikam -Name FabrikamProd | Format-List
Lebih banyak properti tersedia melalui cmdlet:
Set-AzApplicationInsightsDailyCap
Set-AzApplicationInsightsPricingPlan
Get-AzApplicationInsightsApiKey
Get-AzApplicationInsightsContinuousExport
Lihat dokumentasi terperinci untuk parameter untuk cmdlet ini.
Catatan
Pada tanggal 31 Maret 2025, dukungan untuk penyerapan kunci instrumentasi akan berakhir. Penyerapan kunci instrumentasi akan berjalan terus, namun kami tidak akan lagi menyediakan pembaruan atau dukungan terhadap fitur tersebut. Transisi ke string koneksi untuk memanfaatkan kemampuan baru.
Mengatur retensi data
Anda dapat menggunakan tiga metode berikut untuk mengatur retensi data secara terprogram pada sumber daya Application Insights.
Mengatur retensi data dengan menggunakan perintah PowerShell
Berikut adalah sekumpulan perintah PowerShell sederhana untuk mengatur retensi data untuk sumber daya Application Insights Anda:
$Resource = Get-AzResource -ResourceType Microsoft.Insights/components -ResourceGroupName MyResourceGroupName -ResourceName MyResourceName
$Resource.Properties.RetentionInDays = 365
$Resource | Set-AzResource -Force
Mengatur retensi data dengan menggunakan REST
Untuk mendapatkan retensi data saat ini untuk sumber daya Application Insights, Anda dapat menggunakan alat OSS ARMClient. Pelajari lebih lanjut tentang ARMClient dari artikel oleh David Ebbo dan Daniel Bowbyes. Berikut adalah contoh yang menggunakan ARMClient
untuk mendapatkan retensi saat ini:
armclient GET /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName?api-version=2018-05-01-preview
Untuk mengatur retensi, perintahnya adalah PUT serupa:
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}}"
Untuk mengatur retensi data menjadi 365 hari dengan menggunakan templat sebelumnya, jalankan:
New-AzResourceGroupDeployment -ResourceGroupName "<resource group>" `
-TemplateFile .\template1.json `
-retentionInDays 365 `
-appName myApp
Mengatur retensi data dengan menggunakan skrip PowerShell
Skrip berikut juga dapat digunakan untuk mengubah retensi. Salin skrip ini untuk menyimpannya sebagai 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
Skrip ini kemudian dapat digunakan sebagai:
Set-ApplicationInsightsRetention `
[-SubscriptionId] <String> `
[-ResourceGroupName] <String> `
[-Name] <String> `
[-RetentionInDays <Int>]
Mengatur batas harian
Untuk mendapatkan properti batas harian, gunakan cmdlet Set-AzApplicationInsightsPricingPlan:
Set-AzApplicationInsightsDailyCap -ResourceGroupName <resource group> -Name <resource name> | Format-List
Untuk mengatur properti batas harian, gunakan cmdlet yang sama. Misalnya, untuk mengatur batas ke 300 GB per hari:
Set-AzApplicationInsightsDailyCap -ResourceGroupName <resource group> -Name <resource name> -DailyCapGB 300
Anda juga dapat menggunakan ARMClient untuk mendapatkan dan mengatur parameter batas harian. Untuk mendapatkan nilai saat ini, gunakan:
armclient GET /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName/CurrentBillingFeatures?api-version=2018-05-01-preview
Mengatur waktu reset batas harian
Untuk mengatur waktu reset batas harian, Anda dapat menggunakan ARMClient. Berikut adalah contoh penggunaan ARMClient
untuk mengatur waktu reset ke jam baru. Contoh ini menunjukkan 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}}"
Mengatur paket harga
Untuk mendapatkan paket harga saat ini, gunakan cmdlet Set-AzApplicationInsightsPricingPlan :
Set-AzApplicationInsightsPricingPlan -ResourceGroupName <resource group> -Name <resource name> | Format-List
Untuk mengatur paket harga, gunakan cmdlet yang sama dengan -PricingPlan
yang ditentukan:
Set-AzApplicationInsightsPricingPlan -ResourceGroupName <resource group> -Name <resource name> -PricingPlan Basic
Anda juga dapat mengatur paket harga pada sumber daya Application Insights yang ada dengan menggunakan templat ARM sebelumnya, menghilangkan sumber daya "microsoft.insights/components" dan dependsOn
simpul dari sumber daya penagihan. Misalnya, untuk mengaturnya ke paket Per GB (sebelumnya disebut paket Dasar), jalankan:
New-AzResourceGroupDeployment -ResourceGroupName "<resource group>" `
-TemplateFile .\template1.json `
-priceCode 1 `
-appName myApp
priceCode
didefinisikan sebagai:
priceCode | Paket |
---|---|
1 | Per GB (sebelumnya bernama paket Dasar) |
2 | Per Simpul (sebelumnya nama paket Perusahaan) |
Terakhir, Anda dapat menggunakan ARMClient untuk mendapatkan dan menetapkan paket harga dan parameter batas harian. Untuk mendapatkan nilai saat ini, gunakan:
armclient GET /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/MyResourceGroupName/providers/microsoft.insights/components/MyResourceName/CurrentBillingFeatures?api-version=2018-05-01-preview
Anda dapat mengatur semua parameter ini dengan menggunakan:
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}}"
Kode ini akan mengatur batas harian ke 200 GB per hari, mengonfigurasi waktu reset batas harian ke 12:00 UTC, mengirim email baik ketika batas terpukul dan tingkat peringatan terpenuhi, dan atur ambang batas peringatan ke 90% dari batas.
Menambahkan pemberitahuan metrik
Untuk mengotomatiskan pembuatan pemberitahuan metrik, lihat artikel Templat pemberitahuan metrik.
Menambahkan pengujian ketersediaan
Untuk mengotomatiskan pengujian ketersediaan, lihat artikel Templat pemberitahuan metrik.
Menambahkan sumber daya lainnya
Untuk mengotomatiskan pembuatan sumber daya lain dalam bentuk apa pun, buat contoh secara manual lalu salin dan parameterisasi kodenya dari Azure Resource Manager.
Buka Azure Resource Manager. Navigasikan ke sumber
subscriptions/resourceGroups/<your resource group>/providers/Microsoft.Insights/components
daya aplikasi Anda.Komponen adalah sumber daya Application Insights dasar untuk menampilkan aplikasi. Ada sumber daya terpisah untuk aturan pemberitahuan terkait dan pengujian web ketersediaan.
Salin JSON komponen ke tempat yang sesuai di
template1.json
.Hapus properti ini:
id
InstrumentationKey
CreationDate
TenantId
Buka bagian
webtests
danalertrules
, lalu salin JSON untuk item individual ke dalam templat Anda. Jangan salin dariwebtests
node ataualertrules
. Masuk ke item di bawahnya.Setiap pengujian web memiliki aturan pemberitahuan terkait, jadi Anda harus menyalin keduanya.
Sisipkan baris ini di setiap sumber daya:
"apiVersion": "2015-05-01",
Melakukan parameterisasi templat
Sekarang, Anda harus mengganti nama tertentu dengan parameter. Untuk melakukan parameterisasi templat, Anda menulis ekspresi menggunakan sekumpulan fungsi pembantu.
Anda tidak hanya dapat membuat parameter bagian dari string, jadi gunakan concat()
untuk membuat string.
Berikut adalah contoh pengaitan yang ingin Anda buat. Ada beberapa kejadian dari setiap pengaitan. Anda mungkin memerlukan orang lain di templat Anda. Contoh ini menggunakan parameter dan variabel yang kami tentukan di bagian atas templat.
Find | Ganti dengan |
---|---|
"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" (huruf kecil) |
"[toLower(parameters('appName'))]" |
"<WebTest Name=\"myWebTest\" ... Url=\"http://fabrikam.com/home\" ...>" |
[concat('<WebTest Name=\"', parameters('webTestName'), '\" ... Url=\"', parameters('Url'), '\"...>')]" |
Mengatur dependensi di antara sumber daya
Azure harus menyiapkan sumber daya dalam urutan yang ketat. Untuk memastikan satu penyiapan selesai sebelum penyiapan berikutnya dimulai, tambahkan garis dependensi:
Di sumber daya pengujian ketersediaan:
"dependsOn": ["[resourceId('Microsoft.Insights/components', parameters('appName'))]"],
Di sumber daya pemberitahuan untuk pengujian ketersediaan:
"dependsOn": ["[resourceId('Microsoft.Insights/webtests', variables('testName'))]"],
Langkah berikutnya
Lihat artikel otomatisasi lainnya ini: