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"]' семантички исти, али различити због јединствености.