1 Prometheus pārbaude

Pārskats

Zabbix var vaicāt metriku, kas tiek eksponētas Prometheus līniju formātā.

Lai sāktu vākt Prometheus datus, ir nepieciešami divi soļi:

  • HTTP galvenais vienums, kas norāda uz atbilstošo datu galapunktu, piemēram, https://<prometheus host>/metrics
  • atkarīgie vienumi, izmantojot Prometheus priekšapstrādes opciju, lai vaicātu nepieciešamos datus no metriku, ko savācis galvenais vienums

Pastāv divas Prometheus datu priekšapstrādes opcijas:

  • Prometheus pattern - tiek izmantota parastajos vienumos, lai vaicātu Prometheus datus
  • Prometheus to JSON - tiek izmantota parastajos vienumos un zemā līmeņa atklāšanai. Šajā gadījumā vaicātie Prometheus dati tiek atgriezti JSON formātā.
Masveida apstrāde

Masveida apstrāde tiek atbalstīta atkarīgajiem vienumiem. Lai iespējotu kešošanu un indeksēšanu, Prometheus pattern pirmapstrādei ir jābūt pirmajam pirmapstrādes solim. Ja Prometheus pattern ir pirmais pirmapstrādes solis, tad parsētie Prometheus dati tiek kešoti un indeksēti pēc pirmā <label>==<value> nosacījuma Prometheus pattern pirmapstrādes solī. Šis kešs tiek izmantots atkārtoti, apstrādājot citus atkarīgos vienumus šajā paketē. Optimālai veiktspējai pirmajai etiķetei vajadzētu būt tai, kurai ir visvairāk atšķirīgu vērtību.

Ja pirms pirmā soļa ir jāveic cita pirmapstrāde, tā ir jāpārvieto vai nu uz galveno vienumu, vai uz jaunu atkarīgo vienumu, kas tiks izmantots kā galvenais vienums atkarīgajiem vienumiem.

Konfigurācija

Ja jums ir konfigurēts HTTP master vienums, jums ir jāizveido atkarīgais vienums, kas izmanto Prometheus priekšapstrādes soli:

  • Konfigurācijas formā ievadiet vispārīgos atkarīgā vienuma parametrus
  • Dodieties uz cilni Preprocessing
  • Atlasiet Prometheus priekšapstrādes opciju (Prometheus pattern vai Prometheus to JSON)

Tālāk norādītie parametri ir specifiski Prometheus pattern priekšapstrādes opcijai:

Parameter Description Examples
Pattern Lai definētu nepieciešamo datu paraugu, varat izmantot vaicājumu valodu, kas ir līdzīga Prometheus vaicājumu valodai (skatiet salīdzinājuma tabulu), piemēram:
<metric name> - atlasīt pēc metrikas nosaukuma
{__name__="<metric name>"} - atlasīt pēc metrikas nosaukuma
{__name__=\~"<regex>"} - atlasīt pēc metrikas nosaukuma, kas atbilst regulārajai izteiksmei
{<label name>="<label value>",...} - atlasīt pēc etiķetes nosaukuma
{<label name>=\~"<regex>",...} - atlasīt pēc etiķetes nosaukuma, kas atbilst regulārajai izteiksmei
{__name__=\~".*"}==<value> - atlasīt pēc metrikas vērtības
Vai arī kombinācija no iepriekš minētā:
<metric name>{<label1 name>="<label1 value>",<label2 name>=\~"<regex>",...}==<value>

Etiķetes vērtība var būt jebkura UTF-8 rakstzīmju secība, taču atpakaļsvītra, dubultpēdiņas un rindas pārneses rakstzīmes ir jāekranē attiecīgi kā \\, \" un \n; citas rakstzīmes nav jāekranē.
wmi_os_physical_memory_free_bytes
cpu_usage_system{cpu="cpu-total"}
cpu_usage_system{cpu=\~".*"}
cpu_usage_system{cpu="cpu-total",host=\~".*"}
wmi_service_state{name="dhcp"}==1
wmi_os_timezone{timezone=\~".*"}==1
Result processing Norādiet, vai atgriezt vērtību, etiķeti vai piemērot atbilstošu funkciju (ja paraugs atbilst vairākām rindām un rezultāts ir jāapkopo):
value - atgriezt metrikas vērtību (kļūda, ja atbilst vairākas rindas)
label - atgriezt vērtību no etiķetes, kas norādīta laukā Label (kļūda, ja atbilst vairākas metrikas)
sum - atgriezt vērtību summu
min - atgriezt minimālo vērtību
max - atgriezt maksimālo vērtību
avg - atgriezt vidējo vērtību
count - atgriezt vērtību skaitu
Šis lauks ir pieejams tikai opcijai Prometheus pattern.
Skatiet arī tālāk sniegtos parametru izmantošanas piemērus.
Output Definējiet etiķetes nosaukumu (neobligāti). Šādā gadījumā tiek atgriezta vērtība, kas atbilst etiķetes nosaukumam.
Šis lauks ir pieejams tikai opcijai Prometheus pattern, ja laukā Result processing ir atlasīts 'Label'.

