#1 Macrofuncties
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:
waarbij:
Parameters moeten tussen aanhalingstekens worden geplaatst als ze:
)
" of een komma bevattenBijvoorbeeld:
{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(pattern, output)}
{{#LLDMACRO}.regsub(pattern, output)}
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> , waarbijN - 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.
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) |
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.