Introduction
PromQL de 4 tip veri vardir.
- String – bildigimiz string ancak kullanilmaz.
- Scalar – floating point value –> 4.25
- Instant Vector:
- Bunu anlamak icin önce ön kavramlari anlamak gerekiyor.
- Metric : sorguladigimz sey node_cpu_seconds_total, uptime….
- Label : ayrimi saglayan veri. Hangi node hangi cpu..
- Metric+Label = Time Series
- value sorguda dönen deger.
- TimeStamp
- Instant vector da zamanda bir andaki veri geliyor.
- Bunu anlamak icin önce ön kavramlari anlamak gerekiyor.

- Range Vector:
- Ayni Instant vector gibi ancak her bir TimeSeries icin biden cok deger getirir.Asagida ki örnekte cpu sorgusu icin 3 dakika boyunca veri toplanir

Selectors & matchers
bir metric ile ilgili sadece tekbir subset grei döndürmek istedigimizde bir cesit filtre olarak kullandigimiz seydir matchers.
- Label matchers :
- = –> Label degerine tam örtüsme
- != –> Label degerinden olmayan
- =~ –> regex ile uyusan time series
- !~ –> regex ile uyusmayan time series
Mesela sadece instance1 e ait o metric e ait tüm verileri istedigimiz zaman.
node_cpu_seconds_total{instance="node1"}
deriz ancak o zaman hem cpu1 hem cpu2 hepsi gelir.
node_cpu_seconds_total{instance="node1", cpu="1",vm="1"}
node_cpu_seconds_total{instance="node1", cpu="2",vm="1"}
node_cpu_seconds_total{instance="node1", cpu="3",vm="1"}
node_cpu_seconds_total{instance="node1", cpu="1",vm="3"}
node_cpu_seconds_total{instance="node1", cpu="1",vm="2"}
node_cpu_seconds_total{instance="node1", cpu="1",vm="1"}
node_cpu_seconds_total{instance="node1", cpu="1",vm="4"}
node_cpu_seconds_total{instance="node1", cpu="1",vm="5"}
diyelim ki sadece node1 istiyoruz ama cpu1 istemiyoruz o zaman.
node_cpu_seconds_total{instance="node1", cpu!="1"}
node_cpu_seconds_total{instance="node1", cpu="2",vm="1"}
node_cpu_seconds_total{instance="node1", cpu="3",vm="1"}
yada node ile baslayan ve cpu 1 olmayan herseyi istiyoruz
node_cpu_seconds_total{instance=~"node.*", cpu!="1"}
node_cpu_seconds_total{instance="node1", cpu="2",vm="1"}
node_cpu_seconds_total{instance="node1", cpu="3",vm="1"}
node_cpu_seconds_total{instance="node2", cpu="2",vm="1"}
node_cpu_seconds_total{instance="node2", cpu="3",vm="1"}
node_cpu_seconds_total{instance="node3", cpu="2",vm="1"}
node_cpu_seconds_total{instance="node3", cpu="3",vm="1"}
eger zaman ile sinirlandirmak istersek
node_cpu_seconds_total{instance="node1"}[2m]
Modifiers
Ancak bazen(hatta cogu zaman) gecmis veriye bakmamiz gerekiyor. Bu durumda offset kullaniyoruz
code_cpu_seconds_total{instance="node1"} offset 2d
code_cpu_seconds_total{instance="node1"} offset 3w
code_cpu_seconds_total{instance="node1"} offset 1h30m
2 gün önceki yada 3 hafta yada 1.5 saat önceki deger gibi.
Ancak bu cok specific degil yani 2 hafta önce ne zaman. Ancak istersek tam istedigimiz ana da götürebiliriz. Bunun icin “@” kullaniyoruz.
code_cpu_seconds_total{instance=”node1″} @1663254524 –> burada ki rakam Unix Timestamp
code_cpu_seconds_total{instance="node1"} @1663254524 offset 5m
code_cpu_seconds_total{instance="node1"} offset 5m @1663254524
Su anda git ondan da 5 dk one git. Iki