2 Benutzermakros

Übersicht

Benutzermakros werden in Zabbix zusätzlich zu den standardmäßig unterstützten 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.

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.

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)
  • vielen anderen Stellen – 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 ein inkrementelles Konfigurations-Update für alle Hosts erzwingt. Weitere Informationen finden Sie unter Passive und aktive Agent-Prüfungen.

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 zur Registerkarte Makros

Ein Benutzermakro hat die folgenden Attribute:

Parameter Beschreibung
Makro Makroname. Der Name muss in geschweifte Klammern eingeschlossen sein und mit einem Dollarzeichen beginnen.
Beispiel: {$FRONTEND_URL}. Die folgenden Zeichen sind in Makronamen zulässig: A-Z (nur Großbuchstaben), 0-9, _, .
Wert Makrowert. Es werden drei Werttypen unterstützt:
Text (Standard) - Klartextwert
Geheimer Text - der Wert wird mit Sternchen maskiert
Vault-Geheimnis - der Wert enthält einen Pfad/eine Abfrage zu einem Vault-Geheimnis.

Um den Werttyp zu ändern, klicken Sie auf die Schaltfläche am Ende des Werteingabefelds.

Die maximale Länge eines Benutzermakrowerts beträgt 2048 Zeichen.
Beschreibung Textfeld zur Bereitstellung weiterer Informationen zu diesem Makro.

Beachten Sie bei der Konfiguration 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)
  • 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 alle auf diesem Host definierten Benutzermakros

Beispiele

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.

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.

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

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

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 Wert 1-5,09:00-18:00.
  • Verwenden Sie es im Feld Arbeitszeit unter AdministrationGeneralGUI.
  • Verwenden Sie es im Feld Aktiv wenn unter UsersUsers, Registerkarte Media eines Benutzers.
  • Verwenden Sie es, um während der Arbeitszeiten ein häufigeres Abfragen von Datenpunkten einzurichten:

  • Verwenden Sie es in der Aktionsbedingung Zeitraum.
  • Passen Sie die Arbeitszeit bei Bedarf unter AdministrationMacros 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} der 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.