Unduh Cheatsheet untuk Pertanyaan PromQL
Memulai dengan PromQL dapat menjadi tantangan jika Anda baru memulai perjalanan Anda ke dunia Prometheus yang menakjubkan. Panduan ini akan membantu Anda memahami cara kerjanya, dan artikel ini berisi tips menarik dan bermanfaat untuk Anda mulai.
Karena Prometheus menyimpan data sebagai model data deret waktu, kueri PromQL sangat berbeda dari SQL konvensional. Memahami cara bekerja dengan data di Prometheus adalah kunci untuk mempelajari cara menulis kueri yang efisien.
Jangan lupa untuk mengunduh Cheatsheet untuk Permintaan PromQL!
Cara kerja database deret waktu
Deret waktu adalah aliran nilai yang terkait dengan stempel waktu.
Setiap deret waktu dapat diidentifikasi dengan nama metrik dan label, misalnya:
mongodb_up{}
atau
kube_node_labels{cluster="aws-01", label_kubernetes_io_role="master"}
Dalam contoh di atas, ada nama metrik ( kube_node_labels
) dan label ( cluster
dan label_kubernetes_io_role
). Faktanya, metrik juga merupakan label. Query di atas dapat ditulis seperti ini:
{__name__ = "kube_node_labels", cluster="aws-01", label_kubernetes_io_role="master"}
Ada empat jenis metrik di Prometheus:
Gauges () — , . ,
mongodb_up
, exporter MongoDB.
Counters ()
_total
. ,http_requests_total
.
Histogram () — , , .
Summary () , .
PromQL
PromQL , , . http_requests_total
.
, / api 10.2.0.4. host
path
:
http_requests_total{host="10.2.0.4", path="/api"}
:
name |
host |
path |
status_code |
value |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. http_requests_total
, , 98 .
instant vector, . , Prometheus . , .
, instant vector (, ).
offset
(), :
http_requests_total{host="10.2.0.4", path="/api", status_code="200"} offset 1d
, :
http_requests_total{host="10.2.0.4", path="/api"}[10m]
:
name |
host |
path |
status_code |
value |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
, , .
range vector — .
PromQL
, PromQL . , ?
, node_cpu_cores
cluster
. , , , :
sum by (cluster) (node_cpu_cores)
:
cluster |
value |
foo |
100 |
bar |
50 |
, 100
cluster_foo
50
cluster_bar
.
, PromQL . , node_memory_MemFree_bytes
, , :
node_memory_MemFree_bytes / (1024 * 1024)
, node_memory_MemTotal_bytes
, , :
(node_memory_MemFree_bytes / node_memory_MemTotal_bytes) * 100
, 5% :
(node_memory_MemFree_bytes / node_memory_MemTotal_bytes) * 100 < 5
PromQL
PromQL , . , topk
, , ( ):
topk(2, (node_memory_MemFree_bytes / node_memory_MemTotal_bytes) * 100)
Prometheus , . pred_linear
, .
, , 24 . pred_linear
node_filesystem_free_bytes
, . 24 :
predict_linear(node_filesystem_free_bytes[1w], 3600 * 24) / (1024 * 1024 * 1024) < 100
Prometheus rate
. , . , .
, , , 10 . http_requests_total
, :
http_requests_total[10m]
name |
host |
path |
status_code |
value |
|
|
|
|
|
300 50, . rate
. , , :
name |
host |
path |
status_code |
value |
|
|
|
|
|
rate(http_requests_total[10m])
name |
host |
path |
status_code |
value |
|
|
|
|
|
10 0,83 . :
rate(http_requests_total[10m]) = 0
?
, Prometheus , PromQL .
Cheatsheet PromQL, PromQL. Cheatsheet Prometheus playground.