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 hebt geconfigureerd, moet je een afhankelijk item maken dat gebruikmaakt van een Prometheus-voorverwerking:
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 lijkt op de Prometheus-querytaal (zie vergelijkingstabel), bijvoorbeeld: <metricanaam> - selecteer op metricanaam {__name__="<metricanaam>"} - selecteer op metricanaam {__name__=~"<regex>"} - selecteer op metricanaam 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 metrische waarde Of een combinatie van het bovenstaande: <metricanaam>{<label1naam>="<label1waarde>",<label2naam>=~"<regex>",...}==<waarde> Labelwaarde kan een willekeurige reeks UTF-8-tekens zijn, maar de backslash, dubbele aanhalingstekens en regeleindetekens moeten worden ontsnapt als \\ , \" en \n respectievelijk; andere tekens mogen niet worden ontsnapt. |
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 |
Resultaatverwerking | Geef aan of je de waarde, het label of de juiste functie wilt retourneren (als het patroon overeenkomt met meerdere regels en het resultaat moet worden geaggregeerd): value - retourneer metrische waarde (fout als er meerdere regels overeenkomen) label - retourneer waarde van het label dat is gespecificeerd in het Label-veld (fout als er meerdere metingen overeenkomen) sum - retourneer de som van waarden min - retourneer de minimale waarde max - retourneer de maximale waarde avg - retourneer de gemiddelde waarde count - 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 de 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 van:
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
parameters:node_disk_usage_bytes
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
gebruik je de volgende parameters:
elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
Het filter (op basis van de numerieke waarde '1') zal de juiste rij matchen, terwijl het label de gezondheidsstatusbeschrijving zal retourneren (momenteel 'green'; maar potentieel ook 'red' of 'yellow').
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 de 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-expositie-indeling |
Retourneert | Instant-vector | Metriek of labelwaarde (Prometheus-patroon) Array van metrieken voor enkele waarde in JSON (Prometheus naar JSON) |
Operatoren voor labelmatching | =, !=, =~, !~ | =, !=, =~, !~ |
Reguliere expressie gebruikt bij label- of metrieknaam-matching | RE2 | PCRE |
Vergelijkingsoperatoren | Zie lijst | Alleen == (gelijk) wordt ondersteund voor waardefiltering |
Overeenkomsten | ||
Selecteren op metrieknaam die gelijk is aan string | <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 string | {<labelnaam>="<labelwaarde>",...} | {<labelnaam>="<labelwaarde>",...} |
Selecteren op <labelnaam>-waarde die overeenkomt met reguliere expressie | {<labelnaam>=~"<regex>",...} | {<labelnaam>=~"<regex>",...} |
Selecteren op waarde die gelijk is aan string | {__name__=~".*"} == <waarde> | {__name__=~".*"} == <waarde> |