This is a translation of the original English documentation page. Help us make it better.

#1 Macrofuncties

Overzicht

Macrofuncties bieden de mogelijkheid om macrowaarden aan te passen.

Soms kan een macro resulteren in een waarde die niet per se gemakkelijk te bewerken is. Het kan lang zijn of een specifieke substring bevatten waarin je geïnteresseerd bent om te extraheren. Hier komen macrofuncties van pas.

De syntaxis van een macrofunctie is:

{<macro>.<func>(<params>)}

waarbij:

  • <macro> - de macro die je wilt aanpassen (bijvoorbeeld {ITEM.VALUE} of {#LLDMACRO})
  • <func> - de functie die je wilt toepassen
  • <params> - een door komma's gescheiden lijst van functieparameters

Parameters moeten tussen aanhalingstekens worden geplaatst als ze:

  • beginnen met een spatie of dubbele aanhalingstekens
  • sluitende haakjes ")" of een komma bevatten

Bijvoorbeeld:

{{TIME}.fmttime(format,time_shift)}
       {{ITEM.VALUE}.regsub(pattern, output)}
       {{#LLDMACRO}.regsub(pattern, output)}

Ondersteunde macrofuncties

Functie Beschrijving Parameters Ondersteund voor
fmtnum (<cijfers>)
Getalnotatie om het aantal cijfers na de komma te beheersen. cijfers - het aantal cijfers na de komma. Geldig bereik: 0-20 (vanaf Zabbix 6.0.21). Er worden geen overbodige nullen aan het einde gegenereerd. {ITEM.VALUE}
{ITEM.LASTVALUE}
Uitdrukkingsmacro's
fmttime (<indeling>,<tijdsverschuiving>)
Tijdnotatie. indeling - verplicht opmaakreeks, compatibel met de opmaak van de strftime-functie
tijdsverschuiving - de toegepaste tijdsverschuiving voor de opmaak; moet beginnen met -<N><tijdseenheid> of +<N><tijdseenheid>, waarbij
N - het aantal tijdseenheden om toe te voegen of af te trekken;
tijdseenheid - h (uur), d (dag), w (week), M (maand) of y (jaar).
Vanaf Zabbix 5.4 ondersteunt de tijdsverschuivingsparameter bewerkingen met meerdere stappen en kan deze /<tijdseenheid> bevatten om te verschuiven naar het begin van de tijdseenheid (/d - middernacht, /w - 1e dag van de week (maandag), /M - 1e dag van de maand, enz.). Voorbeelden:
-1w - exact 7 dagen terug;
-1w/w - maandag van de vorige week;
-1w/w+1d - dinsdag van de vorige week.
Houd er rekening mee dat tijdsbewerkingen van links naar rechts worden berekend zonder prioriteiten. Bijvoorbeeld -1M/d+1h/w wordt geparseerd als ((-1M/d)+1h)/w.
{TIME}
iregsub (<patroon>,<uitvoer>)
Substring-extractie door een overeenkomst met een reguliere expressie (hoofdletterongevoelig). patroon - de reguliere expressie om overeen te komen
uitvoer - de uitvoeropties. \1 - \9 plaatshouders worden ondersteund om groepen vast te leggen. \0 geeft de overeenkomende tekst terug.
{ITEM.VALUE}
{ITEM.LASTVALUE}
LLD-macro's (behalve in filter van LLD-regel)
regsub (<patroon>,<uitvoer>)
Substring-extractie door een overeenkomst met een reguliere expressie (hoofdlettergevoelig). patroon - de reguliere expressie om overeen te komen
uitvoer - de uitvoeropties. \1 - \9 plaatshouders worden ondersteund om groepen vast te leggen. \0 geeft de overeenkomende tekst terug.
{ITEM.VALUE}
{ITEM.LASTVALUE}
LLD-macro's (behalve in filter van LLD-regel)

Als een functie wordt gebruikt op een ondersteunde locatie, maar wordt toegepast op een macro die geen macrofuncties ondersteunt, wordt de macro geëvalueerd als 'ONBEKEND'.

Als het patroon geen geldige reguliere expressie is, wordt de macro geëvalueerd als 'ONBEKEND' (met uitzondering van LLD-macro's waar de functie in dat geval wordt genegeerd en de macro niet wordt uitgebreid).

Als een macrofunctie wordt toegepast op de macro op locaties die geen macrofuncties ondersteunen, wordt de functie genegeerd.

Voorbeelden

De manieren waarop macrofuncties kunnen worden gebruikt om macrowaarden aan te passen, worden geïllustreerd in de volgende voorbeelden van ontvangen waarden:

Ontvangen waarde Macro Uitvoer
24.3413523 {{ITEM.VALUE}.fmtnum(2)} 24.34
24.3413523 {{ITEM.VALUE}.fmtnum(0)} 24
12:36:01 {{TIME}.fmttime(%B)} oktober
12:36:01 {{TIME}.fmttime(%d %B,-1M/M)} 1 september
123Logregel {{ITEM.VALUE}.regsub(^[0-9]+, Probleem)} Probleem
123 Logregel {{ITEM.VALUE}.regsub("^([0-9]+)", Probleem)} Probleem
123 Logregel {{ITEM.VALUE}.regsub("^([0-9]+)", Probleem ID: \1)} Probleem ID: 123
Logregel {{ITEM.VALUE}.regsub(".*", Probleem ID: \1)} ''Probleem ID: ''
MySQL crashte fout 123 {{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " Probleem ID: \1_\2 ")} '' Probleem ID: MySQL_123 ''
123 Logregel {{ITEM.VALUE}.regsub("([1-9]+", Probleem ID: \1)} *ONBEKEND* (ongeldige reguliere expressie)
klantnaam_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} klantnaam
klantnaam_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} 1
klantnaam_1 {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (ongeldige reguliere expressie)
klantnaam_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} {$MACRO:"klantnaam"}
klantnaam_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} {$MACRO:"1"}
klantnaam_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} {$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (ongeldige reguliere expressie)
klantnaam_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\\"(.*)_([0-9]+)\\\", \\1)}\"}" "{$MACRO:\"klantnaam\"}"
klantnaam_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\\"(.*)_([0-9]+)\\\", \\2)}\"}" "{$MACRO:\"1\"}")
klantnaam_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\\"(.*)_([0-9]+\\\", \\1)}\"}" "{$MACRO:\"{{#IFALIAS}.regsub(\\\"(.*)_([0-9]+\\\", \\1)}\"}") (ongeldige reguliere expressie)
Het volledige waarden van item weergeven

Lange waarden van geresolveerde {ITEM.VALUE} en {ITEM.LASTVALUE} macro's voor tekst/log items worden op sommige locaties in de frontend afgekapt tot 20 tekens. Om de volledige waarden van deze macro's te zien, kunt u macrofuncties gebruiken, bijvoorbeeld:

{{ITEM.VALUE}.regsub("(.*)", \1)}
{{ITEM.LASTVALUE}.regsub("(.*)", \1)}

Zie ook: {ITEM.VALUE} en {ITEM.LASTVALUE} macro details.