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су важећи филтери, али
//*` је неважећи.key[abc,*,*]
).Израз услова
Израз услова подржава:
"<text>"
- константа стринга, са \
escape карактером за изоловање "
и \
=
, <>
and
, or
, not
(
)
Навођење стринг константи је обавезно. Подржано је само поређење пуног стринга са разликовањем великих и малих слова.
Када наведете ознаке у филтеру (тј. tag="tagname:value"
), двотачка ":" се користи као граничник. Све после се сматра вредношћу ознаке. Стога тренутно није подржано да се наведе име ознаке које садржи ":".
Примери
Може се користити сложени филтер који упућује на кључ ставке, групу домаћина и ознаке, као што је илустровано примерима:
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") or (group="DEF" and (tag="Tag2" or tag="Tag3:value"))] |
Упарује сличне ставке било ког домаћина из ABC или DEF групе са одговарајућим ознакама. |
Све наведене ставке морају постојати и прикупљати податке. Само омогућене ставке на омогућеним домаћинима су укључене у прорачуне. Ставке у неподржаном стању нису укључене.
Ако се промени кључ ставке референтне ставке, филтер се мора ажурирати ручно.
Навођење надређене групе домаћина укључује родитељску групу и све угњеждене групе домаћина са њиховим ставкама.
Параметар други омогућава да одредите временски период за агрегацију. Временски период се може изразити само као време, количина вредности (са префиксом #) није подржана.
Подржани симболи јединица се могу користити у овом параметру ради практичности, на пример, '5m' (пет минута) уместо '300s' (300 секунди) или '1d' (један дан) уместо '86400' (86400 секунди).
За функцију last_foreach временски период је опциони параметар (подржан од Zabbix-а 7.0), који се може изоставити:
Временски период није подржан са функцијом exists_foreach.
bucket_rate_foreach
Трећи опциони параметар је подржан функцијом bucket_rate_foreach:
где је <parameter number> позиција вредности "bucket" у кључу ставке. На пример, ако је вредност "bucket" у myItem[aaa,0.2] '0.2', тада је њена позиција 2.
Подразумевана вредност <parameter number> је '1'.
count_foreach
Трећи и четврти опциони параметри су подржани функцијом count_foreach:
Где је:
operators
:pattern
где се разликују мала и велика словаpattern
где се не разликују мала и велика словаКоментари:
pattern
се може навести као два броја, раздвојена са '/': number_to_compare_with/mask. count() израчунава "битовски AND" из вредности и маске и упоређује резултат са number_to_compare_with. Ако је резултат "битовски AND" једнак number_to_compare_with, вредност се рачуна.pattern
може бити обичан или глобални (који почиње са '@') регуларни израз. У случају глобалних регуларних израза, осетљивост на велика и мала слова се наслеђује из подешавања глобалних регуларних израза. За потребе подударања регуларног израза, вредности са бројем у покретном зарезу увек ће бити представљене са 4 цифре после '.'. Такође имајте на уму да за велике бројеве разлика у децималној (чуваној у бази података) и бинарној (коју користи Zabbix сервер) може утицати на 4. децималу.Погледајте агрегатне калкулације за више детаља и примере коришћења 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 |
Ако је ставка игнорисана, ништа се не додаје у агрегацију.