[comment]: # translation:outdated

[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)).

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

|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
Немојте креирати различите контекстне макрое који одговарају
исти стринг да би се избегло недефинисано понашање.
:::

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

Технички, контекст макроа је специфициран помоћу правила сличних [ставка
кључа](/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})
