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 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:

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

waarbij:

  • <macro> - de macro om aan te passen (bijvoorbeeld {ITEM.VALUE} of {#LLDMACRO})
  • <func> - de toe te passen functie
  • <params> - een door komma's gescheiden lijst van functieparameters. Parameters moeten worden geciteerd als ze beginnen met '' '' (spatie), " of ), , bevatten.

Bijvoorbeeld:

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

Ondersteunde macrofuncties

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>, waar
N - 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.

Voorbeelden

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)
Het volledige waarden van items zien

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.