Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Monitor-hanterad tjänst för Prometheus samlar in mått från Azure Kubernetes-kluster och lagrar dem på en Azure Monitor-arbetsyta. Prometheus Query Language (PromQL) är ett funktionellt frågespråk som du kan använda för att fråga efter och aggregera tidsseriedata. Använd PromQL för att fråga efter och aggregera mått som lagras på en Azure Monitor-arbetsyta.
Den här artikeln beskriver hur du frågar en Azure Monitor-arbetsyta med promQL via REST-API:et. Mer information om PromQL finns i Fråga Prometheus.
Prerequisites
Om du vill köra frågor mot en Azure Monitor-arbetsyta med PromQL behöver du:
- Ett Azure Kubernetes-kluster eller ett fjärranslutet Kubernetes-kluster.
- Azure Monitor-hanterad tjänst för Prometheus som samlar in mått från ett Kubernetes-kluster.
- En Azure Monitor-arbetsyta där Prometheus-mått lagras.
Authentication
För att köra frågor mot din Azure Monitor-arbetsyta autentiserar du med hjälp av Microsoft Entra-ID. API:et stöder Microsoft Entra-autentisering med hjälp av klientautentiseringsuppgifter. Registrera en klientapp med Microsoft Entra-ID och begär en token.
Följ dessa steg för att konfigurera Microsoft Entra-autentisering:
- Registrera en app med Microsoft Entra-ID.
- Bevilja åtkomst för appen till din Azure Monitor-arbetsyta.
- Begär en token.
Registrera en app med Microsoft Entra-ID
Om du vill registrera en app följer du stegen i Registrera en app för att begära auktoriseringstoken och arbeta med API:er.
Ge din app åtkomst till din arbetsyta
Tilldela rollen Övervakningsdataläsare till din app så att den kan köra frågor mot data från din Azure Monitor-arbetsyta.
Öppna din Azure Monitor-arbetsyta i Azure Portal.
På sidan Översikt noterar du din frågeslutpunkt för användning i din REST-begäran.
Välj Åtkomstkontroll (IAM).
På sidan Åtkomstkontroll (IAM) väljer du Lägg till>rolltilldelning.
På sidan Lägg till rolltilldelning söker du efter Övervakning.
Välj Övervaka dataläsare och välj sedan fliken Medlemmar .
Välj Välj medlemmar.
Sök efter den app som du registrerade och välj den.
Välj Välj.
Välj Granska + tilldela.
Du har skapat din appregistrering och tilldelat den åtkomst för att söka efter data från din Azure Monitor-arbetsyta. Nu kan du generera en token och använda den i en fråga.
Begära en token
Skicka följande begäran i kommandotolken eller med hjälp av en klient som Insomnia eller PowerShell-kommandot Invoke-RestMethod .
curl -X POST 'https://login.microsoftonline.com/<tenant 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://prometheus.monitor.azure.com'
Exempelsvarstext
{
"token_type": "Bearer",
"expires_in": "86399",
"ext_expires_in": "86399",
"expires_on": "1672826207",
"not_before": "1672739507",
"resource": "https:/prometheus.monitor.azure.com",
"access_token": "eyJ0eXAiOiJKV1Qi....gpHWoRzeDdVQd2OE3dNsLIvUIxQ"
}
Spara åtkomsttoken från svaret för användning i följande HTTP-begäranden.
Frågeslutpunkt
Hitta din Azure Monitor-arbetsytas frågeslutpunkt på sidan Översikt över Azure Monitor-arbetsyta.
API:er som stöds
Följande frågor stöds.
Omedelbara frågor
Mer information finns i Snabbfrågor.
Stig:/api/v1/query
Examples
POST https://k8s-02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/query
--header 'Authorization: Bearer <access token>'
--header 'Content-Type: application/x-www-form-urlencoded'
--data-urlencode 'query=sum( \
container_memory_working_set_bytes \
* on(namespace,pod) \
group_left(workload, workload_type) \
namespace_workload_pod:kube_pod_owner:relabel{ workload_type="deployment"}) by (pod)'
GET 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/query?query=container_memory_working_set_bytes'
--header 'Authorization: Bearer <access token>'
Intervallfrågor
Mer information finns i Intervallfrågor.
Stig:/api/v1/query_range
Examples
GET 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/query_range?query=container_memory_working_set_bytes&start=2023-03-01T00:00:00.000Z&end=2023-03-20T00:00:00.000Z&step=6h'
--header 'Authorization: Bearer <access token>
POST 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/query_range'
--header 'Authorization: Bearer <access token>'
--header 'Content-Type: application/x-www-form-urlencoded'
--data-urlencode 'query=up'
--data-urlencode 'start=2023-03-01T20:10:30.781Z'
--data-urlencode 'end=2023-03-20T20:10:30.781Z'
--data-urlencode 'step=6h'
Series
Mer information finns i Serie.
Sökväg:/api/v1/series
Examples
POST 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/series'
--header 'Authorization: Bearer <access token>
--header 'Content-Type: application/x-www-form-urlencoded'
--data-urlencode 'match[]=kube_pod_info{pod="bestapp-123abc456d-4nmfm"}'
GET 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/series?match[]=container_network_receive_bytes_total{namespace="default-1669648428598"}'
Labels
Mer information finns i Etiketter.
Stig:/api/v1/labels
Examples
GET 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/labels'
POST 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/labels'
Etikettvärden
Mer information finns i Etikettvärden.
Stig:/api/v1/label/__name__/values
Note
Den enda version som stöds av det här API:et är __name__och returnerar alla måttnamn. Inga andra /api/v1/label/<label_name>/values stöds.
Example
GET 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/label/__name__/values'
Fullständig specifikation av prometheus-API:er för programvara med öppen källkod finns i Prometheus HTTP API.
API-begränsningar
Följande begränsningar är utöver de begränsningar som beskrivs i Prometheus-specifikationen:
Alla frågor om tidsseriehämtningar (
/serieseller/queryeller/query_range) måste innehålla en\_\_name\_\_etikettmatchare. Varje fråga måste alltså begränsas till ett mått. Det kan bara finnas en\_\_name\_\_etikettmatchare i en förfrågan.Frågan
/seriesstöder inte filter för reguljära uttryck.Tidsintervall som stöds:
- API:et
/query_rangestöder ett tidsintervall på 32 dagar. Den här tidsperioden är det maximala tillåtna tidsintervallet, inklusive intervallväljare som anges i själva frågan. Fråganrate(http_requests_total[1h]under de senaste 24 timmarna innebär till exempel att data efterfrågas i 25 timmar. Det här talet kommer från 24-timmarsintervallet plus den 1 timme som anges i själva frågan. - API:et
/serieshämtar data för ett maximalt tidsintervall på 12 timmar. OmendTimeinte anges, såendTime = time.now(). Om tidsintervallet är större än 12 timmar angesstartTimetillendTime – 12h.
- API:et
Starttid och sluttid som anges med
/labelsoch/label/__name__/valuesignoreras. Alla kvarhållna data på Azure Monitor-arbetsytan efterfrågas.Experimentella funktioner som exempelvis exemplar stöds inte.
Mer information om Prometheus-måttgränser finns i Prometheus-mått.
Skiftlägesberoende
Den hanterade tjänsten i Azure Monitor för Prometheus är ett skiftlägesokänsligt system. Den behandlar strängar (till exempel måttnamn, etikettnamn eller etikettvärden) som samma tidsserie om de skiljer sig från en annan tidsserie endast när det gäller strängen.
Note
Det här beteendet skiljer sig från native öppen källkodssystemet Prometheus, som är ett skiftlägeskänsligt system. Självhanterade Prometheus-instanser som körs på virtuella Azure-datorer, skalningsgrupper för virtuella datorer eller Azure Kubernetes Service-kluster är skiftlägeskänsliga system.
I den hanterade tjänsten för Prometheus anses följande tidsserie vara densamma:
diskSize(cluster="eastus", node="node1", filesystem="usr_mnt")
diskSize(cluster="eastus", node="node1", filesystem="usr_MNT")
Föregående exempel är en enda tidsserie i en tidsseriedatabas. Följande gäller:
- Alla prover som matas in till dem lagras som om de skrapas eller matas in till en enda tidsserie.
- Om föregående exempel matas in med samma tidsstämpel släpps en av dem slumpmässigt.
- Höljet som lagras i tidsseriedatabasen och returneras av en fråga är oförutsägbart. Samma tidsserier kan returnera olika höljen vid olika tidpunkter.
- Alla måttnamn eller etikettnamn/värdematchare som finns i frågan hämtas från tidsseriedatabasen via en skiftlägesokänslig jämförelse. Om det finns en skiftlägeskänslig matchare i en fråga behandlas den automatiskt som en skiftlägesokänslig matchare i strängjämförelser.
Det är bästa praxis att använda ett enda konsekvent fall för att producera eller skrapa en tidsserie.
Prometheus med öppen källkod behandlar föregående exempel som två olika tidsserier. Alla prover som skrapas eller matas in mot dem lagras separat.
Undvika duplicerade tidsserier
Prometheus stöder inte duplicerade tidsserier. Azure Managed Prometheus visar dessa för användarna som 422-fel i stället för att tyst släppa duplicerade tidsserier. Användare som stöter på dessa fel bör vidta åtgärder för att undvika duplicering av tidsserier.
Om en användare till exempel använder samma "kluster"-etikettvärde för två olika kluster som lagras i olika resursgrupper men matas in till samma AMW, bör de byta namn på en av dessa etiketter för unikhet. Det här felet uppstår endast i gränsfall där tidsstämpeln och värdena är identiska i båda kluster i det här scenariot.
Detta kan åtgärdas genom att lägga till en unik identifieraretikett, ominstrumentera en befintlig etikett som var avsedd att vara unik eller använda relabel_configs för att mata in eller ändra etiketter vid skrapning.
Vanliga frågor
Den här sektionen ger svar på vanliga frågor.
Jag saknar alla eller några av mina mått. Hur felsöker jag?
Använd felsökningsguiden för att lära dig hur du matar in Prometheus-mått från den hanterade agenten.
Varför saknar jag mått som har två etiketter med samma namn men ett annat hölje?
Azure Managed Prometheus är ett skiftlägesokänsligt system. Den behandlar strängar, till exempel måttnamn, etikettnamn eller etikettvärden, som samma tidsserie om de endast skiljer sig från en annan tidsserie när det gäller strängen. Mer information finns i Översikt över Prometheus-mått.
Jag ser vissa luckor i måttdata. Varför inträffar det här beteendet?
Under noduppdateringar kan du se ett mellanrum på en minut till två minuter i måttdata för mått som samlats in från våra insamlare på klusternivå. Det här felet beror på att noden som data körs på uppdateras som en del av en normal uppdateringsprocess. Den här uppdateringsprocessen påverkar klusteromfattande mål som kube-state-metrics och anpassade programmål som anges. Den här processen inträffar när klustret uppdateras manuellt eller via automatisk uppdatering.
Det här beteendet är förväntat och påverkar inte några av våra rekommenderade aviseringsregler.