This is a translation of the original English documentation page. Help us make it better.

1 Foreach функције

Преглед

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:

foreach_function(item filter,time period)

На пример:

avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m)

ће вратити петоминутни просек сваке 'mysql.qps' ставке у групи MySQL сервера.

Имајте на уму да неке функције подржавају додатне параметре.

Синтакса филтера ставке

Филтер ставке:

/host/key[параметри]?[услови]

састоји се од четири дела, где су:

  • host - име домаћина
  • key - кључ ставке (без параметара)
  • parameters - параметри кључа ставке
  • conditions - услови засновани на групи домаћина и/или ознаци ставке (као израз)

Размаци су дозвољени само унутар израза услова.

Употреба џокера*

. Џокер се може користити за замену имена хоста, кључа ставке или појединачног параметра кључа ставке. И хост или кључ ставке морају бити наведени без џокера. Дакле, /host/* и /*/key су важећи филтери, али /*/* је неважећи. * Џокер се не може користити за део имена хоста, кључа ставке, параметра кључа ставке. * Џокер се не подудара са више од једног параметра кључа ставке. Дакле, џокер мора бити наведен за сваки параметар у раздвајању (нпр. key[abc,*,*]).

Израз услова

Израз услова подржава:

  • операндe:
    • група - група хостова
    • ознака - ознака ставке
    • "<текст>" - стринг константа, са \ излазним знаком за избегавање " и \
  • оператори поређења стрингова који разликују велика и мала слова: =, <>
  • логички оператори: и, или, не
  • груписање са заградама: ( )Навођење стринг константи је обавезно.

Подржано је само поређење целог стрингова које разликује велика и мала слова.

Приликом навођења ознака у филтеру (нпр. 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), који се може изоставити:

last_foreach(/*/key?[group="host group"])

Временски период није подржан са функцијом 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>)

Где је:

  • operator условни оператор за вредности ставки (мора бити под двоструким наводницима). Подржани оператори:
    eq - једнако
    ne - није једнако
    gt - веће
    ge - веће или једнако
    lt - мање
    le - мање или једнако
    like - подудара се ако садржи шаблон (разликује велика и мала слова)
    bitand - по биту И
    regexp - подударање регуларног израза датог у pattern које разликује велика и мала слова
    iregexp - подударање регуларног израза датог у pattern које није осетљиво на велика и мала слова
    -pattern је потребан шаблон (аргументи низа морају бити под двоструким наводницима); подржано ако је operator наведен у трећем параметру.

Коментари:

  • Опциони параметри operator или pattern не могу се оставити празни после зареза, већ само потпуно изоставити.
  • Са bitand као трећим параметром, четврти параметар pattern може се навести као два броја, одвојена знаком '/': број_за_упоређивање_са/маском. count_foreach() израчунава „битовско И“ из вредности и маске и упоређује резултат са бројем_за_упоређивање_са. Ако је резултат „битовског И“ једнак броју_за_упоређивање_са, вредност се броји.
    Ако су број_за_упоређивање_са и маска једнаки, потребно је навести само маску (без '/').
  • Са regexp или iregexp као трећим параметром, четврти параметар 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

Ако је ставка игнорисана, ништа се не додаје у агрегацију.