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:

  1. Instal Penginstal Platform Web Microsoft (v5 atau lebih tinggi).
  2. 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

  1. Di PowerShell, masuk ke Azure dengan menggunakan $Connect-AzAccount.

  2. Atur konteks Anda ke langganan dengan Set-AzContext "<subscription ID>".

  3. 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:

  1. Masuk ke Azure dengan menggunakan $Connect-AzAccount.
  2. Atur konteks Anda ke langganan dengan Set-AzContext "<subscription ID>".
  3. Kemudian gunakan:
    1. $resource = Get-AzResource -Name "<resource name>" -ResourceType "Microsoft.Insights/components"
    2. $details = Get-AzResource -ResourceId $resource.ResourceId
    3. $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.

  1. Buka Azure Resource Manager. Navigasikan ke sumber subscriptions/resourceGroups/<your resource group>/providers/Microsoft.Insights/components daya aplikasi Anda.

    Screenshot that shows navigation in Azure Resource Explorer.

    Komponen adalah sumber daya Application Insights dasar untuk menampilkan aplikasi. Ada sumber daya terpisah untuk aturan pemberitahuan terkait dan pengujian web ketersediaan.

  2. Salin JSON komponen ke tempat yang sesuai di template1.json.

  3. Hapus properti ini:

    • id
    • InstrumentationKey
    • CreationDate
    • TenantId
  4. Buka bagian webtests dan alertrules, lalu salin JSON untuk item individual ke dalam templat Anda. Jangan salin dari webtests node atau alertrules . Masuk ke item di bawahnya.

    Setiap pengujian web memiliki aturan pemberitahuan terkait, jadi Anda harus menyalin keduanya.

  5. 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: