[comment]: # ({73d3f62e-73d3f62e})
# 3 Кориснички макрои са контекстом

[comment]: # ({/73d3f62e-73d3f62e})

[comment]: # ({4232eb11-4232eb11})
#### Преглед

Опциони контекст може се користити у [корисничким
макроима](/manual/config/macros/user_macros), што омогућава замену
подразумеване вредности вредношћу специфичном за контекст.

Контекст се додаје називу макроа; синтакса зависи од тога да ли је
контекст статичка текстуална вредност:

  {$MACRO:"static text"}

или регуларни израз:

  {$MACRO:regex:"regular expression"} 

Имајте на уму да макро са контекстом регуларног израза може бити дефинисан само у
конфигурацији корисничког макроа. Ако се префикс `regex:` користи негде другде као
контекст корисничког макроа, као у изразу окидача, третираће се као
статички контекст.

Навођење контекста је опционо (видети такође [important
notes](#important_notes)).

Примери контекста макроа:

|Example|Description|
|--------|-----------|
|`{$LOW_SPACE_LIMIT}`|Кориснички макро без контекста.|
|`{$LOW_SPACE_LIMIT:/tmp}`|Кориснички макро са контекстом (статички стринг).|
|`{$LOW_SPACE_LIMIT:regex:"^/tmp$"}`|Кориснички макро са контекстом (регуларни израз). Исто као `{$LOW_SPACE_LIMIT:/tmp}`.|
|`{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"}`|Кориснички макро са контекстом (регуларни израз). Подудара се са свим стринговима са префиксом /var/log/.|

[comment]: # ({/4232eb11-4232eb11})

[comment]: # ({2a65d6fe-d403a5a0})
#### Случајеви употребе

Кориснички макрои са контекстом могу се дефинисати да би се постигли флексибилнији
прагови у изразима окидача (на основу вредности које је преузело
откривање ниског нивоа). На пример, можете дефинисати следеће макрое:

-  {$LOW\_SPACE\_LIMIT} = 10
-  {$LOW\_SPACE\_LIMIT:/home} = 20
-  {$LOW\_SPACE\_LIMIT:regex:"\^/\[a-z\]+$"} = 30

Затим се макро за откривање ниског нивоа може користити као контекст макроа у
прототипу окидача за откривање монтираног система датотека:

last(/host/vfs.fs.size[{#FSNAME},pfree])<{$LOW_SPACE_LIMIT:"{#FSNAME}"}

Након откривања, различити прагови ниског простора ће се примењивати у
окидачима у зависности од откривених тачака монтирања или типова система датотека.
Проблемски догађаји ће се генерисати ако:

-  фасцикла /home има мање од 20% слободног простора на диску
-  фасцикле које одговарају регуларном изразу (као што су /etc, /tmp или /var) имају мање од 30% слободног простора на диску
-  фасцикле које не одговарају регуларном изразу и нису /home имају мање од 10% слободног простора на диску

[comment]: # ({/2a65d6fe-d403a5a0})

[comment]: # ({4d28ca51-4d28ca51})
#### Важне напомене

- Ако постоји више од једног корисничког макроа са контекстом, Zabbix ће покушати да прво упари једноставне контекстне макрое, а затим контекстне макрое са регуларним изразима у недефинисаном редоследу.

::: notewarning
Не креирајте различите контекстне макрое који се подударају са
истим низом да бисте избегли недефинисано понашање.
:::

-  Ако макро са својим контекстом није пронађен на домаћину, повезаним шаблонима или глобално, онда се тражи макро без контекста.
-  У контексту су подржани само макрои за откривање ниског нивоа. Сви други макрои се игноришу и третирају као обичан текст.

Технички, контекст макроа се одређује коришћењем правила сличних параметрима [item
key](/manual/config/items/item/key), осим што се контекст макроа
не анализира као неколико параметара ако постоји знак `,`:

-  Контекст макроа мора бити стављен под знак навода `"` ако контекст садржи знак `}`
или почиње знаком `"`. Наводници унутар контекста под наводом морају бити избегнути знаком `\`. - Сам знак `\` није избегнут, што значи да је немогуће имати контекст под наводницима који се завршава знаком `\` - макро
{$MACRO:"a:\\b\\c\\"} је неважећи.
-  Почетни размаци у контексту се игноришу, завршни размаци нису:
-  На пример, {$MACRO:A} је исто што и {$MACRO: A}, али није {$MACRO:A }.
-  Сви размаци пре почетних наводника и после завршних наводника су игнорисани, али сви размаци унутар наводника нису:
-  Макрои {$MACRO:"A"}, {$MACRO: "A"}, {$MACRO:"A" } и {$MACRO:
"A" } су исти, али макрои {$MACRO:"A"} и {$MACRO:" A "}
нису.

Следећи макрои су сви еквивалентни, јер имају исти
контекст: {$MACRO:A}, {$MACRO: A} и {$MACRO:"A"}. Ово је у супротности
са кључевима ставки, где су 'key\[a\]', 'key\[ a\]' и 'key\["a"\]'
семантички исти, али различити због јединствености.

[comment]: # ({/4d28ca51-4d28ca51})
