Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Prometheus için Azure İzleyici yönetilen hizmeti, Azure Kubernetes kümelerinden ölçümleri toplar ve bunları bir Azure İzleyici çalışma alanında depolar. Prometheus Sorgu Dili (PromQL), zaman serisi verilerini sorgulamak ve toplamak için kullanabileceğiniz işlevsel bir sorgu dilidir. Azure İzleyici çalışma alanında depolanan ölçümleri sorgulamak ve toplamak için PromQL kullanın.
Bu makalede, REST API aracılığıyla PromQL kullanarak Azure İzleyici çalışma alanını sorgulama açıklanmaktadır. PromQL hakkında daha fazla bilgi için bkz. Sorgu Prometheus.
Önkoşullar
PromQL kullanarak azure izleyici çalışma alanını sorgulamak için şunları yapmanız gerekir:
- Azure Kubernetes kümesi veya uzak Kubernetes kümesi.
- Azure Monitor, Prometheus ölçümlerini bir Kubernetes kümesinden kazıyan yönetilen bir hizmettir.
- Prometheus ölçümlerinin depolandığı bir Azure İzleyici çalışma alanı.
Kimlik doğrulama
Azure İzleyici çalışma alanınızı sorgulamak için Microsoft Entra Id kullanarak kimlik doğrulaması yapın. API, istemci kimlik bilgilerini kullanarak Microsoft Entra kimlik doğrulamasını destekler. Microsoft Entra Id ile bir istemci uygulaması kaydedin ve bir belirteç isteyin.
Microsoft Entra kimlik doğrulamasını ayarlamak için şu adımları izleyin:
- Bir uygulamayı Microsoft Entra Id ile kaydedin.
- Uygulama için Azure İzleyici çalışma alanınıza erişim izni verin.
- Jeton isteyin.
Microsoft Entra Id ile uygulama kaydetme
Bir uygulamayı kaydetmek için, Yetkilendirme belirteçleri istemek ve API'lerle çalışmak için Uygulama kaydetme'deki adımları izleyin.
Uygulamanızın çalışma alanınıza erişmesine izin verme
Azure İzleyici çalışma alanınızdaki verileri sorgu edebilmesi için uygulamanıza İzleme Veri Okuyucusu rolünü atayın.
Azure İzleyici çalışma alanınızı Azure portalında açın.
Genel Bakış sayfasında, REST isteğinizde kullanmak üzere sorgu uç noktanızı not edin.
Erişim denetimi (IAM) öğesini seçin.
Erişim denetimi (IAM) sayfasındaRol ataması ekle'yi> seçin.
Rol ataması ekle sayfasında İzleme'yi arayın.
İzleme Verisi Okuyucusu'nu seçin ve ardından Üyeler sekmesini seçin.
Üyeleri seç'i seçin .
Kaydettiğiniz uygulamayı arayın ve seçin.
Seç'i seçin.
Gözden geçir + ata'yı seçin.
Uygulama kaydınızı oluşturdunuz ve Azure İzleyici çalışma alanınızdaki sorgu verilerine erişim atamıştınız. Artık bir belirteç oluşturabilir ve bunu sorguda kullanabilirsiniz.
Jeton talep et
Komut isteminde veya Insomnia veya PowerShell Invoke-RestMethod
komutu gibi bir istemci kullanarak aşağıdaki isteği gönderin.
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'
Örnek yanıt gövdesi
{
"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"
}
Erişim belirtecini yanıttan aşağıdaki HTTP isteklerinde kullanmak üzere kaydedin.
Sorgu uç noktası
Azure İzleyici çalışma alanınızın sorgu uç noktasını Azure İzleyici çalışma alanına Genel Bakış sayfasında bulabilirsiniz.
Desteklenen API'ler
Aşağıdaki sorgular desteklenir.
Anlık sorgular
Daha fazla bilgi için bkz . Anlık sorgular.
Yol:/api/v1/query
Örnekler
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>'
Aralık sorguları
Daha fazla bilgi için Aralık sorguları bölümüne bakın.
Yol:/api/v1/query_range
Örnekler
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'
Seriler
Daha fazla bilgi için bkz. Seriler.
Yol:/api/v1/series
Örnekler
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"}'
Etiketler
Daha fazla bilgi için bkz. Etiketler.
Yol:/api/v1/labels
Örnekler
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'
Etiket değerleri
Daha fazla bilgi için bkz. Etiket değerleri.
Yol:/api/v1/label/__name__/values
Uyarı
Bu API'nin desteklenen tek sürümü olur __name__
ve tüm ölçüm adlarını döndürür. Başka /api/v1/label/<label_name>/values
desteklenmez.
Örnek
GET 'https://k8s02-workspace-abcd.eastus.prometheus.monitor.azure.com/api/v1/label/__name__/values'
Açık kaynak yazılım Prometheus API'lerinin tam belirtimi için bkz. Prometheus HTTP API.
API sınırlamaları
Prometheus belirtiminde açıklanan sınırlamalara ek olarak aşağıdaki sınırlamalar vardır:
Herhangi bir zaman serisi getirme sorgusu (
/series
veya/query
veya/query_range
) bir\_\_name\_\_
etiket eşleştirici içermelidir. Yani, her sorgu bir ölçüm kapsamına alınmalıdır. Sorguda yalnızca bir\_\_name\_\_
etiket eşleştiricisi olabilir.Sorgu
/series
normal ifade filtresini desteklemiyor.Desteklenen zaman aralığı:
-
/query_range
API 32 günlük bir zaman aralığını destekler. Bu süre, sorgunun kendisinde belirtilen aralık seçicileri de dahil olmak üzere izin verilen maksimum zaman aralığıdır. Örneğin, son 24 saatin sorgusurate(http_requests_total[1h]
, verilerin 25 saat sorgulandığı anlamına gelir. Bu sayı, 24 saatlik aralıktan ve sorgunun kendisinde belirtilen 1 saatten gelir. - API,
/series
en fazla 12 saatlik zaman aralığı için veri getirir.endTime
sağlanmadıysa, o zamanendTime = time.now()
. Zaman aralığı 12 saatten büyükse,startTime
endTime – 12h
olarak ayarlanır.
-
/labels
ve/label/__name__/values
ile sağlanan başlangıç saati ve bitiş saati göz ardı edilir. Azure İzleyici çalışma alanında tutulan tüm veriler sorgulanır.Örnek gibi deneysel özellikler desteklenmez.
Prometheus ölçüm sınırları hakkında daha fazla bilgi için bkz. Prometheus ölçümleri.
Büyük/küçük harf duyarlılığı
Prometheus için Azure Monitor yönetilen hizmeti, büyük/küçük harf duyarsız bir sistemdir. Dizeleri (ölçüm adları, etiket adları veya etiket değerleri gibi) başka bir zaman serisinden yalnızca dizenin durumuyla farklıysa aynı zaman serisi olarak değerlendirir.
Uyarı
Bu davranış, büyük/küçük harfe duyarlı bir sistem olan yerel açık kaynak Prometheus'tan farklıdır. Azure sanal makinelerinde, sanal makine ölçek kümelerinde veya Azure Kubernetes Service kümelerinde çalışan kendi kendine yönetilen Prometheus örnekleri büyük/küçük harfe duyarlı sistemlerdir.
Prometheus için yönetilen hizmette aşağıdaki zaman serisi aynı kabul edilir:
diskSize(cluster="eastus", node="node1", filesystem="usr_mnt")
diskSize(cluster="eastus", node="node1", filesystem="usr_MNT")
Yukarıdaki örnekler, bir zaman serisi veritabanındaki tek bir zaman serisidir. Aşağıdaki noktalara dikkat edilmelidir:
- Bunlara karşı alınan tüm örnekler, tek bir zaman serisine göre kazınmış veya alınmış gibi depolanır.
- Yukarıdaki örnekler aynı zaman damgasıyla alınıyorsa, bunlardan biri rastgele bırakılır.
- Zaman serisi veritabanında depolanan ve sorgu tarafından döndürülen verinin formatı öngörülemez. Aynı zaman serisi, farklı zamanlarda farklı harf biçimlendirmelerini döndürebilir.
- Sorguda bulunan herhangi bir ölçüm adı veya etiket adı/değer eşleştiricisi, büyük/küçük harfe duyarlı olmayan bir karşılaştırma yoluyla zaman serisi veritabanından alınır. Sorguda büyük/küçük harfe duyarlı bir eşleştirici varsa, dize karşılaştırmalarında otomatik olarak büyük/küçük harfe duyarlı olmayan eşleştirici olarak işlenir.
Zaman serisi oluşturmak veya kazımak için, tek bir tutarlı biçim kullanmak en iyi yöntemdir.
Açık kaynak Prometheus, önceki örnekleri iki farklı zaman serisi olarak ele alır. Bunlar üzerinde kazınmış veya alınan tüm örnekler ayrı olarak depolanır.
Sıkça sorulan sorular
Bu bölüm, yaygın sorulara yanıtlar sağlar.
Ölçümlerimin tamamı veya bazıları eksik. Nasıl sorun giderebilirim?
Yönetilen aracıdan Prometheus ölçümlerini almayı öğrenmek için Sorun Giderme kılavuzunu kullanın.
Neden aynı isme ama farklı büyük/küçük harfe sahip iki etikete sahip ölçümleri kaçırıyorum?
Azure Yönetilen Prometheus büyük/küçük harfe duyarlı olmayan bir sistemdir. Ölçüm adları, etiket adları veya etiket değerleri gibi dizeleri, başka bir zaman serisinden yalnızca dizenin durumu açısından farklıysa aynı zaman serisi olarak ele alır. Daha fazla bilgi için bkz . Prometheus ölçümlerine genel bakış.
Ölçüm verilerinde bazı boşluklar görüyorum. Bu davranış neden oluşuyor?
Düğüm güncelleştirmeleri sırasında, küme düzeyindeki toplayıcılarımızdan toplanan ölçümler için ölçüm verilerinde bir dakikadan iki dakikaya kadar bir boşluk görebilirsiniz. Bu boşluk, verilerin üzerinde çalıştığı düğüm normal bir güncelleştirme işleminin parçası olarak güncelleştirildiğinden oluşur. Bu güncelleştirme işlemi, kube-state-metrics ve belirtilen özel uygulama hedefleri gibi küme genelindeki hedefleri etkiler. Bu işlem, kümeniz el ile veya otomatik güncelleştirme yoluyla güncelleştirildiğinde gerçekleşir.
Bu davranış beklenen bir davranıştır ve önerilen uyarı kurallarımızdan hiçbirini etkilemez.