17 Prometheus controles

Overzicht

Zabbix kan metingen opvragen die worden blootgesteld in het Prometheus-lineformaat.

Er zijn twee stappen vereist om te beginnen met het verzamelen van Prometheus-gegevens:

  • een HTTP-masteritem dat wijst naar het juiste gegevens-eindpunt, bijvoorbeeld https://<prometheus host>/metrics
  • afhankelijke items die een Prometheus-voorverwerkingsoptie gebruiken om de benodigde gegevens op te vragen uit de metingen die zijn verzameld door het masteritem

Er zijn twee Prometheus-gegevensvoorverwerkingsmogelijkheden:

  • Prometheus-patroon - gebruikt in normale items om Prometheus-gegevens op te vragen
  • Prometheus naar JSON - gebruikt in normale items en voor low-level ontdekking. In dit geval worden opgevraagde Prometheus-gegevens geretourneerd in JSON-indeling.
Bulkverwerking

Bulkverwerking wordt ondersteund voor afhankelijke items. Om caching en indexering mogelijk te maken, moet de voorverwerking met het Prometheus-patroon de eerste voorverwerkingsstap zijn. Wanneer het Prometheus-patroon de eerste voorverwerkingsstap is, worden de geparseerde Prometheus-gegevens gecachet en geïndexeerd op basis van de eerste <label>==<waarde>-voorwaarde in de voorverwerkingsstap van het Prometheus-patroon. Deze cache wordt opnieuw gebruikt bij het verwerken van andere afhankelijke items in deze batch. Voor optimale prestaties moet het eerste label het label zijn met de meeste verschillende waarden.

Als er andere voorverwerking moet plaatsvinden vóór de eerste stap, moet deze worden verplaatst naar het masteritem of naar een nieuw afhankelijk item dat als masteritem wordt gebruikt voor de afhankelijke items.

Configuratie

Als je het HTTP-masteritem geconfigureerd hebt, moet je een afhankelijk item maken dat een Prometheus-voorverwerkingsstap gebruikt:

  • Vul algemene parameters voor afhankelijk item in het configuratieformulier in
  • Ga naar het tabblad Voorverwerking
  • Selecteer een Prometheus-voorverwerkingsoptie (Prometheus-patroon of Prometheus naar JSON)

De volgende parameters zijn specifiek voor de voorverwerkingsoptie Prometheus-patroon:

Parameter Beschrijving Voorbeelden
Patroon Om het vereiste datapatroon te definiëren, kun je een querytaal gebruiken die vergelijkbaar is met de Prometheus-querytaal (zie vergelijkingstabel), bijv.:
<metricanaam> - selecteer op metrieknaam
{__name__="<metricanaam>"} - selecteer op metrieknaam
{__name__=~"<regex>"} - selecteer op metrieknaam die overeenkomt met een reguliere expressie
{<labelnaam>="<labelwaarde>",...} - selecteer op labelnaam
{<labelnaam>=~"<regex>",...} - selecteer op labelnaam die overeenkomt met een reguliere expressie
{__name__=~".*"}==<waarde> - selecteer op metriekwaarde
Of een combinatie van het bovenstaande:
<metricanaam>{<label1naam>="<label1waarde>",<label2naam>=~"<regex>",...}==<waarde>

Labelwaarde kan elke reeks UTF-8-tekens zijn, maar de tekens backslash, dubbele aanhalingstekens en regeleinde moeten worden ontsnapt als \\, \" en \n respectievelijk; andere tekens hoeven niet te worden ontsnapt.
wmi_os_physical_memory_free_bytes
cpu_usage_system{cpu="cpu-totaal"}
cpu_usage_system{cpu=~".*"}
cpu_usage_system{cpu="cpu-totaal",host=~".*"}
wmi_service_state{name="dhcp"}==1
wmi_os_timezone{timezone=~".*"}==1
Resultaatverwerking Geef aan of de waarde, het label of de juiste functie moet worden toegepast (als het patroon overeenkomt met meerdere regels en het resultaat moet worden geaggregeerd):
waarde - retourneer metriekwaarde (fout als meerdere regels overeenkomen)
label - retourneer waarde van het label dat is gespecificeerd in het Label-veld (fout als meerdere metingen overeenkomen)
som - retourneer de som van waarden
min - retourneer de minimumwaarde
max - retourneer de maximumwaarde
gemiddelde - retourneer de gemiddelde waarde
aantal - retourneer het aantal waarden
Dit veld is alleen beschikbaar voor de optie Prometheus-patroon.
Zie ook voorbeelden van het gebruik van parameters hieronder.
Uitvoer Definieer labelnaam (optioneel). In dit geval wordt de waarde die overeenkomt met de labelnaam geretourneerd.
Dit veld is alleen beschikbaar voor de optie Prometheus-patroon, als 'Label' is geselecteerd in het veld Resultaatverwerking.

