Migrera från mått-API:et till getBatch-API:et
Tung användning av mått-API:et kan leda till begränsnings- eller prestandaproblem. Om du migrerar till API:et metrics:getBatch
kan du köra frågor mot flera resurser i en enda REST-begäran. De två API:erna delar en gemensam uppsättning frågeparameter- och svarsformat som gör migreringen enkel.
Begärandeformat
metrics:getBatch
API-begäran har följande format:
POST /subscriptions/<subscriptionId>/metrics:getBatch?metricNamespace=<resource type namespace>&api-version=2023-10-01
Host: <region>.metrics.monitor.azure.com
Content-Type: application/json
Authorization: Bearer <token>
{
"resourceids":[<comma separated list of resource IDs>]
}
Ett exempel:
POST /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/metrics:getBatch?metricNamespace=microsoft.compute/virtualMachines&api-version=2023-10-01
Host: eastus.metrics.monitor.azure.com
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhb...TaXzf6tmC4jhog
{
"resourceids":["/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vms-01/providers/Microsoft.Compute/virtualMachines/vmss-001_41df4bb9",
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vms-02/providers/Microsoft.Compute/virtualMachines/vmss-001_c1187e2f"
]
}
Batchbegränsningar
Tänk på följande begränsningar för vilka resurser som kan batchas tillsammans när du bestämmer om API:et metrics:getBatch
är rätt val för ditt scenario.
- Alla resurser i en batch måste finnas i samma prenumeration.
- Alla resurser i en batch måste finnas i samma Azure-region.
- Alla resurser i en batch måste vara av samma resurstyp.
För att identifiera grupper av resurser som uppfyller dessa villkor kör du följande Azure Resource Graph-fråga med Azure Resource Graph Explorer eller via fråge-API:et för Azure Resource Manager-resurser.
resources
| project id, subscriptionId, ['type'], location
| order by subscriptionId, ['type'], location
Begärandekonverteringssteg
Om du vill konvertera ett befintligt API-anrop för mått till ett metric:getBatch API-anrop följer du dessa steg:
Anta att följande API-anrop används för att begära mått:
GET https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample-test/providers/Microsoft.Storage/storageAccounts/testaccount/providers/microsoft.Insights/metrics?timespan=2023-04-20T12:00:00.000Z/2023-04-22T12:00:00.000Z&interval=PT6H&metricNamespace=microsoft.storage%2Fstorageaccounts&metricnames=Ingress,Egress&aggregation=total,average,minimum,maximum&top=10&orderby=total desc&$filter=ApiName eq '*'&api-version=2019-07-01
Ändra värdnamnet.
Ersättmanagement.azure.com
med en regional slutpunkt för Azure Monitor Metrics-dataplanet med följande format:<region>.metrics.monitor.azure.com
varregion
är regionen för de resurser som du begär mått för. Om resurserna till exempel finns i westus2 ärwestus2.metrics.monitor.azure.com
värdnamnet .Ändra API-namnet och sökvägen.
API:etmetrics:getBatch
är ett POST-API på prenumerationsnivå. De resurser som måtten begärs för anges i begärandetexten i stället för i URL-sökvägen.
Ändra url-sökvägen enligt följande:
från/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample-test/providers/Microsoft.Storage/storageAccounts/testaccount/providers/microsoft.Insights/metrics
till/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/metrics:getBatch
Frågeparam
metricNamespace
krävs för metrics:getBatch. För Azures standardmått är namnområdesnamnet vanligtvis resurstypen för de resurser som du har angett. Information om hur du kontrollerar det namnområdesvärde som ska användas finns i API:et för måttnamnområdenVäxla från att använda
timespan
frågeparam till att användastarttime
ochendtime
. Till exempel kommer?timespan=2023-04-20T12:00:00.000Z/2023-04-22T12:00:00.000Z
att bli?startime=2023-04-20T12:00:00.000Z&endtime=2023-04-22T12:00:00.000Z
.Uppdatera frågeparametern api-version enligt följande:
&api-version=2023-10-01
Filterfrågeparamen är inte prefix med en
$
i API:etmetrics:getBatch
. Ändra frågeparam från$filter=
tillfilter=
.API:et
metrics:getBatch
är ett POST-anrop med en brödtext som innehåller en kommaavgränsad lista över resourceIds i följande format: Till exempel:{ "resourceids": [ // <comma separated list of resource ids> ] }
Till exempel:
{ "resourceids": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample-test/providers/Microsoft.Storage/storageAccounts/testaccount" ] }
Upp till 50 unika resurs-ID:t kan anges i varje anrop. Varje resurs måste tillhöra samma prenumeration, region och vara av samma resurstyp.
Viktigt!
- Objektegenskapen
resourceids
i brödtexten måste vara gemener. - Kontrollera att det inte finns några avslutande kommatecken på ditt senaste resourceid i matrislistan.
Konverterad batchbegäran
I följande exempel visas den konverterade batchbegäran.
POST https://westus2.metrics.monitor.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/metrics:getBatch?starttime=2023-04-20T12:00:00.000Z&endtime=2023-04-22T12:00:00.000Z&interval=PT6H&metricNamespace=microsoft.storage%2Fstorageaccounts&metricnames=Ingress,Egress&aggregation=total,average,minimum,maximum&top=10&orderby=total desc&filter=ApiName eq '*'&api-version=2023-10-01
{
"resourceids": [
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample-test/providers/Microsoft.Storage/storageAccounts/testaccount",
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample2-test-rg/providers/Microsoft.Storage/storageAccounts/eax252qtemplate",
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample3/providers/Microsoft.Storage/storageAccounts/sample3diag",
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample3/providers/Microsoft.Storage/storageAccounts/sample3prefile",
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample3/providers/Microsoft.Storage/storageAccounts/sample3tipstorage",
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample3backups/providers/Microsoft.Storage/storageAccounts/pod01account1"
]
}
Svarsformat
Svarsformatet för API:et metrics:getBatch
kapslar in en lista över enskilda måttanropssvar i följande format:
{
"values": [
// <One individual metrics response per requested resourceId>
]
}
En resourceid
egenskap lades till i varje resurs måttlista i API-svaret metrics:getBatch
.
Följande visar exempel på svarsformat.
{
"cost": 11516,
"startime": "2023-04-20T12:00:00Z",
"endtime": "2023-04-22T12:00:00Z",
"interval": "P1D",
"value": [
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample-test/providers/Microsoft.Storage/storageAccounts/testaccount/providers/Microsoft.Insights/metrics/Ingress",
"type": "Microsoft.Insights/metrics",
"name": {
"value": "Ingress",
"localizedValue": "Ingress"
},
"displayDescription": "The amount of ingress data, in bytes. This number includes ingress from an external client into Azure Storage as well as ingress within Azure.",
"unit": "Bytes",
"timeseries": [
{
"metadatavalues": [
{
"name": {
"value": "apiname",
"localizedValue": "apiname"
},
"value": "EntityGroupTransaction"
}
],
"data": [
{
"timeStamp": "2023-04-20T12:00:00Z",
"total": 1737897,
"average": 5891.17627118644,
"minimum": 1674,
"maximum": 10976
},
{
"timeStamp": "2023-04-21T12:00:00Z",
"total": 1712543,
"average": 5946.329861111111,
"minimum": 1674,
"maximum": 10980
}
]
},
{
"metadatavalues": [
{
"name": {
"value": "apiname",
"localizedValue": "apiname"
},
"value": "GetBlobServiceProperties"
}
],
"data": [
{
"timeStamp": "2023-04-20T12:00:00Z",
"total": 1284,
"average": 321,
"minimum": 321,
"maximum": 321
},
{
"timeStamp": "2023-04-21T12:00:00Z",
"total": 1926,
"average": 321,
"minimum": 321,
"maximum": 321
}
]
}
],
"errorCode": "Success"
},
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample-test/providers/Microsoft.Storage/storageAccounts/testaccount/providers/Microsoft.Insights/metrics/Egress",
"type": "Microsoft.Insights/metrics",
"name": {
"value": "Egress",
"localizedValue": "Egress"
},
"displayDescription": "The amount of egress data. This number includes egress to external client from Azure Storage as well as egress within Azure. As a result, this number does not reflect billable egress.",
"unit": "Bytes",
"timeseries": [
{
"metadatavalues": [
{
"name": {
"value": "apiname",
"localizedValue": "apiname"
},
"value": "EntityGroupTransaction"
}
],
"data": [
{
"timeStamp": "2023-04-20T12:00:00Z",
"total": 249603,
"average": 846.1118644067797,
"minimum": 839,
"maximum": 1150
},
{
"timeStamp": "2023-04-21T12:00:00Z",
"total": 244652,
"average": 849.4861111111111,
"minimum": 839,
"maximum": 1150
}
]
},
{
"metadatavalues": [
{
"name": {
"value": "apiname",
"localizedValue": "apiname"
},
"value": "GetBlobServiceProperties"
}
],
"data": [
{
"timeStamp": "2023-04-20T12:00:00Z",
"total": 3772,
"average": 943,
"minimum": 943,
"maximum": 943
},
{
"timeStamp": "2023-04-21T12:00:00Z",
"total": 5658,
"average": 943,
"minimum": 943,
"maximum": 943
}
]
}
],
"errorCode": "Success"
}
],
"namespace": "microsoft.storage/storageaccounts",
"resourceregion": "westus2"
}
Felsvarsändringar
I felsvaret metrics:getBatch
omsluts felinnehållet i en "felegenskap" på toppnivå i svaret. Ett exempel:
Api-felsvar för mått
{ "code": "BadRequest", "message": "Metric: Ingress does not support requested dimension combination: apiname2, supported ones are: GeoType,ApiName,Authentication, TraceId: {6666aaaa-77bb-cccc-dd88-eeeeee999999}" }
Batch API-felsvar:
{ "error": { "code": "BadRequest", "message": "Metric: Egress does not support requested dimension combination: apiname2, supported ones are: GeoType,ApiName,Authentication, TraceId: {6666aaaa-77bb-cccc-dd88-eeeeee999999}" } }
Felsökning
Tomma tidsserier returnerade
"timeseries": []
- En tom tidsserie returneras när inga data är tillgängliga för det angivna tidsintervallet och filtret. Den vanligaste orsaken är att ange ett tidsintervall som inte innehåller några data. Till exempel om tidsintervallet är inställt på ett framtida datum.
- En annan vanlig orsak är att ange ett filter som inte matchar några resurser. Om filtret till exempel anger ett dimensionsvärde som inte finns på några resurser i kombinationen
"timeseries": []
prenumeration och region returneras.
Jokerteckenfilter
Om du använder ett jokerteckenfilter somMicrosoft.ResourceId eq '*'
gör att API:et returnerar en tidsserie för varje resourceId i prenumerationen och regionen. Om kombinationen prenumeration och region inte innehåller några resurser returneras en tom tidsserie. Samma fråga utan jokerteckenfiltret returnerar en enda tidsserie och aggregerar det begärda måttet över de begärda dimensionerna, till exempel prenumeration och region.Anpassade mått stöds inte för närvarande.
API:etmetrics:getBatch
stöder inte frågor mot anpassade mått eller frågor där namnet på måttnamnområdet inte är en resurstyp. Detta gäller för VM-mått för gästoperativsystem som använder namnområdet "azure.vm.windows.guestmetrics" eller "azure.vm.linux.guestmetrics".Den översta parametern gäller per angivet resurs-ID.
Hur den översta parametern fungerar i kontexten för batch-API:et kan vara lite förvirrande. I stället för att framtvinga en gräns för den totala tidsserie som returneras av hela anropet framtvingar den i stället den totala tidsserie som returneras per mått per resurs-ID. Om du har en batchfråga med många *-filter angivna, två mått och fyra resurs-ID:er med en topp på 5. Den maximala möjliga tidsserie som returneras av den frågan är 40, dvs. 2x4x5-tidsserier.
401-auktoriseringsfel
Api:et för enskilda mått kräver att en användare har behörigheten Övervakningsläsare för resursen som efterfrågas. Eftersom API:et metrics:getBatch
är ett API på prenumerationsnivå måste användarna ha behörigheten Övervakningsläsare för den efterfrågade prenumerationen för att kunna använda batch-API:et. Även om användarna har övervakningsläsare för alla resurser som efterfrågas i batch-API:et misslyckas begäran om användaren inte har övervakningsläsare för själva prenumerationen.
529 begränsningsfel
Batch-API:et för dataplanet är utformat för att minimera begränsningsproblem, men 529 felkoder kan fortfarande inträffa, vilket indikerar att måttserverdelen för närvarande begränsar vissa kunder. Den rekommenderade åtgärden är att implementera ett exponentiellt återförsöksschema för backoff.
Sidnumrering
Växling stöds inte av API:getBatch. Det vanligaste användningsfallet för det här API:et är att anropa med några minuters mellanrum för samma mått och resurser för den senaste tidsramen. Låg svarstid är ett viktigt övervägande så många kunder parallelliserar sina frågor så mycket som möjligt. Växling tvingar kunder till ett sekventiellt anropsmönster som introducerar ytterligare frågesvarstid. I scenarier där begäranden returnerar volymer av måttdata där växling skulle vara fördelaktigt rekommenderar vi att du delar upp frågan i flera parallella frågor.
Fakturering
Ja, alla måttdataplan och batchanrop faktureras. Mer information finns i avsnittet inbyggda mått i Azure Monitor i Grundläggande loggsökningsfrågor.