#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 verwerken is. Het kan lang zijn of een specifieke interessante substring bevatten die je zou willen extraheren. Hier komen macrofuncties van pas.
De syntaxis van een macrofunctie is:
waarbij:
"
of )
, ,
bevatten.Bijvoorbeeld:
{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(pattern, output)}
{{#LLDMACRO}.regsub(pattern, output)}
FUNCTIE | |||
---|---|---|---|
Beschrijving | Parameters | Ondersteund voor | |
fmtnum (<digits>) | |||
Nummeropmaak om het aantal cijfers achter de komma te regelen. | digits - het aantal cijfers achter de komma. Geldig bereik: 0-20 (vanaf Zabbix 6.4.6). Er worden geen nulcijfers aan het einde gegenereerd. | {ITEM.VALUE} {ITEM.LASTVALUE} Uitdrukkingsmacro's |
|
fmttime (<format>,<time_shift>) | |||
Tijdopmaak. | format - verplichte opmaakreeks, compatibel met de opmaak van de strftime-functie time_shift - de toegepaste tijdverschuiving voor het formatteren; moet beginnen met -<N><time_unit> of +<N><time_unit> , waarN - het aantal tijdseenheden om toe te voegen of af te trekken; time_unit - h (uur), d (dag), w (week), M (maand) of y (jaar). Sinds Zabbix 5.4 ondersteunt de parameter time_shift multi-step tijdoperaties en kan deze /<time_unit> bevatten om te verschuiven naar het begin van de tijdseenheid (/d - middernacht, /w - 1ste dag van de week (maandag), /M - 1ste dag van de maand, enz.). Voorbeelden:-1w - precies 7 dagen terug;-1w/w - maandag van de vorige week;-1w/w+1d - dinsdag van de vorige week.Merk op dat tijdoperaties van links naar rechts worden berekend zonder prioriteiten. Bijvoorbeeld, -1M/d+1h/w wordt geïnterpreteerd als ((-1M/d)+1h)/w . |
{TIME} | |
iregsub (<pattern>,<output>) | |||
Substring-extractie door een reguliere expressie-match (hoofdletteronafhankelijk). | pattern - de reguliere expressie om overeen te komen output - de uitvoeropties. Plaatsaanduidingen \1 - \9 worden ondersteund om groepen vast te leggen. \0 retourneert de overeenkomende tekst. |
{ITEM.VALUE} {ITEM.LASTVALUE} Uitdrukkingsmacro's (behalve in de filter van de laag-niveau ontdekkingsregel) |
|
regsub (<pattern>,<output>) | |||
Substring-extractie door een reguliere expressie-match (hoofdlettergevoelig). | pattern - de reguliere expressie om overeen te komen output - de uitvoeropties. Plaatsaanduidingen \1 - \9 worden ondersteund om groepen vast te leggen. \0 retourneert de overeenkomende tekst. |
{ITEM.VALUE} {ITEM.LASTVALUE} Uitdrukkingsmacro's (behalve in de filter van de laag-niveau ontdekkingsregel) |
Als een functie wordt gebruikt op een ondersteunde locatie, maar wordt toegepast op een macro die macrofuncties niet ondersteunt, dan evalueert de macro naar 'UNKNOWN'.
Als het patroon geen correcte reguliere expressie is, wordt de macro geëvalueerd naar 'UNKNOWN' (uitgezonderd laag-niveau ontdekkingsmacro's waarin 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 macro-waarden 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 gecrasht errno 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 plaatsen in de frontend ingekort tot 20 tekens. Om de volledige waarden van deze macro's te zien, kun je macrofuncties gebruiken, bijvoorbeeld:
{{ITEM.VALUE}.regsub("(.*)", \1)}
{{ITEM.LASTVALUE}.regsub("(.*)", \1)}
Zie ook: {ITEM.VALUE} en {ITEM.LASTVALUE} macro details.