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