Voorbeelden van het gebruik van parameters

  1. De meest voorkomende gebruikssituatie is om de waarde terug te geven. Om de waarde van /var/db terug te geven vanuit:

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

gebruik je de volgende parameters:

  • Patroon - node_disk_usage_bytes{path="/var/db"}
  • Resultaatverwerking - selecteer 'waarde'
  1. Mogelijk ben je ook geïnteresseerd in de gemiddelde waarde van alle parameters node_disk_usage_bytes:
  • Patroon - node_disk_usage_bytes
  • Resultaatverwerking - selecteer 'gemiddelde'
  1. Hoewel Prometheus alleen numerieke gegevens ondersteunt, is het populair om een omweg te gebruiken die het mogelijk maakt om de relevante tekstuele beschrijving ook terug te geven. Dit kan worden bereikt met een filter en door het label te specificeren. Dus om de waarde van het label 'kleur' terug te geven vanuit

elasticsearch_cluster_health_status{cluster="elasticsearch",color="groen"} 1
elasticsearch_cluster_health_status{cluster="elasticsearch",color="rood"} 0
elasticsearch_cluster_health_status{cluster="elasticsearch",color="geel"} 0

gebruik je de volgende parameters:

  • Patroon - elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
  • Resultaatverwerking - selecteer 'label'
  • Label - specificeer 'kleur'

De filter (gebaseerd op de numerieke waarde '1') zal overeenkomen met de juiste rij, terwijl het label de beschrijving van de gezondheidsstatus zal retourneren (momenteel 'groen'; maar mogelijk ook 'rood' of 'geel').

Prometheus naar JSON

Gegevens van Prometheus kunnen worden gebruikt voor detectie op laag niveau. In dit geval zijn gegevens in JSON-indeling nodig en de voorverwerkingsoptie Prometheus naar JSON retourneert precies dat.

Voor meer details, zie Detectie met behulp van Prometheus-gegevens.

Querytaalvergelijking

De volgende tabel geeft verschillen en overeenkomsten weer tussen PromQL en de Zabbix Prometheus voorverwerkingsquerytaal.

PromQL instant vector selector Zabbix Prometheus voorverwerking
Verschillen
Querydoel Prometheus-server Platte tekst in Prometheus-expositieformaat
Retourneert Instant-vector Metriek of labelwaarde (Prometheus-patroon)
Array van metrieken voor enkele waarde in JSON (Prometheus naar JSON)
Labelovereenkomstoperators =, !=, =~, !~ =, !=, =~, !~
Reguliere expressie gebruikt bij overeenkomst van label of metrieknaam RE2 PCRE
Vergelijkingsoperators Zie lijst Alleen == (gelijk) wordt ondersteund voor waardefiltering
Overeenkomsten
Selecteren op metrieknaam die gelijk is aan tekenreeks <metrieknaam> of {__name__="<metrieknaam>"} <metrieknaam> of {__name__="<metrieknaam>"}
Selecteren op metrieknaam die overeenkomt met reguliere expressie {__name__=~"<regex>"} {__name__=~"<regex>"}
Selecteren op <labelnaam>-waarde die gelijk is aan tekenreeks {<labelnaam>="<labelwaarde>",...} {<labelnaam>="<labelwaarde>",...}
Selecteren op <labelnaam>-waarde die overeenkomt met reguliere expressie {<labelnaam>=~"<regex>",...} {<labelnaam>=~"<regex>",...}
Selecteren op waarde die gelijk is aan tekenreeks {__name__=~".*"} == <waarde> {__name__=~".*"} == <waarde>