[comment]: # translation:outdated

[comment]: # ({d30dc182-d30dc182})
# 2 Benutzermakros

[comment]: # ({/d30dc182-d30dc182})

[comment]: # ({c282a934-3e220640})
#### Übersicht

Benutzermakros werden in Zabbix zusätzlich zu den standardmäßig [unterstützten](/manual/appendix/macros/supported_by_location) Makros unterstützt, um mehr Flexibilität zu bieten.

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:

1.  Makros auf Host-Ebene (werden zuerst geprüft)
2.  Makros, die für Vorlagen der ersten Ebene des Hosts definiert sind (d. h. Vorlagen, die direkt mit dem Host verknüpft sind), sortiert nach Vorlagen-ID
3.  Makros, die für Vorlagen der zweiten Ebene des Hosts definiert sind, sortiert nach Vorlagen-ID
4.  Makros, die für Vorlagen der dritten Ebene des Hosts definiert sind, sortiert nach Vorlagen-ID usw.
5.  globale Makros (werden zuletzt geprüft)

Mit anderen Worten: Wenn ein Makro für einen Host nicht existiert, versucht Zabbix, es in den Host-Vorlagen mit zunehmender Tiefe zu finden. Wird es weiterhin nicht gefunden, wird ein globales Makro verwendet, falls vorhanden.

::: notewarning
Wenn ein Makro mit **demselben Namen** in mehreren verknüpften Vorlagen derselben Ebene vorhanden ist, wird das Makro aus der Vorlage mit der niedrigsten ID verwendet. Daher stellen Makros mit demselben Namen in mehreren Vorlagen ein Konfigurationsrisiko dar.
:::

Wenn Zabbix ein Makro nicht finden kann, wird das Makro nicht aufgelöst.

::: noteimportant
Makros (einschließlich Benutzermakros) werden im Abschnitt „Konfiguration“ (zum Beispiel in der Auslöserliste) absichtlich nicht aufgelöst, um komplexe Konfigurationen transparenter zu machen.
:::

Benutzermakros können verwendet werden in:

