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 |
Ако је ставка игнорисана, ништа се не додаје у агрегацију.