17 Prometheus checks

Преглед

Zabbix може да тражи метрику изложену у формату линије Prometheus.

Потребна су два корака да би се започело прикупљање Прометхеус података:

  • ХТТП главна ставка која указује на одговарајућу крајњу тачку података, нпр. https://<prometheus host>/metrics
  • зависне ставке које користе Прометхеус опцију препроцесирања за упите потребних података од метрика коју је прикупила главна ставка

Постоје две опције за претходну обраду Prometheus података:

  • Prometheus pattern - користи се у нормалним ставкама за упите Prometheus података
  • Prometheus to JSON - користи се у нормалним ставкама и за откривање ниског нивоа. У овом случају тражени Prometheus подаци се враћају у JSON формату.
Групна обрада

Групна обрада је подржана за зависне ставке. Да бисте омогућили кеширање и индексирање, *Prometheus pattern претходна обрада мора бити први** корак претходне обраде. Када је Prometheus pattern први корак пре обраде, онда се рашчлањени Prometheus подаци кеширају и индексирају првим условом <label>==<value> у кораку препроцесирања Prometheus pattern. Овај кеш се поново користи приликом обраде других зависних ставки у овој групи. За оптималне перформансе, прва ознака треба да буде она са највише различитих вредности.

Ако постоји друга предобрада која треба да се уради пре првог корака, треба је преместити или на главну ставку или у нову зависну ставку која би се користила као мастер ставка за зависне ставке.

Конфигурација

Под условом да имате конфигурисану HTTP главну ставку, потребно је да креирате зависну ставку која користи Prometheus корак препроцесирања:

  • Унесите опште зависне параметре ставке у образац за конфигурацију
  • Идите на Картицу Претходна обрада – Изаберите опцију претходна обрада Prometheus-а (* Prometheus образац* или* Prometheus за JSON*)

Следећи параметри су специфични за 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'.

Примери коришћења параметара

  1. Најчешћи случај употребе је враћање вредности. Да бисте вратили вредност /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

користите следеће параметре:

    • Pattern* - node_disk_usage_bytes{path="/var/db"}
  • Result processing - изаберите 'value'
  1. Можда ће вас такође занимати просечна вредност свих параметара node_disk_usage_bytes:
    • Pattern* - node_disk_usage_bytes
  • Result processing - изаберите 'avg.'
  1. Иако Prometheus подржава само нумеричке податке, популарно је користити заобилазно решење које омогућава да се врати и релевантни текстуални опис. Ово се може постићи помоћу филтера и навођења ознаке. Дакле, да бисте вратили вредност ознаке 'цолор' из

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

користите следеће параметре:

    • Pattern* - elasticsearch_cluster_health_status {кластер="elasticsearch"} == 1
  • Result processing - изаберите 'ознаку
    • Label* - наведите 'боју'

филтера (на основу нумеричке вредност '1') ће одговарати одговарајућем реду, док ће ознака вратити опис здравственог статуса (тренутно 'зелено'; али потенцијално и 'црвено' или 'жуто').

Prometheus у JSON

Подаци из 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>|