Gebruikermacro's worden ondersteund in Zabbix voor meer flexibiliteit, naast de macro's die standaard worden ondersteund.
Gebruikermacro's kunnen worden gedefinieerd op globaal niveau, sjabloonniveau en hostniveau. 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 sjablonen van de host van toenemende diepte. Als het nog steeds niet wordt gevonden, zal een globale macro worden gebruikt, als deze bestaat.
Als een macro met dezelfde naam bestaat in meerdere gekoppelde sjablonen van hetzelfde niveau, zal de macro van het sjabloon met het laagste ID worden gebruikt. Daarom is het hebben van macro's met dezelfde naam in meerdere sjablonen een configuratierisico.
Als Zabbix een macro niet kan vinden, zal de macro niet worden opgelost.
Macro's (inclusief gebruikersmacro's) worden opzettelijk niet opgelost in het configuratiegedeelte (bijvoorbeeld in de triggerlijst) om complexe configuratie transparanter te maken.
Gebruikermacro's kunnen worden gebruikt in:
Om gebruikersmacro's te definiëren, gaat u naar de bijbehorende locatie in de frontend:
Als een gebruikersmacro wordt gebruikt in items of triggers in een sjabloon, wordt aangeraden om die macro toe te voegen aan het sjabloon, zelfs als deze op het globale niveau is gedefinieerd. Op die manier zal, als het type van de macro tekst is, het exporteren van het sjabloon naar XML en het importeren ervan in een ander systeem nog steeds mogelijk maken dat het zoals verwacht werkt. Waarden van geheime macro's worden niet geëxporteerd.
Een gebruikersmacro heeft de volgende eigenschappen:
Parameter | Omschrijving |
---|---|
Macro | Naam van de macro. De naam moet tussen accolades worden geplaatst en beginnen met een dollarteken. Voorbeeld: {$FRONTEND_URL}. De volgende tekens zijn toegestaan in de macronamen: A-Z (alleen hoofdletters) , 0-9 , _ , . |
Waarde | Macrowaarde. Er worden drie waardetypes ondersteund: Tekst (standaard) - een platte tekstwaarde Geheime tekst - de waarde wordt verborgen met asterisken, wat handig kan zijn om gevoelige informatie zoals wachtwoorden of gedeelde sleutels te beschermen. Vault-geheim - de waarde bevat een referentiepad (bijv. 'path:key', bijvoorbeeld “secret/zabbix:wachtwoord”) naar een Vault-geheim Let op dat hoewel de waarde van een geheime macro aan het zicht wordt onttrokken, de waarde kan worden onthuld door het gebruik in items. Bijvoorbeeld, in een extern script kan een 'echo'-statement die verwijst naar een geheime macro worden gebruikt om de macro-waarde aan de frontend te onthullen, omdat de Zabbix-server toegang heeft tot de echte macro-waarde. Om het waardetype te selecteren, klikt u op de knop aan het einde van het invoerveld voor de waarde: het pictogram geeft een tekstmacro aan; het pictogram geeft een geheime tekstmacro aan. Bij het zweven over het veld voor de waarde wordt het veld omgezet in een knop , waarmee u een nieuwe waarde voor de macro kunt invoeren (om te verlaten zonder een nieuwe waarde op te slaan, klikt u op de pijl naar links (). het pictogram geeft een geheime Vault-macro aan. De maximale lengte van een gebruikersmacro-waarde is 2048 tekens (255 tekens in versies vóór 5.2.0). |
Omschrijving | Tekstveld dat wordt gebruikt om meer informatie te geven over deze macro. |
URL's die een geheime macro bevatten, zullen niet werken, omdat de macro daarin wordt opgelost als "******".
In triggerexpressies worden gebruikersmacro's opgelost als ze verwijzen naar een parameter of constante. Ze worden NIET opgelost als ze verwijzen naar een host, itemtoets, functie, operator of andere triggerexpressie. Geheime macro's kunnen niet worden gebruikt in triggerexpressies.
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 werkuren:
1-5,09:00-18:00
;Gebruik een host-prototype macro om items voor ontdekte hosts te configureren: