17 Prometheus checks

Преглед

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

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

  • HTTP главна ставка која указује на одговарајућу крајњу тачку података, нпр. 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
Шаблон Да бисте дефинисали потребан образац података, можете користити језик за упите који је сличан језику за упите Прометеј (погледајте табелу поређења), нпр.:
<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 знакова, али обрнута коса црта, двоструки наводник и знакови за прелазак у други ред морају бити избегнути као \\, \" и \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
Обрада резултата Наведите да ли да бисте вратили вредност, ознаку или применили одговарајућу функцију (ако се образац подудара са неколико редова и резултат треба агрегирати):
вредност - врати вредност метрике (грешка ако се подудара више редова)
ознака - врати вредност ознаке наведене у пољу Ознака (грешка ако се подудара више метрика)
сум - врати збир вредности
мин - врати минималну вредност
макс - врати максималну вредност
просек - врати просечну вредност
број - врати број вредности
Ово поље је доступно само за опцију Прометеј образац.
Погледајте и примере коришћења параметара испод.
Излаз Дефинишите назив ознаке (опционо). У овом случају враћа се вредност која одговара називу ознаке.
Ово поље је доступно само за опцију Прометеј образац, ако је изабрано 'Ознака' у пољу Обрада резултата.

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

  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

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

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

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 {cluster="elasticsearch"} == 1
  • Обрада резултата - изаберите 'ознаку'
  • Ознака - наведите 'боју'

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

Prometheus у JSON

Подаци из Prometheus се могу користити за откривање ниског нивоа. У овом случају су потребни подаци у JSON формату и опција за претходну обраду * Prometheus у JSON* ће вратити управо то.

За више детаља погледајте Откриће помоћу података Prometheusdata.

Поређење језика за упите

Следећа табела приказује разлике и сличности између PromQL-а и језика за упите за претходну обраду Zabbix Prometheus-а.

PromQL селектор инстант вектора Zabbix Prometheus претходна обрада
Differences
Query target Prometheus server Обичан текст у Prometheus формату експозиције
Returns Instant vector Вредност метрике или ознаке (Prometheus шаблон)
Низ метрика за једну вредност у JSON-у (Prometheus у JSON)
Label matching operators =, !=, =~, !~ =, !=, =~, !~
Регуларни израз који се користи у подударању ознака или имена метрике RE2 PCRE
Оператори поређења Погледајте листу Само == (једнако) је подржано за филтрирање вредности
Similarities
Избор по имену метрике који је једнак стрингу <metric name> или {__name__="<metric name>"} <metric name> или {__name__="<metric name>"}
Избор по имену метрике који се подудара са регуларним изразом {__name__=~"<regex>"} {__name__=~"<regex>"}
Избор по вредности <назив ознаке> која је једнака стрингу {<label name>="<label value>",...} {<label name>="<label value>",...}
Избор по вредности <назив ознаке> која се подудара са регуларним изразом {<label name>=~"<regex>",...} {<label name>=~"<regex>",...}
Избор по вредности која је једнака стрингу {__name__=~".*"} == <value> {__name__=~".*"} == <value>