Zabbix може да тражи метрику изложену у формату линије Prometheus.
Потребна су два корака да би се започело прикупљање Прометхеус података:
https://<prometheus host>/metrics
Постоје две опције за претходну обраду Prometheus података:
Групна обрада је подржана за зависне ставке. Да бисте омогућили кеширање и индексирање, *Prometheus pattern претходна обрада мора бити први** корак претходне обраде. Када је Prometheus pattern први корак пре обраде, онда се рашчлањени Prometheus подаци кеширају и индексирају првим условом <label>==<value>
у кораку препроцесирања Prometheus pattern. Овај кеш се поново користи приликом обраде других зависних ставки у овој групи. За оптималне перформансе, прва ознака треба да буде она са највише различитих вредности.
Ако постоји друга предобрада која треба да се уради пре првог корака, треба је преместити или на главну ставку или у нову зависну ставку која би се користила као мастер ставка за зависне ставке.
Под условом да имате конфигурисану HTTP главну ставку, потребно је да креирате зависну ставку која користи Prometheus корак препроцесирања:
Следећи параметри су специфични за Prometheus образац препроцесу опција:
Parameter | Description | Examples |
---|---|---|
* Pattern* | Да бисте дефинисали потребан образац података можете користити језик упита који је сличан Прометхеус језику упита (погледајте табелу за поређење), нпр.:<бр><metric name> - изаберите према називу метрике {__name__="<metric name>"} - изаберите према називу метрике {__name__=~"<regex>"} - изаберите према називу метрике који одговара регуларном изразу {<label name>="<label value>",...} - изаберите према називу ознаке {<label name>=~"<regex>",...} - изаберите према називу ознаке који одговара регуларном изразу {__name__=~".*"}==<value> - изаберите по метричкој вредности Или комбинација горе наведеног: <metric name>{<label1 name>="<label1 value>",<label2 name>=~"<regex>",...}==<value> Вредност ознаке може бити било који низ UTF-8 знакова, али обрнута коса црта, двоструки наводници и знакови за помицање реда морају бити приказани као \\ , \" and \n респективно; други знакови се не смеју заобићи. |
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 | Одредите да ли да вратите вредност, ознаку или примените одговарајућу функцију (ако се образац поклапа са неколико редова и резултат треба да се обједини):<бр>вредност - врати вредност метрике (грешка ако се подудара више редова)<бр>ознака - враћа вредност ознаке наведене у пољу Ознака (грешка ако се подудара више показатеља)<бр>сума - враћа збир вредности<бр>мин - врати минималну вредност<бр>** max** - врати максималну вредност<бр>** avg.** - врати просечну вредност<бр>** count** - врати број вредности<бр>Ово поље је доступно само за опцију Prometheus образац. | Погледајте и примере коришћења параметара испод. |
* Output* | Дефинишите име ознаке (опционо). У овом случају се враћа вредност која одговара имену ознаке.<бр>Ово поље је доступно само за опцију **Prometheus образац, ако је у пољу Обрада резултата* изабрано 'Label'. |
Примери коришћења параметара
/var/db
из:
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
користите следеће параметре:
node_disk_usage_bytes{path="/var/db"}
node_disk_usage_bytes
: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
користите следеће параметре:
elasticsearch_cluster_health_status {кластер="elasticsearch"} == 1
филтера (на основу нумеричке вредност '1') ће одговарати одговарајућем реду, док ће ознака вратити опис здравственог статуса (тренутно 'зелено'; али потенцијално и 'црвено' или 'жуто').
Подаци из Prometheus се могу користити за откривање ниског нивоа. У овом случају су потребни подаци у JSON формату и опција за претходну обраду * Prometheus у JSON* ће вратити управо то.
За више детаља погледајте Откриће помоћу података Prometheusdata.
У следећој табели су наведене разлике и сличности између PromQL Zabbix Prometheus језика упита за препроцесирање.
|[PromQL тренутни селектор вектора] (https://prometheus.io/docs/prometheus/latest/querying/basics/#instant-vector-selectors)|< |Zabbix Prometheus препроцесирање| |----|----|----| |** Differences|<|<| |Query target|Prometheus сервер|Обичан текст у Prometheus формату експозиције| |Returns|Instant vector|Метрички или вредност ознаке (Prometheus образац)<бр>Низ метрика за једну вредност у JSON-у (Prometheus у JSON)| |Оператори подударања ознака|=, !=, =~, !~|=, !=, =~, !~* *| |Регуларни израз који се користи у подударању имена ознаке или метрике| RE2 | PCRE | |Comparison operators|Погледајте листа|Само == (једнако) је подржано за филтрирање вредности| | Similarities |<|<| |Избор према називу метрике који је једнак стрингу|<metric name> или {__name__="<metric name>"}|<metric name> или {__name__="<metric name>"}| |Бирање према називу метрике који се поклапа са регуларним изразом|{__name__=~"<regex>"}| {__name__=~"<regex>>"}| |Избор према вредности <label name> која је једнака низу|{<label name>="<label value>",...}|{ <label name>="<label value>",...}| |Избор према вредности <label name> која се поклапа са регуларним изразом|{<label name>=~"<regex>",...}|{<label name>=~"<regex>",...}| |Избор по вредности која је једнака низу|{_ _name__=~".*"} == <value>|{_ _name__=~".*"} == <value>|