[comment]: # translation:outdated

[comment]: # ({73d3f62e-73d3f62e})
# 3 Gebruikersmacro's met context

[comment]: # ({/73d3f62e-73d3f62e})

[comment]: # ({4232eb11-4232eb11})
#### Overzicht

Een optionele context kan worden gebruikt in [gebruikersmacro's](/manual/config/macros/user_macros), waardoor de standaardwaarde kan worden overschreven door een contextspecifieke waarde.

De context wordt toegevoegd aan de naam van de macro; de syntaxis hangt af van of de context een statische tekstwaarde is:

    {$MACRO:"statische tekst"}

of een reguliere expressie:

    {$MACRO:regex:"reguliere expressie"} 

Merk op dat een macro met een context van reguliere expressie alleen kan worden gedefinieerd in de configuratie van gebruikersmacro's. Als het voorvoegsel `regex:` ergens anders wordt gebruikt als gebruikersmacro-context, zoals in een triggervoorwaarde, wordt het behandeld als een statische context.

Het aanhalen van de context is optioneel (zie ook [belangrijke
opmerkingen](#important_notes)).

Voorbeelden van macrocontext:

|Voorbeeld|Beschrijving|
|-------|-----------|
|`{$LOW_SPACE_LIMIT}`|Gebruikersmacro zonder context.|
|`{$LOW_SPACE_LIMIT:/tmp}`|Gebruikersmacro met context (statische string).|
|`{$LOW_SPACE_LIMIT:regex:"^/tmp$"}`|Gebruikersmacro met context (reguliere expressie). Hetzelfde als `{$LOW_SPACE_LIMIT:/tmp}`.|
|`{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"}`|Gebruikersmacro met context (reguliere expressie). Komt overeen met alle strings die beginnen met /var/log/.|

[comment]: # ({/4232eb11-4232eb11})

[comment]: # ({d403a5a0-d403a5a0})
#### Gebruiksscenario's

Gebruikersmacro's met context kunnen worden gedefinieerd om flexibelere drempelwaarden in triggerevaluaties te bereiken (gebaseerd op de waarden die zijn opgehaald door laagniveaudetectie). Bijvoorbeeld, u kunt de volgende macro's definiëren:

-   {$LOW\_SPACE\_LIMIT} = 10
-   {$LOW\_SPACE\_LIMIT:/home} = 20
-   {$LOW\_SPACE\_LIMIT:regex:"\^\\/\[a-z\]+$"} = 30

Vervolgens kan een macro voor laagniveaudetectie worden gebruikt als macrocontext in een triggervoorbeeld voor de detectie van gemonteerde bestandssystemen:

    last(/host/vfs.fs.size[{#FSNAME},pfree])<{$LOW_SPACE_LIMIT:"{#FSNAME}"}

Na de detectie zullen verschillende lage-diskruimte-drempels van toepassing zijn in triggerevaluaties, afhankelijk van de gedetecteerde koppelingspunten of bestandssysteemtypes. Probleemgebeurtenissen worden gegenereerd als:

-   de /home-map minder dan 20% vrije schijfruimte heeft
-   mappen die overeenkomen met het regex-patroon (zoals /etc, /tmp of /var) minder dan 30% vrije schijfruimte hebben
-   mappen die niet overeenkomen met het regex-patroon en niet /home zijn, hebben minder dan 10% vrije schijfruimte

[comment]: # ({/d403a5a0-d403a5a0})

[comment]: # ({4d28ca51-4d28ca51})
#### Belangrijke opmerkingen

-   Als er meer dan één gebruikersmacro met context bestaat, zal Zabbix eerst proberen om de eenvoudige contextmacro's te matchen en daarna contextmacro's met reguliere expressies in een ongedefinieerde volgorde.

::: notewarning
Maak geen verschillende contextmacro's die overeenkomen met dezelfde tekenreeks om ongedefinieerd gedrag te voorkomen.
:::

-   Als een macro met zijn context niet wordt gevonden op een host, gekoppelde sjablonen of wereldwijd, wordt gezocht naar de macro zonder context.
-   Alleen laag-niveau ontdekkingsmacro's worden ondersteund in de context. Andere macro's worden genegeerd en behandeld als platte tekst.

Technisch gezien wordt macrocontext gespecificeerd met regels die vergelijkbaar zijn met de parameters van [item
sleutels](/manual/config/items/item/key), behalve dat macrocontext niet wordt geparseerd als meerdere parameters als er een `,`-teken is:

-   Macrocontext moet worden geciteerd met `"` als de context een `}`-teken bevat of begint met een `"`-teken. Aanhalingstekens binnen geciteerde context moeten worden ontsnapt met het `\`-teken.
-   Het `\`-teken zelf wordt niet ontsnapt, wat betekent dat het onmogelijk is om een geciteerde context te hebben die eindigt met het `\`-teken - de macro {$MACRO:"a:\\b\\c\\"} is ongeldig.
-   De voorloopspaties in de context worden genegeerd, de achterloopspaties niet:
    -   Bijvoorbeeld {$MACRO:A} is hetzelfde als {$MACRO: A}, maar niet {$MACRO:A }.
-   Alle spaties voor aanhalingstekens aan het begin en na aanhalingstekens aan het einde worden genegeerd, maar alle spaties binnen aanhalingstekens niet:
    -   Macro's {$MACRO:"A"}, {$MACRO: "A"}, {$MACRO:"A" } en {$MACRO:
        "A" } zijn hetzelfde, maar macro's {$MACRO:"A"} en {$MACRO:" A "}
        zijn dat niet.

De volgende macro's zijn allemaal gelijkwaardig, omdat ze dezelfde
context hebben: {$MACRO:A}, {$MACRO: A} en {$MACRO:"A"}. Dit staat in contrast met itemsleutels, waar 'key\[a\]', 'key\[ a\]' en 'key\["a"\]' semantisch hetzelfde zijn, maar verschillend voor het doel van uniciteit.

[comment]: # ({/4d28ca51-4d28ca51})
