Foreach функције се користе у агрегатним прорачунима за враћање једне збирне вредности за сваку ставку коју је изабрао коришћени филтер ставке. Враћа се низ вредности.
На пример, функција * avg_foreach* ће вратити низ вредности, где је свака вредност просечна вредност историје изабране ставке, током временског интервала који је наведен.
филтер ставке је део синтаксе коју користе foreach функције. Коришћење џокер знакова је подржано у филтеру ставки, тако да се тражене ставке могу бирати прилично флексибилно.
Function | Description |
---|---|
avg_foreach | Враћа просечну вредност за сваку ставку. |
bucket_rate_foreach | Враћа парове (горња граница сегмента, вредност стопе) погодне за употребу у функцији histogram_quantile(), где је "горња граница сегмента" вредност параметра кључа ставке дефинисаног у <број параметра> параметру. |
count_foreach | Враћа број вредности за сваку ставку. |
exists_foreach | Враћа '1' за сваку омогућену ставку. |
last_foreach | Враћа последњу вредност за сваку ставку. |
max_foreach | Враћа максималну вредност за сваку ставку. |
min_foreach | Враћа минималну вредност за сваку ставку. |
sum_foreach | Враћа збир вредности за сваку ставку. |
Foreach функције подржавају два уобичајена параметра: item filter
(погледајте детаље у наставку) и time period
:
На пример:
avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m)
ће вратити петоминутни просек сваке 'mysql.qps' ставке у групи MySQL сервера.
Имајте на уму да неке функције подржавају додатне параметре.
Филтер ставке:
/host/key[параметри]?[услови]
састоји се од четири дела, где су:
Размаци су дозвољени само унутар израза услова.
Употреба џокера*
. Џокер се може користити за замену имена хоста, кључа ставке или појединачног параметра кључа ставке. И хост или кључ ставке морају бити наведени без џокера. Дакле, /host/*
и /*/key
су важећи филтери, али /*/*
је неважећи. * Џокер се не може користити за део имена хоста, кључа ставке, параметра кључа ставке. * Џокер се не подудара са више од једног параметра кључа ставке. Дакле, џокер мора бити наведен за сваки параметар у раздвајању (нпр. key[abc,*,*]
).
Израз услова
Израз услова подржава:
"<текст>"
- стринг константа, са \
излазним знаком за избегавање "
и \
=
, <>
и
, или
, не
(
)
Навођење стринг константи је обавезно.Подржано је само поређење целог стрингова које разликује велика и мала слова.
Приликом навођења ознака у филтеру (нпр. tag="nazivoznake:vrednost"
), двотачка ":" се користи као разграничник. Све после ње се сматра вредношћу ознаке. Стога тренутно није подржано навођење имена ознаке које садржи ":" у себи.
Примери
Може се користити сложен филтер, који се позива на кључ ставке, групу домаћиина и ознаке, као што је илустровано на примери:
Syntax example | Description |
---|---|
/host/key[abc,*] |
Подудара се са сличним ставкама на овом домаћину. |
/*/key |
Подудара се са истом ставком било ког хоста. |
/*/key?[group="ABC" and tag="tagname:value"] |
Подудара се са истом ставком било ког домаћина из ABC групе која има ознаке 'tagname:value'. |
/*/key[a,*,c]?[(group="ABC" and tag="Tag1") или (group="DEF" and (tag="Tag2" или tag="Tag3:value"))] |
Подудара се са сличним ставкама било ког домаћина из ABC или DEF групе са одговарајућим ознакама. |
Све референциране ставке морају постојати и прикупљати податке. Само омогућене ставке на омогућеним домаћинима су укључене у прорачуне.Ставке у неподржаном стању нису укључене.
Ако се кључ ставке референциране ставке промени, филтер мора бити ажуриран ручно.
Одређивање надређене групе домаћина укључује надређену групу и све угнежђене групе домаћина са њиховим ставкама.
Параметар други омогућава да одредите временски период за агрегацију. Временски период се може изразити само као време, количина вредности (са префиксом #) није подржана.
Подржани симболи јединица се могу користити у овом параметру ради практичности, на пример, '5m' (пет минута) уместо '300s' (300 секунди) или '1d' (један дан) уместо '86400' (86400 секунди).
За функцију last_foreach временски период је опциони параметар (подржан од Zabbix-а 7.0), који се може изоставити:
Временски период није подржан са функцијом exists_foreach.
bucket_rate_foreach
Функција bucket_rate_foreach подржава трећи опциони параметар:
bucket_rate_foreach(item filter,time period,<parameter number>)
где је <parameter number> позиција вредности „bucket“ у кључу ставке. На пример, ако је вредност „bucket“ у myItem[aaa,0.2] '0.2', онда је њена позиција 2.
Подразумевана вредност <parameter number> је '1'.
count_foreach
Функција count_foreach подржава трећи и четврти опциони параметар:
count_foreach(item filter,time period,<operator>,<pattern>)
Где је:
оператори
:pattern
које разликује велика и мала словаpattern
које није осетљиво на велика и мала словаКоментари:
pattern
може се навести као два броја, одвојена знаком '/': број_за_упоређивање_са/маском. count_foreach() израчунава „битовско И“ из вредности и маске и упоређује резултат са бројем_за_упоређивање_са. Ако је резултат „битовског И“ једнак броју_за_упоређивање_са, вредност се броји.pattern
може бити обичан или глобални (почиње са '@') регуларни израз. У случају глобалних регуларних израза, осетљивост на велика и мала слова се наслеђује из подешавања глобалних регуларних израза. Ради подударања регуларних израза, вредности са покретним зарезом ће увек бити представљене са 4 децималне цифре после '.'. Такође имајте на уму да за велике бројеве разлика у децималном (сачуваном у бази података) и бинарном (користи га Zabbix сервер) представљању може утицати на четврту децималну цифру.Погледајте агрегатна израчунавања за више детаља и примера о коришћењу foreach функција.
Следећа табела илуструје како се свака функција понаша у случајевима ограничене доступности домаћина/ставки и подацима историје.
Function | Disabled host | Unavailable host with data | Unavailable host without data | Disabled item | Unsupported item | Data retrieval error (SQL) |
---|---|---|---|---|---|---|
avg_foreach | ignore | return avg | ignore | ignore | ignore | ignore |
bucket_rate_foreach | ignore | return bucket rate | ignore | ignore | ignore | ignore |
count_foreach | ignore | return count | 0 | ignore | ignore | ignore |
exists_foreach | ignore | 1 | 1 | ignore | 1 | n/a |
last_foreach | ignore | return last | ignore | ignore | ignore | ignore |
max_foreach | ignore | return max | ignore | ignore | ignore | ignore |
min_foreach | ignore | return min | ignore | ignore | ignore | ignore |
sum_foreach | ignore | return sum | ignore | ignore | ignore | ignore |
Ако је ставка игнорисана, ништа се не додаје у агрегацију.