-   Datenpunkt-Name
-   Datenpunkt-Schlüsselparameter
-   Datenpunkt-Aktualisierungsintervallen und flexiblen Intervallen
-   Auslösername und -beschreibung
-   Auslöserausdrucksparametern und Konstanten (siehe [Beispiele](#examples))
-   vielen anderen Stellen – siehe die [vollständige Liste](/manual/appendix/macros/supported_by_location_user)

[comment]: # ({/c282a934-3e220640})

[comment]: # ({e3755145-e3755145})
##### 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.

[comment]: # ({/e3755145-e3755145})

[comment]: # ({6b1da1a4-60e46db2})
::: notetip
Es wird empfohlen, Host-Makros anstelle von globalen Makros zu verwenden, da das Hinzufügen, Aktualisieren oder Löschen globaler Makros ein inkrementelles Konfigurations-Update für alle Hosts erzwingt. Weitere Informationen finden Sie unter [Passive und aktive Agent-Prüfungen](/manual/appendix/items/activepassive#active-checks).
:::

[comment]: # ({/6b1da1a4-60e46db2})

[comment]: # ({808a388a-561314a3})
#### Konfiguration

Um Benutzermakros zu definieren, gehen Sie im entsprechenden Bereich des Frontends wie folgt vor:

-   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 wechseln Sie zur Registerkarte *Makros*

Ein Benutzermakro hat die folgenden Attribute:

![](../../../../assets/en/manual/config/macros/user_macros.png){width="600"}

|Parameter|Beschreibung|
|--|--------|
|*Macro*|Makroname. Der Name muss in geschweifte Klammern gesetzt werden und mit einem Dollarzeichen beginnen.<br>Beispiel: {$FRONTEND\_URL}. Die folgenden Zeichen sind in Makronamen zulässig: **A-Z** (nur Großbuchstaben), **0-9**, **\_**, **.**|
|*Value*|Makrowert. Es werden drei Werttypen unterstützt:<br>**Text** (Standard) - Klartextwert<br>**[Secret text](/manual/config/macros/secret_macros#secret-text)** - der Wert wird mit Sternchen maskiert<br> **[Vault secret](/manual/config/macros/secret_macros#vault-secret)** - der Wert enthält einen Pfad/eine Abfrage zu einem [vault secret](/manual/config/secrets). <br><br>Um den Werttyp zu ändern, klicken Sie auf die Schaltfläche am Ende des Werteingabefelds.<br><br>Die maximale Länge eines Benutzermakrowerts beträgt 2048 Zeichen.|
|*Description*|Textfeld, das verwendet wird, um weitere Informationen zu diesem Makro bereitzustellen.|

Beachten Sie beim Konfigurieren von Benutzermakros die folgenden kontextspezifischen Verhaltensweisen:

-   wenn Benutzermakros in Vorlagen-Datenpunkten oder Auslösern verwendet werden, sollten Sie diese Makros auch zur Vorlage hinzufügen (selbst 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 geheimer Makros werden nicht [exportiert](/manual/xml_export_import))
-   wenn Benutzermakros in Auslöserausdrü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 Datenpunktschlüssel, eine Funktion, einen Operator oder einen anderen Auslöserausdruck verweisen (geheime Makros können nicht in Auslöserausdrücken verwendet werden)
-   wenn Benutzermakros auf einem Host verwendet werden, der eine Low-Level-Discovery-Regel mit Host-Prototypen hat, übernehmen [entdeckte Hosts](/manual/discovery/low_level_discovery/host_prototypes#discovered-hosts) alle auf diesem Host definierten Benutzermakros

[comment]: # ({/808a388a-561314a3})

[comment]: # ({4c860844-4c860844})
#### Beispiele

[comment]: # ({/4c860844-4c860844})

[comment]: # ({b9cf8f56-b9cf8f56})
##### Beispiel 1

Verwendung eines Makros auf Host-Ebene im Datenpunkt-Schlüssel „Status of SSH daemon“:

`net.tcp.service[ssh,,{$SSH_PORT}]`

Dieser Datenpunkt kann mehreren Hosts zugewiesen werden, vorausgesetzt, dass der Wert von
**{$SSH\_PORT}** auf diesen Hosts definiert ist.

[comment]: # ({/b9cf8f56-b9cf8f56})

[comment]: # ({0fa7cf4a-0fa7cf4a})
##### Beispiel 2

Verwendung eines Makros auf Host-Ebene 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.

::: notetip
Wenn Sie die Anzahl der Werte als Funktionsparameter verwenden möchten
(zum Beispiel **max(/host/key,\#3)**), schließen Sie die Raute in die
Makrodefinition wie folgt ein: SOME\_PERIOD => \#3
:::

[comment]: # ({/0fa7cf4a-0fa7cf4a})

[comment]: # ({36dc94ca-36dc94ca})
##### Beispiel 3

Verwendung von zwei Makros im Auslöser „CPU load is too high“:

`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 die Funktion **min()**.

[comment]: # ({/36dc94ca-36dc94ca})

[comment]: # ({0dabfae5-0dabfae5})
##### 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`

[comment]: # ({/0dabfae5-0dabfae5})

[comment]: # ({2d346656-0f8052f1})
##### Beispiel 5

Zentralisieren Sie die Konfiguration der Arbeitszeiten:

-   Erstellen Sie ein globales Makro {$WORKING\_HOURS} mit dem Wert `1-5,09:00-18:00`.
-   Verwenden Sie es im Feld *Arbeitszeit* unter *Administration* → *General* →
    *GUI*.
-   Verwenden Sie es im Feld *Aktiv wenn* unter *Users* → *Users*, Registerkarte *Media* eines Benutzers.
-   Verwenden Sie es, um während der Arbeitszeiten ein häufigeres Abfragen von Datenpunkten einzurichten:

![](../../../../assets/en/manual/config/macros/usermacro_example5.png)

-   Verwenden Sie es in der Aktionsbedingung *Zeitraum*.
-   Passen Sie die Arbeitszeit bei Bedarf unter *Administration* → *Macros* an.

[comment]: # ({/2d346656-0f8052f1})

[comment]: # ({3c2ac944-3c2ac944})
##### 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} der [Low-Level-Discovery](/manual/config/macros/lld_macros) als Wert:

![](../../../../assets/en/manual/config/macros/usermacro_example6.png)

-   Weisen Sie dem Host-Prototyp die Vorlage *Generic SNMPv2* zu;
-   verwenden Sie {$SNMPVALUE} im Feld *SNMP OID* der Datenpunkte der Vorlage *Generic SNMPv2*.

[comment]: # ({/3c2ac944-3c2ac944})

[comment]: # ({44ca625a-44ca625a})
#### Kontext von Benutzermakros

Siehe [Benutzermakros mit
Kontext](/manual/config/macros/user_macros_context).

[comment]: # ({/44ca625a-44ca625a})
