Megosztás a következőn keresztül:


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:

  1. Alkalmazás regisztrálása a Microsoft Entra-azonosítóval.
  2. Adjon hozzáférést az alkalmazásnak az Azure Monitor-munkaterülethez.
  3. Jogkivonat kérése.

Alkalmazás regisztrálása a Microsoft Entra-azonosítóval

  1. 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.

  1. Nyissa meg az Azure Monitor-munkaterületet az Azure Portalon.

  2. Az Áttekintés lapon jegyezze fel a lekérdezésvégpontot a REST-kérelemben való használathoz.

  3. Válassza a Hozzáférés-vezérlés (IAM) lehetőséget.

  4. 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 screenshot showing the Azure Monitor workspace overview page.

  5. A Szerepkör-hozzárendelés hozzáadása lapon keresse meg a Figyelést.

  6. Válassza az Adatolvasó figyelése lehetőséget, majd a Tagok lapot.

    A screenshot showing the Add role assignment page.

  7. Válassza a Tagok kijelölése lehetőséget.

  8. Keresse meg a regisztrált alkalmazást, és jelölje ki.

  9. Válassza a Kiválasztás lehetőséget

  10. Válassza a Véleményezés + hozzárendelés lehetőséget.

    A screenshot showing the Add role assignment, select members page.

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 egy olyan ügyféllel, mint a Postman.

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://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.

A screenshot sowing the query endpoint on the Azure Monitor workspace overview page.

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 a startTime következőre van állítva: endTime – 12h
  • 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

Az Azure által felügyelt Prometheus egy kis- és nagybetűket érzéketlen rendszer. Azonos idősorként kezeli a sztringeket, például a metrikaneveket, a címkeneveket vagy a címkeértékeket, ha 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űk megkülönböztetése.

Az Azure által felügyelt Prometheusban a következő idősorok tekinthetők azonosnak:

diskSize(cluster="eastus", node="node1", filesystem="usr_mnt")
diskSize(cluster="eastus", node="node1", filesystem="usr_MNT")

A fenti példák egyetlen idősort jelentenek egy idősor-adatbázisban.

  • Az ellenük beszúrt mintákat a rendszer úgy tárolja, mintha egyetlen idősorba kaparják/beszúrják őket.
  • Ha az előző példák azonos időbélyeggel vannak betöltve, 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. A különböző burkolatok ugyanabban az idősorban eltérő időpontokban is visszaadhatók.
  • A lekérdezésben található metrikanév vagy címkenév/értékegyeztető lekéri az idősor-adatbázisbó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 a sztring-összehasonlítások során automatikusan megkülönbözteti a kis- és nagybetűket.

Az ajánlott eljárás annak biztosítása, hogy egy idősort egyetlen konzisztens eset használatával állítson elő vagy kaparjon le.

A Nyílt forráskódú Prometheusban a fenti idősorok két különböző idősorként lesznek kezelve. A lekaparott/beszúrt mintákat külön tároljuk.

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. Azonos idősorként kezeli a sztringeket, például a metrikaneveket, a címkeneveket vagy a címkeértékeket, ha csak a sztring esetében térnek el egy másik idősortó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 várható, és annak a csomópontnak a következtében következik be, 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