3 Кориснички макрои са контекстом

Преглед

Опциони контекст се може користити у кориснички макрои, омогућавајући да се замени подразумевану вредност са контекстно-специфичним.

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

{$MACRO:"static text"}

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

{$MACRO:regex:"regular expression"} 

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

Цитирање контекста је опционо (погледајте такође важно белешке).

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

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

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

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

Технички, контекст макроа је специфициран помоћу правила сличних ставка кључа параметри, осим што је контекст макроа није рашчлањено као неколико параметара ако постоји знак ,:

  • Контекст макроа мора бити наведен са " ако контекст садржи } знак или почиње знаком ". Наводници унутар наводника контекст мора бити избачен знаком \.
  • Сам знак \ није уклоњен, што значи да је немогуће да има цитирани контекст који се завршава знаком \ - макро {$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"]' исто семантички, али различито у сврху јединствености.