2 Gebruikersmacro's

Overzicht

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:

{$MACRO}

Zabbix lost macro's op volgens de volgende volgorde:

  1. Macro's op hostniveau (eerst gecontroleerd)
  2. Macro's die zijn gedefinieerd voor sjablonen van het eerste niveau van de host (dat wil zeggen sjablonen die direct aan de host zijn gekoppeld), gesorteerd op sjabloon-ID
  3. Macro's die zijn gedefinieerd voor sjablonen van het tweede niveau van de host, gesorteerd op sjabloon-ID
  4. Macro's die zijn gedefinieerd voor sjablonen van het derde niveau van de host, gesorteerd op sjabloon-ID, enzovoort.
  5. Globale macro's (als laatste gecontroleerd)

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:

  • Item sleutel parameter
  • Item-update-intervallen en flexibele intervallen
  • Triggernaam en beschrijving
  • Parameters en constanten van triggerexpressies (zie voorbeelden)
  • Veel andere locaties - zie de volledige lijst
Veelvoorkomende gebruiksscenario's van globale en hostmacro's
  • gebruik een globale macro op meerdere locaties; wijzig vervolgens de macro-waarde en pas de configuratiewijzigingen toe op alle locaties met één klik
  • profiteer van sjablonen met hostspecifieke eigenschappen: wachtwoorden, poortnummers, bestandsnamen, reguliere expressies, enz.v

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.

Configuratie

Om gebruikersmacro's te definiëren, ga je naar de overeenkomstige locatie in de frontend:

  • voor globale macro's, ga naar Beheer → Macro's
  • voor macro's op host- en sjabloonniveau, open de eigenschappen van de host of het sjabloon en zoek het tabblad Macro's

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.

Voorbeelden

Voorbeeld 1

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.

Voorbeeld 2

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

Voorbeeld 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().

Voorbeeld 4

Synchroniseer de voorwaarde voor de onbeschikbaarheid van de agent met het bijwerken van het item:

  • definieer de macro {$INTERVAL} en gebruik deze in het bijwerkinterval van het item;
  • gebruik {$INTERVAL} als parameter van de trigger voor de onbeschikbaarheid van de agent:

nodata(/ca_001/agent.ping,{$INTERVAL})=1

Voorbeeld 5

Centraliseer de configuratie van werktijden:

  • Maak een globale {$WERKUREN} macro gelijk aan 1-5,09:00-18:00;
  • Gebruik het in het Werkuren veld in BeheerAlgemeenGUI;
  • Gebruik het in het Wanneer actief veld in GebruikersGebruikers, tabblad Media van een gebruiker;
  • Gebruik het om vaker item polling in te stellen tijdens werktijden:

  • Gebruik het in de Tijdsperiode actievoorwaarde;
  • Pas de werktijden aan in BeheerMacro's, indien nodig.
Voorbeeld 6

Gebruik een host-prototype macro om items voor ontdekte hosts te configureren:

  • Definieer op een host-prototype een gebruikersmacro {$SNMPWAARDE} met {#SNMPWAARDE} laag-niveau ontdekking macro als waarde:

  • Ken het Generieke SNMPv2 template toe aan het host-prototype;
  • Gebruik {$SNMPWAARDE} in het SNMP OID veld van items van het Generieke SNMPv2 template.

Gebruikersmacro context

Zie gebruikersmacro's met context.