Gebruikersmacro's worden ondersteund in Zabbix voor meer flexibiliteit, naast de macros die ondersteund worden als standaardfunctionaliteit.
Gebruikersmacro's kunnen op globaal, sjabloon- en hostniveau worden gedefinieerd. Deze macro's hebben een speciale syntaxis:
Zabbix lost macro's op volgens de volgende volgorde:
Met andere woorden, als een macro niet bestaat voor een host, zal Zabbix proberen om deze te vinden in de host-sjablonen van toenemende diepte. Als de macro nog steeds niet wordt gevonden, wordt een globale macro gebruikt als deze bestaat.
Als een macro met dezelfde naam bestaat in meerdere gekoppelde sjablonen van hetzelfde niveau, wordt de macro van het sjabloon met het laagste ID gebruikt. Hierdoor is het risico op configuratiefouten groter wanneer dezelfde naam voor macros wordt gebruikt in meerdere sjablonen.
Als Zabbix een macro niet kan vinden, zal de macro niet worden opgelost.
Macro's (inclusief gebruikersmacro's) worden bewust niet opgelost in het gedeelte Configuratie (bijvoorbeeld in de triggernamenlijst) om complexe configuratie transparanter te maken.
Gebruikersmacro's kunnen worden gebruikt in:
Het is raadzaam om hostmacro's te gebruiken in plaats van globale macro's, omdat het toevoegen, bijwerken of verwijderen van globale macro's zorgt voor incrementele configuratie-updates voor alle hosts. Voor meer informatie, zie Upgrade-opmerkingen voor 6.4.0.
Om gebruikersmacro's te definiëren, ga je naar de overeenkomstige locatie in de frontend:
Als een gebruikersmacro wordt gebruikt in items of triggers in een sjabloon, wordt aanbevolen om die macro aan het sjabloon toe te voegen, zelfs als deze op een globaal niveau is gedefinieerd. Op die manier, als het macrotype tekst is, zal het exporteren van het sjabloon naar XML en het importeren ervan in een ander systeem nog steeds toestaan dat het zoals verwacht werkt. Waarden van geheime macro's worden niet geëxporteerd.
Een gebruikersmacro heeft de volgende eigenschappen:
Parameter | Beschrijving |
---|---|
Macro | Macro-naam. De naam moet tussen accolades worden geplaatst en beginnen met een dollarteken. Voorbeeld: {$FRONTEND_URL}. De volgende tekens zijn toegestaan in de macro-namen: A-Z (alleen hoofdletters), 0-9, _, . |
Value | Macro-waarde. Drie waardestypen worden ondersteund: Tekst (standaard) - platte tekst waarde Geheime tekst - de waarde is gemaskeerd met asterisken Vault-geheim - de waarde bevat een pad/query naar een vault-geheim. Om het waardestype te wijzigen, klik je op de knop aan het einde van het invoerveld voor de waarde. De maximale lengte van een gebruikersmacro-waarde is 2048 tekens (255 tekens in versies voor 5.2.0). |
Beschrijving | Tekstveld dat wordt gebruikt om meer informatie over deze macro te verstrekken. |
In triggervoorwaarden zullen gebruikersmacro's oplossen als je een parameter of constante aanroept. Ze zullen NIET oplossen als je verwijst naar een host, item sleutel, functie, operator of een andere triggervoorwaarde. Geheime macro's kunnen niet worden gebruikt in triggervoorwaarden.
Gebruik van een host-niveau macro in de toets van het item "Status van SSH-daemon":
net.tcp.service[ssh,,{$SSH_PORT}]
Dit item kan aan meerdere hosts worden toegewezen, op voorwaarde dat de waarde van {$SSH_PORT} is gedefinieerd op die hosts.
Gebruik van een host-niveau macro in de trigger "CPU-belasting is te hoog":
last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}
Een dergelijke trigger zou worden aangemaakt op het sjabloon en niet worden bewerkt in individuele hosts.
Als je het aantal waarden als parameter van de functie wilt gebruiken (bijvoorbeeld max(/host/key,#3)), voeg dan het hekje toe aan de macro-definitie zoals dit: SOME_PERIOD => #3
Gebruik van twee macros in de trigger "CPU-belasting is te hoog":
min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}
Merk op dat een macro kan worden gebruikt als parameter van een triggerfunctie, in dit voorbeeld de functie min().
Synchroniseer de voorwaarde voor de onbeschikbaarheid van de agent met het bijwerken van het item:
nodata(/ca_001/agent.ping,{$INTERVAL})=1
Centraliseer de configuratie van werktijden:
1-5,09:00-18:00
;Gebruik een host-prototype macro om items voor ontdekte hosts te configureren: