ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ "gofmt" Π΄Π»Ρ Go, Ρ Π½Π°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ "promfmt" Π΄Π»Ρ Prometheus, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ. ΠΠ΄Π΅Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ Π΅Π΄ΠΈΠ½ΡΠΉ ΡΡΠΈΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΠΈ ΠΊΡΠΈΠ²ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ Π² ΡΠ°ΠΉΠ»Ρ ΠΏΡΠ°Π²ΠΈΠ» YAML : ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ PromQL, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΈΠΌ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ YAML, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅Π»ΠΈ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΡΠΎΡ ΡΠ°Π½ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊ Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ PromQL, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° YAML.
: +1: *: 100:
ΠΠ³Π°, Π±ΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² - ΡΠ°ΠΌΠ°Ρ Π±ΠΎΠ»ΡΡΠ°Ρ (ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ) ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ.
Π Π°Π·Π²Π΅ ΠΌΡ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠΎ Π² promtool?
Π‘Π²ΡΠ·Π°Π½Π½ΡΠΉ: https://github.com/prometheus/prometheus/pull/1779
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ:
gofmt
).ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΎΠ±Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π² YAML
ΠΠ°ΡΠ° ΡΠ΅ΠΊΡΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° YAML ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ, Π½ΠΎ Π½Π°Π΄Π΅Π΅ΡΡΡ Β«ΡΠΊΠΎΡΠΎΒ».
Π― Ρ ΠΎΡΠ΅Π» Π±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΎ Π² ΡΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ gsoc. @ brian-brazil, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ YAML, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅?
https://github.com/go-yaml/yaml , Π½ΠΎ Ρ Π±Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ» ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ PromQL Π² Π½ΡΠ½Π΅ΡΠ½Π΅ΠΌ Π²ΠΈΠ΄Π΅.
@ brian-brazil ΠΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ PromQL ΠΈΠ· ΠΏΡΠ°Π²ΠΈΠ» Π²ΡΠ΅Π³Π΄Π° Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠ°ΠΉΠ»Ρ YAML, ΠΎΠ½, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ YAML, Π²Π΅ΡΠ½ΠΎ? Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π½Π΅ Π±ΡΠ» Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½ΠΈΠΊΡΠΎ Π½Π΅ Ρ ΠΎΡΠ΅Ρ ΡΠ΅ΡΡΡΡ ΡΠ²ΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈΠ·-Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, Π½ΠΎ ΠΈ Π±Π΅Π· ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ³ΠΎΠ΄Ρ. Π― Π±Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅Π» Π½Π΅ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠ΅Π³ΠΎ-ΡΠΎ Ρ Π½Π΅ΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΠΎΠΊΠ°ΠΌΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° gsoc.
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠ°ΡΡΠΈ PromQL. Π§Π°ΡΡΡ YAML Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΡΡΠΈ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎΠΉ, Π΅ΡΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° ΠΎΠ± ΠΎΡΡΡΡΠΏΠ°Ρ
|2
Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΡ
ΡΡΡΠΎΠΊ.
Ok!
v3 Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ YAML ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠ΅ ΡΡΠΎ.
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠΈΡΠ°Π΅ΠΌΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
(
kube_job_status_failed > 0
UNLESS kube_job_status_succeeded > 0
)
* on (namespace, job_name) group_left(maintainer) label_replace(kube_job_labels, "maintainer", "$1", "label_maintainer", "(.*)")
* on (namespace, job_name) group_left(pager) label_replace(kube_job_labels, "pager", "$1", "label_pager", "(.*)")
* on (namespace, job_name) group_left(paging) label_replace(kube_job_labels, "paging", "$1", "label_paging", "(.*)")
VS Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΡΡΠΎΡΠ° Π² Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅
(kube_deployment_status_replicas_available
/ kube_deployment_spec_replicas * 100) * on(namespace, deployment) group_left(maintainer)
label_replace(kube_deployment_labels, "maintainer", "$1", "label_maintainer",
"(.*)") * on(namespace, deployment) group_left(pager) label_replace(kube_deployment_labels,
"pager", "$1", "label_pager", "(.*)") * on(namespace,
deployment) group_left(paging) label_replace(kube_deployment_labels, "paging",
"$1", "label_paging", "(.*)") < 100
@sylr Π― Π΄ΡΠΌΠ°Ρ, Π²Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΈΠ· Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΡΠ°ΠΊΠΆΠ΅ @ beorn7 Π― Π½Π°ΡΠΈΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΡΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ.
Π²ΠΎΡ ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°:
(kube_job_status_failed
> 0 unless kube_job_status_succeeded > 0) * on(namespace, job_name) group_left(maintainer)
label_replace(kube_job_labels, "maintainer", "$1", "label_maintainer",
"(.*)") * on(namespace, job_name) group_left(pager) label_replace(kube_job_labels,
"pager", "$1", "label_pager", "(.*)") * on(namespace,
job_name) group_left(paging) label_replace(kube_job_labels, "paging", "$1",
"label_paging", "(.*)")
@geekodour ΠΠ°, Ρ ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ°Π» Π΄Π²Π° ΠΏΡΠ°Π²ΠΈΠ»Π°.
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΎΡΠΊΡΡΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΠΈΠ΄Π΅ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠ΅Π³ΠΎ GSOC (https://github.com/cncf/soc#rule-formatting-tool), Ρ Ρ
ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ Π΅Π³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ GSOC. ΠΡΠ±ΠΎΠ΅ Π½Π΅Π΄Π°Π²Π½Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π±ΡΠ΄ΡΡ ΠΎΡΠ΅Π½Π΅Π½Ρ @codesome @ @juliusv @geekodour @simonpasquier @sylr .
ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ promQL Ρ ΠΏΠΎΠΌΠΎΡΡΡ promQL AST?
@haibeey Π ΡΡΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ.
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ»ΠΎ Π±Ρ Π»ΡΡΡΠ΅ Π½Π°ΡΠ°ΡΡ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π·Π΄Π΅ΡΡ, ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π².
ΠΡΠ»ΠΎ Π±Ρ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³Π»ΠΈ Π±ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Ρ Ρ Π³ΠΎΡΠΎΠ²ΡΡΠΈΠΌΡΡ ΠΊ Π²ΡΠΏΡΡΠΊΡ ΡΠ·ΡΠΊΠΎΠ²ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ PromQL . ΠΠ½ΡΡΡΠΈ ΠΊΠΎΠ΄Π° ΡΠ·ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π΅ΡΠ΅ΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² YAML, ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ» ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ .
Ρ ΠΎΡΠΎΡΠΎ! Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @slrtbtfs . Π― Π½Π°ΡΠ½Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΡΠ΅Π΅.
ΠΠΎΠ³Ρ Ρ Π·Π°Π½ΡΡΡΡΡ ΡΡΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ? Π₯ΠΎΡΠ΅Π» Π±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ.
ΠΠΎΡ ΠΎΠΆΠ΅, @haibeey ΡΠΆΠ΅ ΠΊΠ°ΠΊ-ΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅Ρ Π½Π°Π΄ ΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
@roidlapluie Π― ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» ΡΠ°ΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ°Π½ΡΡΠ΅. ΠΡΠΎΡΡΠΎ Ρ Π·Π΄Π΅ΡΡ Π½Π΅ ΡΠΏΠΎΠΌΡΠ½ΡΠ».
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠΈΡΠ°Π΅ΠΌΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
( kube_job_status_failed > 0 UNLESS kube_job_status_succeeded > 0 ) * on (namespace, job_name) group_left(maintainer) label_replace(kube_job_labels, "maintainer", "$1", "label_maintainer", "(.*)") * on (namespace, job_name) group_left(pager) label_replace(kube_job_labels, "pager", "$1", "label_pager", "(.*)") * on (namespace, job_name) group_left(paging) label_replace(kube_job_labels, "paging", "$1", "label_paging", "(.*)")
VS Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΡΡΠΎΡΠ° Π² Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅
(kube_deployment_status_replicas_available / kube_deployment_spec_replicas * 100) * on(namespace, deployment) group_left(maintainer) label_replace(kube_deployment_labels, "maintainer", "$1", "label_maintainer", "(.*)") * on(namespace, deployment) group_left(pager) label_replace(kube_deployment_labels, "pager", "$1", "label_pager", "(.*)") * on(namespace, deployment) group_left(paging) label_replace(kube_deployment_labels, "paging", "$1", "label_paging", "(.*)") < 100
ΠΡΠΈΠ΅ΠΌΠ»Π΅ΠΌ Π»ΠΈ ΡΡΠΎΡ ΡΡΠΈΠ»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ? @codesome @juliusv @
Π― ΠΏΠΈΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΡ
ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ.
ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ ΠΈ ΠΏΡΠΈΠ½ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° GSoC (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π΄Π°ΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΡ Π·Π°Ρ ΠΎΡΠ΅Ρ Π²ΠΌΠ΅ΡΠ°ΡΡΡΡ, Π½ΠΎ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΅Π³ΠΎ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ). Π― Π±Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» (Π²ΡΠ΅ΠΌ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°ΠΌ GSoC) ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π±Ρ Π²Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ.
https://prometheus.io/docs/practices/rules/ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ.
Π― Π½Π°ΠΏΠΈΡΠ°Π» ΡΠ΅ΡΠ½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠ² ΠΏΡΠ°Π²ΠΈΠ»Π° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π³ΠΎΡΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. ΡΠΎΠ²Π΅ΡΡΠΈΡΡ Π·Π΄Π΅ΡΡ https://github.com/haibeey/prometheus/commit/885566786ac20bfd400b2e7db470c92545919690
Π€Π°ΠΉΠ» ΠΏΡΠ°Π²ΠΈΠ»
ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π·Π°ΠΏΠΈΡΠΈ Π² Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅
ΠΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π½Π΅ Π½Π° ΡΠ²ΠΎΠ΅ΠΉ Π»ΠΈΠ½ΠΈΠΈ
ΠΎ, Π΄Π°. ΡΡΠΎΡ ΠΊΠΎΠΌΠΌΠΈΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ promql ΠΏΠΎΡΠ»Π΅ ΠΎΡΠ΅Π½ΠΊΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ.
ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠ΅Π½ΠΊΠΈ.
Π― Π½Π°ΠΏΠΈΡΠ°Π» ΡΠ΅ΡΠ½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠ² ΠΏΡΠ°Π²ΠΈΠ»Π° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π³ΠΎΡΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. ΡΠΎΠ²Π΅ΡΡΠΈΡΡ Π·Π΄Π΅ΡΡ [haibeey @ 8855667]
Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π² AST ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ°Π·ΡΠΌΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ.
Π― ΠΎΡΡΠ°Π²ΠΈΠ» ΡΠ°ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
https://prometheus.io/docs/practices/rules/ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅:
sum without (instance)(instance_path:requests:rate5m{job="myjob"})
Π½Π°Π΄
sum(instance_path:requests:rate5m{job="myjob"}) without (instance)
ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠΌΠ΅ΡΡ Π²Π½Π°ΡΠ°Π»Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ, ΠΈ ΡΡΠΎ ΡΠΆΠ΅ ΡΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΡΡΠΎ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ - ΠΈΠ½Π°ΡΠ΅ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎ ΡΠΈΡΠ°ΡΡ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ°, ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΎ ΡΠ²Π΅ΡΠ΄ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΌ. Π‘Π½Π°ΡΠ°Π»Π° Prometheus ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π» ΡΠΎΠ»ΡΠΊΠΎ sum(x) by(y)
ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π» Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅Π» Π΅Π³ΠΎ, Π½ΠΎ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ x
ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΄Π½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΌ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ / ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅. ΠΠ½Π΅ ΠΆΠ°Π»Ρ, ΡΡΠΎ Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° sum by(y) (x)
ΠΈ ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π·Π°ΠΊΠΎΠ½Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ.
ΠΠ½Π΅ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ sum by (y)(x)
ΠΈ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ sum by(y) (x)
(Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΌΡΡΠ»Π°), Π½Π΅ Π·Π½Π°Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ Π²ΡΠ±ΡΠ°Π»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ°Π²ΠΎ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ, Ρ Π»ΠΈΡΠ½ΠΎ ΡΡΠΈΡΠ°Ρ Β«ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΠΎΠΉ ΠΎΠΏΡΡΒ» ΠΎΡΠ²ΡΠ°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ ΡΠ²Π»ΡΡΡΡΡ Π·Π°ΠΊΠΎΠ½Π½ΡΠΌΠΈ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ Π½Π°Π²ΡΠ·ΡΠ²Π°ΠΉΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π½Π°Π΄ Π΄ΡΡΠ³ΠΈΠΌ.
ΠΠ΅ΡΡ ΡΠΌΡΡΠ» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° promfmt
ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, "ΠΎΠ΄ΠΎΠ±ΡΠΈΡΡ" ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ "ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠ΅" ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° gofmt
, Ρ ΡΠ΅Π»ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π·Π° Π½ΠΈΠΌ.
ΠΠ°, ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ gofmt
Π½ΠΈΠΊΠΎΠΌΡ Π½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ, Π½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΎΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΡΠΈΠ»Ρ, Π° Π½Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π½ΡΡ
, ΡΡΠΎ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π½Π½ΠΎΡΡΡΡ.
ΠΡΡΠ°ΡΠΈ, GSoC Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠ΅Ρ ΡΡΠΎ. @haibeey Π― Π²ΠΈΠΆΡ, ΡΡΠΎ Π²Π°Ρ ΡΠΎΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ GSoC. Π₯ΠΎΡΡ Ρ ΡΠ΅Π½Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΏΡΠΎΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ΅ΠΉΡΠ°Ρ, Ρ Π±ΡΠ» Π±Ρ ΠΏΡΠΈΠ·Π½Π°ΡΠ΅Π»Π΅Π½ Π·Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ GSoC ΠΈΠ»ΠΈ ΠΈΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π² GSoC :)
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΡΠΆΠ΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ go-yamlv3. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π±Π΅Π·ΡΠΏΡΠ΅ΡΠ½Π°, ΡΡΠΎ Π½Π΅Ρ ΠΏΠΎΡΠ΅ΡΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π². Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΊΠΎΠ΄Π° Prometheus Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
Ρ ΠΎΡΠΎΡΠΎ. ΠΡΠΌΠ°Ρ, ΠΏΠΎΡΠ° ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ GSoC .
ΠΡ Π±ΡΠ΄Π΅ΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½Ρ Π·Π° ΠΎΠ±Π·ΠΎΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
@ Harkishen-Singh ΠΡΡΡ Π΄Π²Π° ΡΡΠΎΠ²Π½Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π²: ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ YAML ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ PromQL. https://github.com/prometheus/prometheus/issues/21#issuecomment -604213849 Π³ΠΎΠ²ΠΎΡΠΈΠ» ΠΎ PromQL (Π½ΠΎ YAML ΡΠΎΠΆΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ).
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΡΠΆΠ΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ go-yamlv3. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π±Π΅Π·ΡΠΏΡΠ΅ΡΠ½Π°, ΡΡΠΎ Π½Π΅Ρ ΠΏΠΎΡΠ΅ΡΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π². Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΊΠΎΠ΄Π° Prometheus Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ΅Π½ΠΊΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ PromQL - ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠ΄Π°Π»ΡΡΡΡΡ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°ΠΉΠ»Π°Ρ
ΠΏΡΠ°Π²ΠΈΠ», Π½ΠΎ ΠΈ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠ΅ΡΡΠ°Ρ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. ΡΡΠΎ ΠΏΡΠ°Π²Π΄Π° @juliusv ?
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² @slrtbtfs, Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΏΡΠΈΠ½ΡΠ΅ΡΠ°.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² YAML, Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ v3, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ Cortex, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ, ΠΏΠΎΠΊΠ° Π²ΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΎ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°ΠΉΠ»Π°Ρ ΠΏΡΠ°Π²ΠΈΠ», Π½ΠΎ ΠΈ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅ΡΡΠ°Ρ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. ΠΡΠΎ ΠΏΡΠ°Π²Π΄Π°
ΠΠ΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ - Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ΅ΡΡ ΡΠΌΡΡΠ» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°
promfmt
ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, "ΠΎΠ΄ΠΎΠ±ΡΠΈΡΡ" ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ "ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠ΅" ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π°gofmt
, Ρ ΡΠ΅Π»ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π·Π° Π½ΠΈΠΌ.