Prometheus-metrikák lekérdezése az API és a PromQL használatával
Az Azure Monitor prometheushoz készült felügyelt szolgáltatása összegyűjti az Azure Kubernetes-fürtökből származó metrikákat, és egy Azure Monitor-munkaterületen tárolja őket. A PromQL (Prometheus lekérdezési nyelv) egy funkcionális lekérdezési nyelv, amely lehetővé teszi az idősoradatok lekérdezését és összesítését. A PromQL használatával lekérdezheti és összesítheti az Azure Monitor-munkaterületen tárolt metrikákat.
Ez a cikk azt ismerteti, hogyan kérdezhet le egy Azure Monitor-munkaterületet a PromQL használatával a REST API-n keresztül. A PromQL-ről további információt a Prometheus lekérdezése című témakörben talál.
Előfeltételek
Ha le szeretne kérdezni egy Azure Monitor-munkaterületet a PromQL használatával, a következő előfeltételekre van szüksége:
- Azure Kubernetes-fürt vagy távoli Kubernetes-fürt.
- Az Azure Monitor által felügyelt szolgáltatás prometheus-kaparási metrikákat kap egy Kubernetes-fürtből.
- Egy Azure Monitor-munkaterület, ahol a Prometheus-metrikákat tárolják.
Hitelesítés
Az Azure Monitor-munkaterület lekérdezéséhez hitelesíthet a Microsoft Entra-azonosítóval. Az API az ügyfél hitelesítő adataival támogatja a Microsoft Entra-hitelesítést. Regisztráljon egy ügyfélalkalmazást a Microsoft Entra-azonosítóval, és kérjen jogkivonatot.
A Microsoft Entra-hitelesítés beállításához kövesse az alábbi lépéseket:
- Alkalmazás regisztrálása a Microsoft Entra-azonosítóval.
- Adjon hozzáférést az alkalmazásnak az Azure Monitor-munkaterülethez.
- Jogkivonat kérése.
Alkalmazás regisztrálása a Microsoft Entra-azonosítóval
- Alkalmazás regisztrálásához kövesse az alkalmazás regisztrálása engedélyezési jogkivonatok kéréséhez és az API-k használatához szükséges lépéseket
Alkalmazás hozzáférésének engedélyezése a munkaterülethez
Rendelje hozzá az alkalmazás monitorozási adatolvasó szerepkörét, hogy adatokat kérdezhesse le az Azure Monitor-munkaterületről.
Nyissa meg az Azure Monitor-munkaterületet az Azure Portalon.
Az Áttekintés lapon jegyezze fel a lekérdezésvégpontot a REST-kérelemben való használathoz.
Válassza a Hozzáférés-vezérlés (IAM) lehetőséget.
Válassza a Hozzáadás, majd a Szerepkör-hozzárendelés hozzáadása lehetőséget a Hozzáférés-vezérlés (IAM) lapon.
A Szerepkör-hozzárendelés hozzáadása lapon keresse meg a Figyelést.
Válassza az Adatolvasó figyelése lehetőséget, majd a Tagok lapot.
Válassza a Tagok kijelölése lehetőséget.
Keresse meg a regisztrált alkalmazást, és jelölje ki.
Válassza a Kiválasztás lehetőséget
Válassza az Áttekintés + hozzárendelés lehetőséget.
Létrehozta az alkalmazásregisztrációt, és hozzá lett rendelve az Azure Monitor-munkaterület adatainak lekérdezéséhez. Most már létrehozhat egy jogkivonatot, és használhatja egy lekérdezésben.
Jogkivonat kérése
Küldje el a következő kérést a parancssorban, vagy használjon olyan ügyfelet, mint az Insomnia vagy a PowerShell Invoke-RestMethodja
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'
Minta válasz törzse:
{
"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"
}
Mentse a hozzáférési jogkivonatot a válaszból a következő HTTP-kérésekben való használatra.
Lekérdezési végpont
Keresse meg az Azure Monitor-munkaterület lekérdezési végpontját az Azure Monitor-munkaterület áttekintési oldalán.
Támogatott API-k
A következő lekérdezések támogatottak:
Azonnali lekérdezések
További információ: Azonnali lekérdezések
Elérési út: /api/v1/query
Példák:
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>'
Tartomány-lekérdezések
További információ: Tartomány-lekérdezések
Elérési út: /api/v1/query_range
Példák:
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'
Adatsorozat
További információ: Sorozat
Elérési út: /api/v1/series
Példák:
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"}'
Címkék
További információ: Címkék elérési útja: /api/v1/labels
Példák:
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'
Címkeértékek
További információ: Címkeértékek
Elérési út: /api/v1/label/__name__/values.
Feljegyzés
__name__
az API egyetlen támogatott verziója, és az összes metrikanevet visszaadja. Más /api/v1/label/<label_name>/értékek nem támogatottak.
Példa:
GET 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/label/__name__/values'
Az OSS prom API-k teljes specifikációját lásd: Prometheus HTTP API.
API-korlátozások
A Prometheus specifikációjában részletezett korlátozások mellett az alábbi korlátozások is szerepelnek.
- A lekérdezést metrikára kell korlátozni
Az idősorok lekérdezésének (/series vagy /query vagy /query_range) __name__ címkeegyezőt kell tartalmaznia. Vagyis minden lekérdezésnek egy metrika hatókörébe kell tartoznia. Egy lekérdezésben csak egy __name__ címkeegyező lehet. - A lekérdezés /sorozat nem támogatja a reguláris kifejezésszűrőt
- Támogatott időtartomány
- A /query_range API 32 napos időtartamot támogat. Ez az engedélyezett maximális időtartomány, beleértve a lekérdezésben megadott tartományválasztókat is.
Az utolsó 24 órás lekérdezés
rate(http_requests_total[1h]
például azt jelentené, hogy az adatok lekérése 25 órán keresztül történik. Ez a 24 órás tartományból és a lekérdezésben megadott 1 órából származik. - A /series API legfeljebb 12 órás időtartományban kér le adatokat. Ha
endTime
nincs megadva, endTime = time.now(). Ha az idő dühe nagyobb, mint 12 óra, a rendszer astartTime
következőre van állítva:endTime – 12h
- A /query_range API 32 napos időtartamot támogat. Ez az engedélyezett maximális időtartomány, beleértve a lekérdezésben megadott tartományválasztókat is.
Az utolsó 24 órás lekérdezés
- Figyelmen kívül hagyott időtartomány
A kezdési idő és a befejezési idő meg van adva/labels
és/label/__name__/values
figyelmen kívül lesz hagyva, és az Azure Monitor-munkaterületen tárolt összes adat lekérdezve lesz. - Kísérleti funkciók
A kísérleti funkciók, például a példaképek nem támogatottak.
További információ a Prometheus-metrikák korlátairól: Prometheus-metrikák
Kis- és nagybetűk érzékenysége
A Prometheushoz készült Azure Monitor felügyelt szolgáltatás egy kis- és nagybetűket érzéketlen rendszer. A sztringeket (például metrikaneveket, címkeneveket vagy címkeértékeket) azonos idősorként kezeli, ha azok csak a sztring esetében térnek el egy másik idősortól.
Feljegyzés
Ez a viselkedés eltér a natív nyílt forráskódú Prometheustól, amely egy kis- és nagybetűkre érzékeny rendszer. Az Azure-beli virtuális gépeken, virtuálisgép-méretezési csoportokban vagy Azure Kubernetes Service-fürtökben futó ön által felügyelt Prometheus-példányok megkülönböztetik a kis- és nagybetűket.
A Prometheus felügyelt szolgáltatásában a következő idősorok tekinthetők azonosnak:
diskSize(cluster="eastus", node="node1", filesystem="usr_mnt")
diskSize(cluster="eastus", node="node1", filesystem="usr_MNT")
Az előző példák egyetlen idősort jelentenek egy idősor-adatbázisban. A következő szempontokat kell figyelembe venni:
- Az ellenük beszúrt mintákat a rendszer úgy tárolja, mintha egyetlen idősorba kaparják vagy beszúrják őket.
- Ha az előző példákat ugyanazzal az időbélyeggel töltötték be, az egyiket véletlenszerűen elveti a rendszer.
- Az idősor-adatbázisban tárolt és lekérdezés által visszaadott burkolat kiszámíthatatlan. Előfordulhat, hogy ugyanaz az idősor eltérő burkolatot ad vissza különböző időpontokban.
- A lekérdezésben található metrikanév vagy címkenév/értékegyeztető lekéri az idősor adatbázisából a kis- és nagybetűket érzéketlen összehasonlítással. Ha egy lekérdezésben megkülönbözteti a kis- és nagybetűket, a rendszer automatikusan kis- és nagybetűkre érzékeny egyezőként kezeli a sztring-összehasonlításokban.
Ajánlott egyetlen konzisztens esetet használni egy idősor létrehozásához vagy lekaparásához.
A nyílt forráskódú Prometheus az előző példákat két különböző idősorként kezeli. Minden lekaparott vagy beszúrt mintát külön tárolunk.
Gyakori kérdések
Ez a szakasz választ ad a gyakori kérdésekre.
Hiányzik az összes metrikám vagy néhány metrikám. Hogyan háríthatom el a hibaelhárítást?
A prometheus-metrikák felügyelt ügynökből való betöltéséhez a hibaelhárítási útmutatót itt használhatja.
Miért hiányoznak olyan metrikák, amelyek két azonos nevű, de eltérő burkolatú címkével rendelkeznek?
Az Azure által felügyelt Prometheus egy kis- és nagybetűket érzéketlen rendszer. A program a karakterláncokat, például a metrikus neveket, a címkék neveit vagy a címkeértékeket azonos idősornak tekinti, ha azok csak a karakterlánc esetében különböznek a másik idősoroktól. További információ: Prometheus-metrikák áttekintése.
Látok néhány hiányosságot a metrikaadatokban, miért fordul elő ez?
A csomópontfrissítések során 1–2 perces eltérést tapasztalhat a fürtszintű gyűjtőktől gyűjtött metrikák metrikáiban. Ez a rés azért fordul elő, mert az adatok által futtatott csomópont egy normál frissítési folyamat részeként frissül. Ez a frissítési folyamat olyan fürtszintű célokat érint, mint a kube-state-metrics és a megadott egyéni alkalmazáspéldányok. Ez akkor fordul elő, ha a fürt manuálisan vagy automatikus frissítéssel frissül. Ez a viselkedés rendeltetésszerű, és azért következik be, mert frissül a csomópont, amelyen fut. Ez a viselkedés nem befolyásolja az ajánlott riasztási szabályok egyikét sem.
Következő lépések
Az Azure Monitor-munkaterületek áttekintése
Azure Monitor-munkaterület kezelése
Az Azure Monitor Prometheushoz készült felügyelt szolgáltatásának áttekintése
Prometheus-metrikák lekérdezése Azure-munkafüzetek használatával