2 Gebruikersmacro's

Overzicht

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:

{$MACRO}

Zabbix lost macro's op volgens de volgende volgorde:

  1. Macro's op hostniveau (als eerste gecontroleerd)
  2. Macro's gedefinieerd voor templates van het eerste niveau van de host (d.w.z. sjablonen die direct aan de host zijn gekoppeld), gesorteerd op sjabloon-ID
  3. Macro's gedefinieerd voor templates van het tweede niveau van de host, gesorteerd op sjabloon-ID
  4. Macro's gedefinieerd voor templates van het derde niveau van de host, gesorteerd op sjabloon-ID, enz.
  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 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:

  • parameters van itemtoetsen
  • update-intervallen en flexibele intervallen van items
  • trigger naam en beschrijving
  • parameters en constanten van triggervoorwaarden (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

Configuratie

Om gebruikersmacro's te definiëren, gaat u naar de bijbehorende locatie in de frontend:

  • voor globale macro's gaat u naar Beheer → Algemeen → Macro's
  • voor macro's op host- en sjabloonniveau opent u de eigenschappen van de host of het sjabloon en zoekt u het tabblad Macro's

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.

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

  • Maak een globale {$WERKUREN} macro gelijk aan 1-5,09:00-18:00;
  • Gebruik deze in het Werkuren veld in AdministratieAlgemeenGUI;
  • Gebruik deze in het Wanneer actief veld in AdministratieGebruikerMedia;
  • Gebruik deze om vaker gegevens op te halen van een item tijdens werkuren:

  • Gebruik deze in de Tijdsperiode actievoorwaarde;
  • Pas de werktijden aan in AdministratieAlgemeenMacro'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.