3 Кориснички макрои са контекстом
Преглед
Опциони контекст може се користити у корисничким макроима, што омогућава замену подразумеване вредности вредношћу специфичном за контекст.
Контекст се додаје називу макроа; синтакса зависи од тога да ли је контекст статичка текстуална вредност:
{$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/. |
Случајеви употребе
Кориснички макрои са контекстом могу се дефинисати да би се постигли флексибилнији прагови у изразима окидача (на основу вредности које је преузело откривање ниског нивоа). На пример, можете дефинисати следеће макрое:
- {$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% слободног простора на диску
Важне напомене
- Ако постоји више од једног корисничког макроа са контекстом, Zabbix ће покушати да прво упари једноставне контекстне макрое, а затим контекстне макрое са регуларним изразима у недефинисаном редоследу.
Не креирајте различите контекстне макрое који се подударају са истим низом да бисте избегли недефинисано понашање.
- Ако макро са својим контекстом није пронађен на домаћину, повезаним шаблонима или глобално, онда се тражи макро без контекста.
- У контексту су подржани само макрои за откривање ниског нивоа. Сви други макрои се игноришу и третирају као обичан текст.
Технички, контекст макроа се одређује коришћењем правила сличних параметрима 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"]' семантички исти, али различити због јединствености.