Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Spravovaná služba Azure Monitor pro Prometheus shromažďuje metriky z clusterů Azure Kubernetes a ukládá je do pracovního prostoru služby Azure Monitor. Prometheus Query Language (PromQL) je funkční dotazovací jazyk, který můžete použít k dotazování a agregaci dat časových řad. Pomocí nástroje PromQL můžete dotazovat a agregovat metriky uložené v pracovním prostoru služby Azure Monitor.
Tento článek popisuje, jak dotazovat pracovní prostor služby Azure Monitor pomocí jazyka PromQL prostřednictvím rozhraní REST API. Další informace o nástroji PromQL najdete v tématu Dotaz prometheus.
Prerequisites
Pokud chcete dotazovat pracovní prostor Azure Monitoru pomocí nástroje PromQL, potřebujete:
- Cluster Azure Kubernetes nebo cluster Kubernetes dálkového přístupu.
- Spravovaná služba Azure Monitor pro Prometheus, která sbírá metriky z clusteru Kubernetes.
- Pracovní prostor služby Azure Monitor, ve kterém se ukládají metriky Prometheus.
Authentication
Pokud chcete dotazovat pracovní prostor Azure Monitoru, ověřte se pomocí Microsoft Entra ID. Rozhraní API podporuje ověřování Microsoft Entra pomocí přihlašovacích údajů klienta. Zaregistrujte klientskou aplikaci s ID Microsoft Entra a požádejte o token.
Pokud chcete nastavit ověřování Microsoft Entra, postupujte takto:
- Zaregistrujte aplikaci pomocí Microsoft Entra ID.
- Udělte aplikaci přístup k pracovnímu prostoru služby Azure Monitor.
- Požádejte o token.
Registrace aplikace pomocí Microsoft Entra ID
Pokud chcete aplikaci zaregistrovat, postupujte podle pokynů v části Registrace aplikace a požádejte o autorizační tokeny a práci s rozhraními API.
Povolit aplikaci přístup k vašemu pracovnímu prostoru
Přiřaďte aplikaci roli Čtenář dat monitorování, aby se mohl dotazovat na data z pracovního prostoru služby Azure Monitor.
Otevřete pracovní prostor Azure Monitoru na webu Azure Portal.
Na stránce Přehled si poznamenejte koncový bod dotazu pro použití v požadavku REST.
Vyberte Řízení přístupu (IAM) .
Na stránce Řízení přístupu (IAM) vyberte Přidat>přiřazení role.
Na stránce Přidat přiřazení role vyhledejte monitorování.
Vyberte Čtenář monitorovacích dat a pak vyberte kartu Členové.
Zvolte Vybrat členy.
Vyhledejte aplikaci, kterou jste zaregistrovali, a vyberte ji.
Zvolte Vybrat.
Vyberte Zkontrolovat a přiřadit.
Vytvořili jste registraci aplikace a přiřadili jste jí přístup k dotazování dat z pracovního prostoru služby Azure Monitor. Teď můžete vygenerovat token a použít ho v dotazu.
Vyžádání tokenu
Na příkazovém řádku nebo pomocí klienta, jako je Insomnia nebo příkaz PowerShell Invoke-RestMethod odešlete následující požadavek.
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'
Ukázkový text odpovědi
{
"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"
}
Uložte přístupový token z odpovědi pro použití v následujících požadavcích HTTP.
Koncový bod dotazu
Na stránce Přehled pracovního prostoru služby Azure Monitor vyhledejte koncový bod dotazu pracovního prostoru služby Azure Monitor.
Podporovaná rozhraní API
Podporují se následující dotazy.
Okamžité dotazy
Další informace najdete v tématu Okamžité dotazy.
Cesta:/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>'
Dotazy na rozsah
Další informace najdete v tématu Dotazy rozsahu.
Cesta:/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
Další informace najdete v tématu Série.
Cesta:/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
Další informace najdete v části Popisky.
Cesta:/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'
Hodnoty popisků
Pro více informací viz Hodnoty popisku.
Cesta:/api/v1/label/__name__/values
Note
Jediná podporovaná verze tohoto rozhraní API je __name__a vrátí všechny názvy metrik. Nejsou podporovány žádné jiné /api/v1/label/<label_name>/values.
Example
GET 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/label/__name__/values'
Úplnou specifikaci opensourcového softwaru Prometheus API najdete v tématu Prometheus HTTP API.
Omezení rozhraní API
Kromě omezení popsaných ve specifikaci Prometheus platí následující omezení:
Všechny dotazy řady time-series (
/seriesnebo/query/query_range) musí obsahovat\_\_name\_\_odpovídající popisek. To znamená, že každý dotaz musí být vymezen na metriku. V dotazu může být pouze jeden\_\_name\_\_porovnávač štítků.Dotaz
/seriesnepodporuje filtr regulárních výrazů.Podporovaný časový rozsah:
- Rozhraní
/query_rangeAPI podporuje časový rozsah 32 dnů. Tato doba je maximální povolený časový rozsah, včetně selektorů rozsahů zadaných v samotném dotazu. Například dotazrate(http_requests_total[1h]za posledních 24 hodin znamená, že se data dotazuje po dobu 25 hodin. Toto číslo pochází z rozmezí 24 hodin plus 1 hodina specifikovaná v rámci dotazu. - Rozhraní API
/seriesnačítá data pro maximální rozsah 12 hodin. PokudendTimenení zadaný, pakendTime = time.now(). Pokud je časový rozsah větší než 12 hodin,startTimeje nastaven naendTime – 12hhodnotu .
- Rozhraní
Počáteční a koncový čas poskytnuté
/labelsa/label/__name__/valuesjsou ignorovány. Všechna zachovaná data v pracovním prostoru služby Azure Monitor jsou dotazována.Experimentální funkce, jako jsou příklady, se nepodporují.
Další informace o limitech metrik Prometheus najdete v tématu Metriky Prometheus.
Citlivost na velikost písmen
Spravovaná služba Azure Monitoru pro Prometheus je systém nerozlišující velká a malá písmena. Zpracovává řetězce (například názvy metrik, názvy popisků nebo hodnoty popisků) jako stejné časové řady, pokud se liší od jiné časové řady pouze v případě řetězce.
Note
Toto chování se liší od nativního open source systému Prometheus, což je systém rozlišující malá a velká písmena. Samořízené instance Prometheus, které běží na virtuálních počítačích Azure, ve škálovacích sadách virtuálních počítačů nebo v clusterech Azure Kubernetes Service, jsou systémy s rozlišováním malých a velkých písmen.
Ve spravované službě pro Prometheus jsou následující časové řady považovány za stejné:
diskSize(cluster="eastus", node="node1", filesystem="usr_mnt")
diskSize(cluster="eastus", node="node1", filesystem="usr_MNT")
Předchozí příklady představují jednu časovou řadu v databázi časových řad. Vezměte na vědomí následující:
- Všechny ingestované vzorky se ukládají tak, jako by byly šrotovány nebo ingestovány v rámci jedné časové řady.
- Pokud jsou předchozí příklady zpracovány se stejným časovým razítkem, jeden z nich se náhodně vyřadí.
- Pouzdro uložené v databázi časových řad a vrácené dotazem je nepředvídatelné. Stejná časová řada může v různých časech vracet různá pouzdra.
- Z databáze časových řad se pomocí porovnání nerozlišujícího velká a malá písmena načte jakýkoli název metriky nebo shodný název/hodnota popisku, který je obsažen v dotazu. Pokud je v dotazu použito rozlišování velkých a malých písmen, při porovnávání řetězců se automaticky považuje za neodlišující velká a malá písmena.
Osvědčeným postupem je použít jeden konzistentní formát k výrobě nebo sběru časových řad.
Open source Prometheus považuje předchozí příklady za dvě různé časové řady. Všechny vzorky šrotované nebo ingestované proti nim se ukládají samostatně.
Zabránění duplicitním časovým řadám
Prometheus nepodporuje duplicitní časové řady. Spravovaná služba Azure Prometheus zobrazuje uživatelům tyto chyby jako 422, místo aby tiše zahazovala duplicitní časové řady. Uživatelé, kteří na tyto chyby narazí, by měli podniknout kroky, aby se zabránilo duplikaci časových řad.
Pokud například uživatel používá stejnou hodnotu označení pro dva různé clustery uložené v různých skupinách prostředků, ale odesílá data do stejné AMW, měl by jedno z těchto označení přejmenovat pro zajištění jedinečnosti. K této chybě dojde pouze v hraničních případech, kdy jsou časové razítko a hodnoty v obou clusterech v tomto scénáři stejné.
To lze opravit přidáním popisku jedinečného identifikátoru, opětovným naplněním existujícího popisku, který byl zamýšlen jako jedinečný, nebo použitím relabel_configs k vložení nebo úpravě štítků v době scrapení.
Nejčastější dotazy
Tato část obsahuje odpovědi na běžné otázky.
Chybí mi všechny nebo některé metriky. Jak můžu řešit potíže?
V průvodci odstraňováním potíží se dozvíte, jak ingestovat metriky Prometheus ze spravovaného agenta.
Proč mi chybí metriky, které mají dva štítky se stejným názvem, ale různým velikostí písmen?
Azure Managed Prometheus je systém nerozlišující malá a velká písmena. Zpracovává řetězce, jako jsou názvy metrik, názvy popisků nebo hodnoty popisků, stejně jako stejné časové řady, pokud se odlišují od jiné časové řady jen velikostí písmen v řetězci. Další informace najdete v tématu Přehled metrik Prometheus.
V datech metrik vidím určité mezery. Proč k tomuto chování dochází?
Během aktualizací uzlů se může v metrických datech shromážděných našimi sběrači na úrovni klastru vyskytnout minutová až dvouminutová mezera. K této mezerě dochází, protože uzel, na kterém se data spouští, se aktualizuje jako součást normálního procesu aktualizace. Tento proces aktualizace má vliv na cíle na úrovni clusteru, jako jsou metriky stavu kube a vlastní cíle aplikace, které jsou zadané. K tomuto procesu dochází při ruční aktualizaci clusteru nebo prostřednictvím automatické aktualizace.
Toto chování je očekávané a nemá vliv na žádná z našich doporučených pravidel upozornění.