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:
https://<prometheus host>/metrics
Er zijn twee Prometheus-gegevensvoorverwerkingsmogelijkheden:
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.
Als je het HTTP-masteritem geconfigureerd hebt, moet je een afhankelijk item maken dat een Prometheus-voorverwerkingsstap gebruikt:
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
/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:
node_disk_usage_bytes{path="/var/db"}
node_disk_usage_bytes
:node_disk_usage_bytes
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:
elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
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').
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.
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> |