17 Prometheus pārbaudes

Pārskats

Zabbix var vaicāt metriku, kas ir pieejama Prometheus rindu 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, kas izmanto Prometheus priekšapstrādes opciju, lai vaicātu nepieciešamos datus no metrikām, ko savācis galvenais vienums

Ir pieejamas divas Prometheus datu priekšapstrādes opcijas:

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

Lielapjoma apstrāde tiek atbalstīta atkarīgajiem vienumiem. Lai iespējotu kešošanu un indeksēšanu, priekšapstrādei Prometheus pattern jābūt pirmajam priekšapstrādes solim. Ja Prometheus pattern ir pirmais priekšapstrādes solis, tad parsētie Prometheus dati tiek kešoti un indeksēti pēc pirmā <label>==<value> nosacījuma priekšapstrādes solī Prometheus pattern. Šis kešs tiek atkārtoti izmantots, 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 priekšapstrāde, tā būtu jāpārvieto vai nu uz galveno vienumu, vai uz jaunu atkarīgo vienumu, kas tiktu izmantots kā galvenais vienums atkarīgajiem vienumiem.

Konfigurācija

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

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

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

Parametrs Apraksts Piemēri
Pattern Lai definētu nepieciešamo datu šablonu, 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 iepriekš minētā kombināciju:
<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 slīpsvītras, 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 lietot atbilstošo funkciju (ja šablons atbilst vairākām rindām un rezultāts ir jāagregē):
value - atgriezt metrikas vērtību (kļūda, ja atbilst vairākas rindas)
label - atgriezt etiķetes vērtību, 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 lietošanas piemērus.
Output Definējiet etiķetes nosaukumu (neobligāti). Šajā gadījumā tiks 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 lietošanas piemēri

  1. Visizplatītākais lietošanas gadījums ir atgriezt vērtību. 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 interesēt arī visu node_disk_usage_bytes parametru vidējā vērtība:
  • Pattern - node_disk_usage_bytes
  • Result processing - atlasiet 'avg'
  1. Lai gan Prometheus atbalsta tikai skaitliskus datus, ir izplatīti izmantot apiešanas risinājumu, kas ļauj atgriezt arī atbilstošo teksta aprakstu. To var panākt ar filtru un norādot etiķeti. Tātad, lai atgrieztu etiķetes 'color' 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 attiecīgajai 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 zema līmeņa atklāšanai. Šajā gadījumā ir nepieciešami dati JSON formātā, un priekšapstrādes opcija Prometheus uz JSON atgriezīs tieši to.

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

Vaicājumu valodu 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 tūlītējā vektora selektors Zabbix Prometheus priekšapstrādes vaicājumu valoda
Atšķirības
Vaicājuma mērķis Prometheus serveris Vienkāršs teksts Prometheus eksponēšanas formātā
Atgriež Tūlītējs vektors Metrikas vai etiķetes vērtība (Prometheus raksts)
Metriku masīvs vienai vērtībai JSON formātā (Prometheus uz JSON)
Etiķešu atbilstības operatori =, !=, =\~, !\~ =, !=, =\~, !\~
Regulārā izteiksme, ko izmanto etiķešu vai metriku nosaukumu atbilstības noteikš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> vai {__name__="<metric name>"} <metric name> vai {__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>