Mallow
Azure Tips · 26. elokuuta 2025

Mukautetut mittarit Application Insightsiin REST API:lla

Aali Alikoski

Kirjoittaja: Aali Alikoski

Mukautetut mittarit Application Insightsiin REST API:lla

Miten hyödyntää mukautettuja mittareita Application Insightsissa paremman havainnoitavuuden saavuttamiseksi.

Azure Monitor on Azuren keskeinen paikka lokien ja mittareiden keräämiseen. Application Insights toimii Azure Monitorin päällä ja tukee sovellusten monitorointia. Jos sinulla on oma sovellus, joka ei ole valmiiksi Azuren palvelu (esimerkiksi virtuaalikoneessa ajettava ohjelmisto), voit lähettää sille telemetriaa Application Insightsiin.

Suositeltu tapa on yleensä käyttää SDK:ta (esimerkiksi NuGet-pakettia). Jos se ei ole käytännöllistä, mittareita voi lähettää myös REST API:n kautta.

Tässä on PowerShell-esimerkki REST API:n kautta. Muutama huomio ennen koodia:

  • Mittarin arvo tulee yleensä jostain muusta lähteestä. Sinä päätät, mistä ja miten se luetaan.
  • Voit lähettää useita postBodyItem-kohteita samalla POST-pyynnöllä, jos haluat vähentää verkko-ylipäätä.
  • AIInstrumentationKey löytyy Application Insightsin Overview-näkymästä Azure Portalissa.
  • metricNamespace ja metricName ovat omia arvojasi. Ne näkyvät mittareissa, kun dataa on vastaanotettu.
  • Valinnaiset dimensiot ovat mittareiden luokittelua. Niiden perusteella voi suodattaa. Esimerkki dimensiosta on instanssin nimi tai asiakas.
try {
    $AIInstrumentationKey = 'YourKeyHere'
    $metricNamespace = 'YourNamespace'
    $date = Get-Date -Format o
    $metricName = 'YourMetricName'
    $metricValue = 1.23
    $Dimension1Value = 'YourDimension1'
    $Dimension2Value = 'YourDimension2'
    $postBodyItem = @"
{
    "name": "Microsoft.ApplicationInsights.instrumentation_key.Metric",
    "time": "$date",
    "iKey": "$AIInstrumentationKey",
    "tags": {
        "ai.cloud.roleInstance": ".",
        "ai.internal.nodeName": ".",
        "ai.internal.sdkVersion": "."
    },
    "data": {
        "baseType": "MetricData",
        "baseData": {
            "ver": 2 ,
            "metrics": [{
                "name": "$metricName",
                "ns": "$metricNamespace",
                "kind": "Aggregation",
                "value": $metricValue,
                "count": 1
            }],
            "properties": {
                "Dimension1": "$Dimension1Value",
                "Dimension2": "$Dimension2Value"
            }
        }
    }
}
"@
    Write-Host ''
    Write-Host -NoNewline 'Sending metrics... '
    $result = Invoke-WebRequest -Uri 'https://dc.services.visualstudio.com/v2/track' -ContentType 'application/json' -Method POST -Body $postBodyItem
    $resultStats = $result.Content | ConvertFrom-Json
    Write-Host "sent $($resultStats.itemsReceived)/$($resultStats.itemsAccepted) metric values."
} catch {
    Write-Host $_.Exception.Message
}