Genomgång av REST API för Azure-övervakning
Den här artikeln visar hur du använder REST API-referensen för Azure Monitor.
Hämta måttdefinitioner, dimensionsvärden och måttvärden med hjälp av Azure Monitor-API:et och använd data i dina program eller lagra dem i en databas för analys. Du kan också lista aviseringsregler och visa aktivitetsloggar med hjälp av Azure Monitor-API:et.
Autentisera Azure Monitor-begäranden
Begäran som skickas med azure monitor-API:et använder Azure Resource Manager-autentiseringsmodellen. Alla begäranden autentiseras med Microsoft Entra-ID. En metod för att autentisera klientprogrammet är att skapa ett Huvudnamn för Microsoft Entra-tjänsten och hämta en autentiseringstoken. Du kan skapa ett Microsoft Entra-tjänsthuvudnamn med hjälp av Azure Portal, CLI eller PowerShell. Mer information finns i Registrera en app för att begära auktoriseringstoken och arbeta med API:er.
Hämta en token
När du har skapat ett huvudnamn för tjänsten hämtar du en åtkomsttoken. Ange resource=https://management.azure.com
i tokenbegäran.
Hämta en autentiseringstoken med någon av följande metoder:
- CLI
- REST-API
- SDK
När du begär en token måste du ange en resource
parameter. Parametern resource
är URL:en för den resurs som du vill komma åt.
Resurserna omfattar:
https://management.azure.com
https://api.loganalytics.io
https://monitoring.azure.com
Hämta en token med hjälp av en REST-begäran
Använd följande REST API-anrop för att hämta en token. Den här begäran använder ett klient-ID och en klienthemlighet för att autentisera begäran. Klient-ID och klienthemlighet hämtas när du registrerar ditt program med Microsoft Entra-ID. Mer information finns i Registrera en app för att begära auktoriseringstoken och arbeta med API:er
curl -X POST 'https://login.microsoftonline.com/<tennant ID>/oauth2/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=<your apps client ID>' \
--data-urlencode 'client_secret=<your apps client secret' \
--data-urlencode 'resource=https://monitoring.azure.com'
Svarstexten visas i följande format:
{
"token_type": "Bearer",
"expires_in": "86399",
"ext_expires_in": "86399",
"expires_on": "1672826207",
"not_before": "1672739507",
"resource": "https://monitoring.azure.com",
"access_token": "eyJ0eXAiOiJKV1Qi....gpHWoRzeDdVQd2OE3dNsLIvUIxQ"
}
När du har autentiserat och hämtat en token använder du åtkomsttoken i dina Azure Monitor API-begäranden genom att inkludera huvudet 'Authorization: Bearer <access token>'
Hämta resurs-ID:t
Användning av REST-API:et kräver resurs-ID för mål-Azure-resursen. Resurs-ID:t följer följande mönster:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/<provider>/<resource name>/
Till exempel
- Azure IoT Hub: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Devices/IotHubs/<iot-hub-name>
- Elastisk SQL-pool: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Sql/servers/<pool-db>/elasticpools/<sql-pool-name>
- Azure SQL Database (v12): /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Sql/servers/<server-name>/databases/<database-name>
- Azure Service Bus: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ServiceBus/<namespace>/<servicebus-name>
- Skalningsuppsättningar för virtuella Azure-datorer: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Compute/virtualMachineScaleSets/<vm-name>
- Virtuella Azure-datorer: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Compute/virtualMachines/<vm-name>
- Azure Event Hubs: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.EventHub/namespaces/<eventhub-namespace>
Använd Azure Portal, PowerShell eller Azure CLI för att hitta resurs-ID:t.
Om du vill hitta resourceID i portalen går du till resursens översiktssida och väljer JSON-vy
Sidan Resurs-JSON visas. Resurs-ID:t kan kopieras med hjälp av ikonen till höger om ID:t.
API-slutpunkter
API-slutpunkterna använder följande mönster:
/<resource URI>/providers/microsoft.insights/<metrics|metricDefinitions>?api-version=<apiVersion>
resource URI
Består av följande komponenter:
/subscriptions/<subscription id>/resourcegroups/<resourceGroupName>/providers/<resourceProviderNamespace>/<resourceType>/<resourceName>/
Viktigt!
Se till att inkludera /providers/microsoft.insights/
efter resurs-URI:n när du gör ett API-anrop för att hämta mått eller måttdefinitioner.
Hämta måttdefinitioner
Använd REST-API:et för Måttdefinitioner för Azure Monitor för att komma åt listan över mått som är tillgängliga för en tjänst. Använd följande format för begäran för att hämta måttdefinitioner.
GET /subscriptions/<subscription id>/resourcegroups/<resourceGroupName>/providers/<resourceProviderNamespace>/<resourceType>/<resourceName>/providers/microsoft.insights/metricDefinitions?api-version=<apiVersion>
Host: management.azure.com
Content-Type: application/json
Authorization: Bearer <access token>
Följande begäran hämtar till exempel måttdefinitionerna för ett Azure Storage-konto.
curl --location --request GET 'https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/microsoft.insights/metricDefinitions?api-version=2018-01-01'
--header 'Authorization: Bearer eyJ0eXAiOi...xYz
Följande JSON visar ett exempel på svarstext. I det här exemplet är det bara det andra måttet som har dimensioner.
{
"value": [
{
"id": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/microsoft.insights/metricdefinitions/UsedCapacity",
"resourceId": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage",
"namespace": "Microsoft.Storage/storageAccounts",
"category": "Capacity",
"name": {
"value": "UsedCapacity",
"localizedValue": "Used capacity"
},
"isDimensionRequired": false,
"unit": "Bytes",
"primaryAggregationType": "Average",
"supportedAggregationTypes": [
"Total",
"Average",
"Minimum",
"Maximum"
],
"metricAvailabilities": [
{
"timeGrain": "PT1H",
"retention": "P93D"
},
...
{
"timeGrain": "PT12H",
"retention": "P93D"
},
{
"timeGrain": "P1D",
"retention": "P93D"
}
]
},
{
"id": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/microsoft.insights/metricdefinitions/Transactions",
"resourceId": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage",
"namespace": "Microsoft.Storage/storageAccounts",
"category": "Transaction",
"name": {
"value": "Transactions",
"localizedValue": "Transactions"
},
"isDimensionRequired": false,
"unit": "Count",
"primaryAggregationType": "Total",
"supportedAggregationTypes": [
"Total"
],
"metricAvailabilities": [
{
"timeGrain": "PT1M",
"retention": "P93D"
},
{
"timeGrain": "PT5M",
"retention": "P93D"
},
...
{
"timeGrain": "PT30M",
"retention": "P93D"
},
{
"timeGrain": "PT1H",
"retention": "P93D"
},
...
{
"timeGrain": "P1D",
"retention": "P93D"
}
],
"dimensions": [
{
"value": "ResponseType",
"localizedValue": "Response type"
},
{
"value": "GeoType",
"localizedValue": "Geo type"
},
{
"value": "ApiName",
"localizedValue": "API name"
}
]
},
...
]
}
Kommentar
Vi rekommenderar att du använder API-versionen "2018-01-01" eller senare. Äldre versioner av måttdefinitions-API:et stöder inte dimensioner.
Hämta dimensionsvärden
När du har hämtat tillgängliga måttdefinitioner hämtar du intervallet med värden för måttets dimensioner. Använd dimensionsvärden för att filtrera eller segmentera måtten i dina frågor. Använd REST-API:et för Azure Monitor Metrics för att hitta alla värden för en viss måttdimension.
Använd måttelementet name.value
i filterdefinitionerna. Om inga filter anges returneras standardmåttet. API:et tillåter bara att en dimension har ett jokerteckenfilter.
Ange begäran om dimensionsvärden med hjälp av frågeparametern "resultType=metadata"
. Utelämnas resultType
för en begäran om måttvärden.
Kommentar
Om du vill hämta dimensionsvärden med hjälp av Azure Monitor REST API använder du API-versionen "2019-07-01" eller senare.
Använd följande format för begäran för att hämta dimensionsvärden.
GET /subscriptions/<subscription-id>/resourceGroups/
<resource-group-name>/providers/<resource-provider-namespace>/
<resource-type>/<resource-name>/providers/microsoft.insights/
metrics?metricnames=<metric>
×pan=<starttime/endtime>
&$filter=<filter>
&resultType=metadata
&api-version=<apiVersion> HTTP/1.1
Host: management.azure.com
Content-Type: application/json
Authorization: Bearer <access token>
I följande exempel hämtas listan med dimensionsvärden som har genererats för API Name
måttets Transactions
dimension, där dimensionen GeoType
har värdet Primary
, för det angivna tidsintervallet.
curl --location --request GET 'https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/microsoft.insights/metrics \
?metricnames=Transactions \
×pan=2023-03-01T00:00:00Z/2023-03-02T00:00:00Z \
&resultType=metadata \
&$filter=GeoType eq \'Primary\' and ApiName eq \'*\' \
&api-version=2019-07-01'
-header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJ0e..meG1lWm9Y'
Följande JSON visar ett exempel på svarstext.
{
"timespan": "2023-03-01T00:00:00Z/2023-03-02T00:00:00Z",
"value": [
{
"id": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/Microsoft.Insights/metrics/Transactions",
"type": "Microsoft.Insights/metrics",
"name": {
"value": "Transactions",
"localizedValue": "Transactions"
},
"unit": "Count",
"timeseries": [
{
"metadatavalues": [
{
"name": {
"value": "apiname",
"localizedValue": "apiname"
},
"value": "DeleteBlob"
}
]
},
{
"metadatavalues": [
{
"name": {
"value": "apiname",
"localizedValue": "apiname"
},
"value": "SetBlobProperties"
}
]
},
...
]
}
],
"namespace": "Microsoft.Storage/storageAccounts",
"resourceregion": "eastus"
}
Hämta måttvärden
När du har hämtat måttdefinitionerna och dimensionsvärdena hämtar du måttvärdena. Använd REST-API:et för Azure Monitor Metrics för att hämta måttvärdena.
Använd måttelementet name.value
i filterdefinitionerna. Om inga dimensionsfilter anges returneras det samlade måttet.
Flera tidsserier
En tidsserie är en uppsättning datapunkter som sorteras efter tid för en viss kombination av dimensioner. En dimension är en aspekt av måttet som beskriver datapunkten, till exempel resurs-ID, region eller ApiName.
- Om du vill hämta flera tidsserier med specifika dimensionsvärden anger du en filterfrågeparameter som anger båda dimensionsvärdena,
"&$filter=ApiName eq 'ListContainers' or ApiName eq 'GetBlobServiceProperties'"
till exempel . I det här exemplet får du en tidsserie därApiName
ärListContainers
och en andra tidsserie därApiName
ärGetBlobServiceProperties
. - Om du vill returnera en tidsserie för varje värde i en viss dimension använder du ett
*
filter som"&$filter=ApiName eq '*'"
.Top
Använd frågeparametrarna ochOrderBy
för att begränsa och sortera antalet returnerade tidsserier. I det här exemplet får du en tidsserie för varje värdeApiName
i resultatuppsättningen. Om inga data returneras returnerar API:et en tom tidsserie"timeseries": []
.
Kommentar
Om du vill hämta flerdimensionella måttvärden med hjälp av Azure Monitor REST API använder du API-versionen "2019-07-01" eller senare.
Använd följande format för begäran för att hämta måttvärden.
GET /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/<resource-provider-namespace>/<resource-type>/<resource-name>/providers/microsoft.insights/metrics?metricnames=<metric>×pan=<starttime/endtime>&$filter=<filter>&interval=<timeGrain>&aggregation=<aggreation>&api-version=<apiVersion>
Host: management.azure.com
Content-Type: application/json
Authorization: Bearer <access token>
I följande exempel hämtas de tre främsta API:erna efter antalet Transactions
i fallande värdeordning under ett intervall på 5 minuter, där dimensionen GeoType
har värdet Primary
.
curl --location --request GET 'https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/microsoft.insights/metrics \
?metricnames=Transactions \
×pan=2023-03-01T02:00:00Z/2023-03-01T02:05:00Z \
& $filter=apiname eq '\''GetBlobProperties'\'
&interval=PT1M \
&aggregation=Total \
&top=3 \
&orderby=Total desc \
&api-version=2019-07-01"' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer yJ0eXAiOi...g1dCI6Ii1LS'
Följande JSON visar ett exempel på svarstext.
{
"cost": 0,
"timespan": "2023-03-01T02:00:00Z/2023-03-01T02:05:00Z",
"interval": "PT1M",
"value": [
{
"id": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/Microsoft.Insights/metrics/Transactions",
"type": "Microsoft.Insights/metrics",
"name": {
"value": "Transactions",
"localizedValue": "Transactions"
},
"unit": "Count",
"timeseries": [
{
"metadatavalues": [
{
"name": {
"value": "apiname",
"localizedValue": "apiname"
},
"value": "GetBlobProperties"
}
],
"data": [
{
"timeStamp": "2023-09-19T02:00:00Z",
"total": 2
},
{
"timeStamp": "2023-09-19T02:01:00Z",
"total": 1
},
{
"timeStamp": "2023-09-19T02:02:00Z",
"total": 3
},
{
"timeStamp": "2023-09-19T02:03:00Z",
"total": 7
},
{
"timeStamp": "2023-09-19T02:04:00Z",
"total": 2
}
]
},
...
]
}
],
"namespace": "Microsoft.Storage/storageAccounts",
"resourceregion": "eastus"
}
Köra frågor mot mått för flera resurser i taget.
Förutom att fråga efter mått på en enskild resurs har vissa resurstyper även stöd för frågor om flera resurser i en enda begäran. Dessa API:er är det som driver multiresursupplevelsen i Azure Metrics Explorer. Den uppsättning resurstyper som stöder frågor om flera mått kan visas på bladet Mått i Azure Monitor via listrutan resurstyp i omfångsväljaren på kontextbladet. Mer information finns i dokumentationen om UX för flera resurser.
Det finns några viktiga skillnader mellan att fråga efter mått för flera och enskilda resurser.
- Mått med flera resurs-API:er fungerar på prenumerationsnivå i stället för resurs-ID-nivån. Den här begränsningen innebär att användare som frågar dessa API:er måste ha behörigheter för övervakningsläsare för själva prenumerationen.
- Api:er för flera resurser för mått stöder endast en enskild resourceType per fråga, som måste anges i form av en frågeparameter för måttnamnområde.
- Mått med flera resurs-API:er stöder endast en enskild Azure-region per fråga, som måste anges i form av en regionfrågeparameter.
Köra frågor mot mått för flera resursexempel
I följande exempel visas en begäran om enskilda måttdefinitioner:
GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM1/providers/microsoft.insights/metricdefinitions?api-version=2021-05-01
Följande begäran visar motsvarande begäran om måttdefinitioner för flera resurser.
De enda ändringarna är prenumerationssökvägen i stället för en resurs-ID-sökväg och tillägg av region
och metricNamespace
frågeparametrar.
GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/providers/microsoft.insights/metricdefinitions?api-version=2021-05-01®ion=eastus&metricNamespace=microsoft.compute/virtualmachines
I följande exempel visas en begäran om enskilda mått.
GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM1/providers/microsoft.Insights/metrics?timespan=2023-06-25T22:20:00.000Z/2023-06-26T22:25:00.000Z&interval=PT5M&metricnames=Percentage CPU&aggregation=average&api-version=2021-05-01
Nedan visas en motsvarande måttbegäran för flera resurser:
GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/providers/microsoft.Insights/metrics?timespan=2023-06-25T22:20:00.000Z/2023-06-26T22:25:00.000Z&interval=PT5M&metricnames=Percentage CPU&aggregation=average&api-version=2021-05-01®ion=eastus&metricNamespace=microsoft.compute/virtualmachines&$filter=Microsoft.ResourceId eq '*'
Kommentar
Ett Microsoft.ResourceId eq '*'
filter läggs till i exemplet för begäranden om flerresursmått. *
Filtret instruerar API:et att returnera en separat tidsserie för varje virtuell datorresurs som har data i prenumerationen och regionen. Utan filtret returnerar API:et en enda tidsserie som aggregerar den genomsnittliga PROCESSORn för alla virtuella datorer. Tidsserierna för varje resurs särskiljs av Microsoft.ResourceId
metadatavärdet för varje tidsseriepost, vilket visas i följande exempelreturvärde. Om det inte finns några resourceIds som hämtats av den här frågan returneras en tom tidsserie"timeseries": []
.
{
"timespan": "2023-06-25T22:35:00Z/2023-06-26T22:40:00Z",
"interval": "PT6H",
"value": [
{
"id": "subscriptions/12345678-abcd-98765432-abcdef012345/providers/Microsoft.Insights/metrics/Percentage CPU",
"type": "Microsoft.Insights/metrics",
"name": {
"value": "Percentage CPU",
"localizedValue": "Percentage CPU"
},
"displayDescription": "The percentage of allocated compute units that are currently in use by the Virtual Machine(s)",
"unit": "Percent",
"timeseries": [
{
"metadatavalues": [
{
"name": {
"value": "Microsoft.ResourceId",
"localizedValue": "Microsoft.ResourceId"
},
"value": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM1"
}
],
"data": [
{
"timeStamp": "2023-06-25T22:35:00Z",
"average": 3.2618888888888886
},
{
"timeStamp": "2023-06-26T04:35:00Z",
"average": 4.696944444444445
},
{
"timeStamp": "2023-06-26T10:35:00Z",
"average": 6.19701388888889
},
{
"timeStamp": "2023-06-26T16:35:00Z",
"average": 2.630347222222222
},
{
"timeStamp": "2023-06-26T22:35:00Z",
"average": 21.288999999999998
}
]
},
{
"metadatavalues": [
{
"name": {
"value": "Microsoft.ResourceId",
"localizedValue": "Microsoft.ResourceId"
},
"value": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM2"
}
],
"data": [
{
"timeStamp": "2023-06-25T22:35:00Z",
"average": 7.567069444444444
},
{
"timeStamp": "2023-06-26T04:35:00Z",
"average": 5.111835883171071
},
{
"timeStamp": "2023-06-26T10:35:00Z",
"average": 10.078277777777778
},
{
"timeStamp": "2023-06-26T16:35:00Z",
"average": 8.399097222222222
},
{
"timeStamp": "2023-06-26T22:35:00Z",
"average": 2.647
}
]
},
{
"metadatavalues": [
{
"name": {
"value": "Microsoft.ResourceId",
"localizedValue": "Microsoft.ResourceId"
},
"value": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/Common-TESTING/providers/Microsoft.Compute/virtualMachines/CommonVM1"
}
],
"data": [
{
"timeStamp": "2023-06-25T22:35:00Z",
"average": 6.892319444444444
},
{
"timeStamp": "2023-06-26T04:35:00Z",
"average": 3.5054305555555554
},
{
"timeStamp": "2023-06-26T10:35:00Z",
"average": 8.398817802503476
},
{
"timeStamp": "2023-06-26T16:35:00Z",
"average": 6.841666666666667
},
{
"timeStamp": "2023-06-26T22:35:00Z",
"average": 3.3850000000000002
}
]
}
],
"errorCode": "Success"
}
],
"namespace": "microsoft.compute/virtualmachines",
"resourceregion": "eastus"
}
Felsöka frågemått för flera resurser
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.401-auktoriseringsfel:
Api:erna för enskilda resursmått kräver att en användare har behörigheten Övervakningsläsare för resursen som efterfrågas. Eftersom API:erna för flerresursmått är API:er på prenumerationsnivå måste användarna ha behörigheten Övervakningsläsare för den efterfrågade prenumerationen för att kunna använda API:erna för flera resursmått. Även om användarna har övervakningsläsare för alla resurser i en prenumeration misslyckas begäran om användaren inte har övervakningsläsare för själva prenumerationen.
Nästa steg
- Granska översikten över övervakning.
- Visa mått som stöds med Azure Monitor.
- Granska REST API-referensen för Microsoft Azure Monitor.
- Granska de nya Azure Monitor Query-klientbiblioteken
- Granska Azure Management Library.
- Hämta aktivitetsloggdata med azure monitor REST API.