Benutzermakros
Übersicht
Benutzermakros werden in Zabbix für mehr Flexibilität zusätzlich zu den standardmäßig unterstützten Makros unterstützt.
Benutzermakros können auf globaler Ebene sowie auf Vorlagen- und Host-Ebene definiert werden. Diese Makros haben eine spezielle Syntax:
{$MACRO}
Zabbix löst Makros entsprechend der folgenden Priorität auf:
- Makros auf Host-Ebene (werden zuerst geprüft).
- Makros, die für die Vorlagen der ersten Ebene des Hosts definiert sind (d. h. Vorlagen, die direkt mit dem Host verknüpft sind), sortiert nach Vorlagen-ID.
- Makros, die für die Vorlagen der zweiten Ebene des Hosts definiert sind, sortiert nach Vorlagen-ID.
- Makros, die für die Vorlagen der dritten Ebene des Hosts definiert sind, sortiert nach Vorlagen-ID usw.
- Globale Makros (werden zuletzt geprüft).
Wenn ein Makro für einen Host nicht existiert, versucht Zabbix also, es in den Vorlagen des Hosts mit zunehmender Verschachtelungstiefe zu finden. Wenn es weiterhin nicht gefunden wird, wird ein globales Makro verwendet, sofern vorhanden.
Wenn ein Makro mit demselben Namen in mehreren verknüpften Vorlagen derselben Ebene existiert, wird das Makro aus der Vorlage mit der niedrigsten ID verwendet. Daher stellt die Verwendung von Makros mit demselben Namen in mehreren Vorlagen ein Konfigurationsrisiko dar.
Wenn Zabbix ein Makro nicht finden kann, wird das Makro nicht aufgelöst.
Makros (einschließlich Benutzermakros) werden im Bereich „Konfiguration“ (zum Beispiel in der Auslöserliste) absichtlich nicht aufgelöst, um komplexe Konfigurationen transparenter zu machen.
Benutzermakros können verwendet werden in:
- Datenpunktname
- Datenpunktschlüsselparameter
- Aktualisierungsintervallen und flexiblen Intervallen von Datenpunkten
- Name und Beschreibung des Auslösers
- Parametern und Konstanten des Auslöserausdrucks (siehe Beispiele)
- vielen anderen Bereichen – siehe die vollständige Liste
Häufige Anwendungsfälle von globalen Makros und Host-Makros
- Verwenden Sie ein globales Makro an mehreren Stellen; ändern Sie dann den Makrowert und wenden Sie Konfigurationsänderungen mit einem Klick auf alle Stellen an.
- Nutzen Sie Vorlagen mit Host-spezifischen Attributen: Passwörter, Portnummern, Dateinamen, reguläre Ausdrücke usw.
Es wird empfohlen, Host-Makros anstelle von globalen Makros zu verwenden, da das Hinzufügen, Aktualisieren oder Löschen globaler Makros eine inkrementelle Konfigurationsaktualisierung für alle Hosts erzwingt. Weitere Informationen finden Sie unter Passive and active agent checks.
Konfiguration
Um Benutzer-Makros zu definieren, gehen Sie im Frontend zum entsprechenden Bereich:
- Für globale Makros öffnen Sie Administration > Makros.
- Für Makros auf Host- und Vorlagenebene öffnen Sie die Eigenschaften des Hosts oder der Vorlage und suchen Sie nach der Registerkarte Makros.
Ein Benutzer-Makro hat die folgenden Attribute:

