Descargar la hoja de referencia para consultas PromQL
Comenzar con PromQL puede ser un desafío si recién está comenzando su viaje hacia el fascinante mundo de Prometheus. Esta guía lo ayudará a comprender cómo funciona, y este artículo incluye consejos útiles e interesantes para comenzar.
Debido a que Prometheus almacena datos como un modelo de datos de series de tiempo, las consultas de PromQL son radicalmente diferentes de SQL convencional. Comprender cómo trabajar con datos en Prometheus es clave para aprender a escribir consultas eficientes.
¡No olvide descargar Cheatsheet para solicitudes PromQL!
Cómo funcionan las bases de datos de series de tiempo
Las series de tiempo son flujos de valores asociados con una marca de tiempo.
Cada serie de tiempo se puede identificar por el nombre y las etiquetas de la métrica, por ejemplo:
mongodb_up{}
o
kube_node_labels{cluster="aws-01", label_kubernetes_io_role="master"}
En el ejemplo anterior, hay un nombre de métrica ( kube_node_labels
) y etiquetas ( cluster
y label_kubernetes_io_role
). De hecho, las métricas también son etiquetas. La consulta anterior se puede escribir así:
{__name__ = "kube_node_labels", cluster="aws-01", label_kubernetes_io_role="master"}
Hay cuatro tipos de métricas en 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.