Parametru izmantošanas piemēri

  1. Visbiežāk lietotais gadījums ir atgriezt value. Lai atgrieztu /var/db vērtību no:

node_disk_usage_bytes{path="/var/cache"} 2.1766144e+09
node_disk_usage_bytes{path="/var/db"} 20480
node_disk_usage_bytes{path="/var/dpkg"} 8192
node_disk_usage_bytes{path="/var/empty"} 4096

izmantojiet šādus parametrus:

  • Pattern - node_disk_usage_bytes{path="/var/db"}
  • Result processing - atlasiet 'value'
  1. Jūs varētu būt ieinteresēts arī visu node_disk_usage_bytes parametru vidējā vērtībā:
  • Pattern - node_disk_usage_bytes
  • Result processing - atlasiet 'avg'
  1. Lai gan Prometheus atbalsta tikai skaitliskus datus, ir populāri izmantot risinājumu, kas ļauj atgriezt arī atbilstošu teksta aprakstu. To var panākt, izmantojot filtru un norādot etiķeti. Tātad, lai atgrieztu 'color' etiķetes vērtību no

elasticsearch_cluster_health_status{cluster="elasticsearch",color="green"} 1
elasticsearch_cluster_health_status{cluster="elasticsearch",color="red"} 0
elasticsearch_cluster_health_status{cluster="elasticsearch",color="yellow"} 0

izmantojiet šādus parametrus:

  • Pattern - elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
  • Result processing - atlasiet 'label'
  • Label - norādiet 'color'

Filtrs (balstīts uz skaitlisko vērtību '1') atbildīs atbilstošajai rindai, savukārt etiķete atgriezīs veselības stāvokļa aprakstu (pašlaik 'green'; bet potenciāli arī 'red' vai 'yellow').

Prometheus uz JSON

Datus no Prometheus var izmantot zemā līmeņa atklāšanai. Šajā gadījumā ir nepieciešami dati JSON formātā, un priekšapstrādes opcija Prometheus to JSON atgriezīs tieši to.

Plašāku informāciju skatiet sadaļā Atklāšana, izmantojot Prometheus datus.

Vaicājumu valodas salīdzinājums

Tālāk esošajā tabulā ir uzskaitītas atšķirības un līdzības starp PromQL un Zabbix Prometheus priekšapstrādes vaicājumu valodu.

PromQL instant vector selector Zabbix Prometheus priekšapstrāde
Atšķirības
Vaicājuma mērķis Prometheus serveris Vienkāršs teksts Prometheus ekspozīcijas formātā
Atgriež Tūlītējo vektoru Metrikas vai etiķetes vērtību (Prometheus shēma)
Metriku masīvu vienai vērtībai JSON formātā (Prometheus uz JSON)
Etiķešu saskaņošanas operatori =, !=, =\~, !\~ =, !=, =\~, !\~
Regulārā izteiksme, ko izmanto etiķešu vai metrikas nosaukuma saskaņošanai RE2 PCRE
Salīdzināšanas operatori Skatiet sarakstu Vērtību filtrēšanai tiek atbalstīts tikai == (vienāds)
Līdzības
Atlase pēc metrikas nosaukuma, kas ir vienāds ar virkni <metric name> or {__name__="<metric name>"} <metric name> or {__name__="<metric name>"}
Atlase pēc metrikas nosaukuma, kas atbilst regulārajai izteiksmei {__name__=\~"<regex>"} {__name__=\~"<regex>"}
Atlase pēc <label name> vērtības, kas ir vienāda ar virkni {<label name>="<label value>",...} {<label name>="<label value>",...}
Atlase pēc <label name> vērtības, kas atbilst regulārajai izteiksmei {<label name>=\~"<regex>",...} {<label name>=\~"<regex>",...}
Atlase pēc vērtības, kas ir vienāda ar virkni {__name__=\~".*"} == <value> {__name__=\~".*"} == <value>