| Parameter | Beschreibung |
|---|---|
| Macro | Name des Makros. Der Name muss in geschweifte Klammern gesetzt werden und mit einem Dollarzeichen beginnen. Beispiel: {$FRONTEND_URL}. In Makronamen sind die folgenden Zeichen zulässig: A-Z (nur Großbuchstaben), 0-9, _, . |
| Value | Makrowert. Es werden drei Werttypen unterstützt: Text (Standard) - Klartextwert Secret text - der Wert wird mit Sternchen maskiert Vault secret - der Wert enthält einen Pfad/eine Abfrage zu einem vault secret. Um den Werttyp zu ändern, klicken Sie auf die Schaltfläche am Ende des Eingabefelds für den Wert. Die maximale Länge eines Benutzer-Makrowerts beträgt 2048 Zeichen. |
| Description | Textfeld, das verwendet wird, um weitere Informationen zu diesem Makro bereitzustellen. |
Beachten Sie bei der Konfiguration von Benutzer-Makros die folgenden kontextabhängigen Verhaltensweisen:
- wenn Benutzer-Makros in Vorlagen-Datenpunkten oder Auslösern verwendet werden, sollten Sie diese Makros ebenfalls zur Vorlage hinzufügen (auch wenn sie global definiert sind); auf diese Weise funktionieren Makros vom Typ Text nach dem Export der Vorlage nach XML und dem Import in ein anderes System wie erwartet (Werte von Secret-Makros werden nicht exportiert)
- wenn Benutzer-Makros in Auslöser-Ausdrücken verwendet werden, werden diese Makros nur aufgelöst, wenn sie auf einen Parameter oder eine Konstante verweisen; sie werden NICHT aufgelöst, wenn sie auf einen Host, einen Datenpunkt-Schlüssel, eine Funktion, einen Operator oder einen anderen Auslöser-Ausdruck verweisen (Secret-Makros können nicht in Auslöser-Ausdrücken verwendet werden)
- wenn Benutzer-Makros auf einem Host verwendet werden, der über eine Low-Level-Discovery-Regel mit Host-Prototypen verfügt, übernehmen entdeckte Hosts alle auf diesem Host definierten Benutzer-Makros
Beispiele
Beispiel 1
Verwendung eines Makros auf Host-Ebene im Schlüssel des Datenpunkts „Status des SSH-Daemons“:
net.tcp.service[ssh,,{$SSH_PORT}]
Dieser Datenpunkt kann mehreren Hosts zugewiesen werden, sofern der Wert von {$SSH_PORT} auf diesen Hosts definiert ist.
Beispiel 2
Verwendung eines Host-Makros im Auslöser „CPU load is too high“:
last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}
Ein solcher Auslöser würde in der Vorlage erstellt und nicht in einzelnen Hosts bearbeitet werden.
Wenn Sie die Anzahl der Werte als Funktionsparameter verwenden möchten (zum Beispiel max(/host/key,#3)), fügen Sie das Rautezeichen in die Makrodefinition ein, etwa so: SOME_PERIOD => #3.
Beispiel 3
Verwendung von zwei Makros im Auslöser „CPU-Auslastung ist zu hoch“:
min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}
Beachten Sie, dass ein Makro als Parameter einer Auslöserfunktion verwendet werden kann, in diesem Beispiel der Funktion min().
Beispiel 4
Synchronisieren Sie die Bedingung für die Nichtverfügbarkeit des Agent mit dem Aktualisierungsintervall des Datenpunkts:
- Definieren Sie das Makro
{$INTERVAL}und verwenden Sie es im Aktualisierungsintervall des Datenpunkts. - Verwenden Sie
{$INTERVAL}als Parameter des Auslösers für die Nichtverfügbarkeit des Agent:
nodata(/ca_001/agent.ping,{$INTERVAL})=1
Beispiel 5
Zentralisieren Sie die Konfiguration der Arbeitszeiten:
- Erstellen Sie ein globales Makro
{$WORKING_HOURS}mit dem Wert1-5,09:00-18:00. - Verwenden Sie es im Feld Arbeitszeit unter Administration > Allgemein > GUI.
- Verwenden Sie es im Feld Aktiv wenn unter Benutzer > Benutzer, Registerkarte Medien eines Benutzers.
- Verwenden Sie es, um während der Arbeitszeit eine häufigere Abfrage von Datenpunkten einzurichten:

- Verwenden Sie es in der Aktionsbedingung Zeitraum.
- Passen Sie die Arbeitszeit bei Bedarf unter Administration > Makros an.
Beispiel 6
Verwenden Sie ein Host-Prototyp-Makro, um Datenpunkte für erkannte Hosts zu konfigurieren:
- Definieren Sie in einem Host-Prototyp das Benutzermakro
{$SNMPVALUE}mit dem Makro{#SNMPVALUE}für die Low-Level-Discovery als Wert:

- Weisen Sie dem Host-Prototyp die Vorlage Generic SNMPv2 zu.
- Verwenden Sie
{$SNMPVALUE}im Feld SNMP OID der Datenpunkte der Vorlage Generic SNMPv2.
Kontext von Benutzermakros
Siehe Benutzermakros mit Kontext.