CodeBlanks Logo Icon CodeBlanks

PromQL temelleri

PromQL ile metrik sorgulamayı öğrenirsin.

PromQL temelleri

PromQL, Prometheus'un sorgu dilidir. Bir ölçüm adı tüm serileri, etiket süzgeçleri bir alt kümeyi seçer; [5m] bir zaman aralığıdır:

http_requests_total                                # tüm seriler
http_requests_total{status="500"}                  # eşitlik
http_requests_total{status=~"5.."}                 # düzenli ifade
rate(http_requests_total[5m])                      # saniye başına artış
sum by (path) (rate(http_requests_total[5m]))      # yola göre toplam

Counter'lar her zaman rate() ya da increase() ile kullanılır; ham değer yeniden başlatmada sıfırlanır.

Kubernetes ölçümleri

kube-prometheus-stack, cAdvisor (container kaynakları) ve kube-state-metrics (nesne durumları) ölçümlerini de toplar:

# namespace başına CPU kullanımı (çekirdek)
sum by (namespace) (rate(container_cpu_usage_seconds_total[5m]))
# yeniden başlayan container'lar
increase(kube_pod_container_status_restarts_total[1h]) > 0
# hazır olmayan kopyası olan deployment'lar
kube_deployment_status_replicas_available < kube_deployment_spec_replicas

Sorgular Prometheus arayüzünde ya da /api/v1/query HTTP API'siyle çalıştırılır.

Uygulama API'den sorgula

İki komut yaz: izleme'deki svc/izleme-kube-prometheus-sta-prometheus servisini yerel 9090'dan 9090'a yönlendir; ardından curl -s ile http://localhost:9090/api/v1/query uç noktasına --data-urlencode 'query=sum(rate(http_requests_total[5m]))' gönder.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl port-forward -n izleme svc/izleme-kube-prometheus-sta-prometheus 9090:9090
curl -s http://localhost:9090/api/v1/query --data-urlencode 'query=sum(rate(http_requests_total[5m]))'

Beklenen çıktı

Forwarding from 127.0.0.1:9090 -> 9090
{"status":"success","data":{"resultType":"vector","result":[{"metric":{},"value":[1793710800,"42.7"]}]}}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 increase(http_requests_total[1h]) neyi verir?

  • Saniye başına hızı
  • Sayacın ham değerini
  • Bir saat önceki değeri
  • Son bir saatteki toplam istek artışını Doğru cevap

Açıklama: increase ≈ rate × aralık süresi.

2 Sayaç için saniye başına hızı hesapla.

Soru
____(http_requests_total[5m])
Cevap
rate(http_requests_total[5m])

Açıklama: rate counter'ın aralıktaki ortalama artış hızıdır.

3 Eşleştir.

Kavram Anlamı
{status="500"} Eşitlik süzgeci
{status=~"5.."} Düzenli ifade süzgeci
[5m] Zaman aralığı
sum by (path) Gruplu toplam

İleri seviye bölümündeki tüm dersler