6 Medientypen

Übersicht

Medientypen werden zusammen mit allen zugehörigen Objekten und Objektbeziehungen exportiert.

Exportieren

Gehen Sie wie folgt vor, um Medientypen zu exportieren:

  1. Gehen Sie zu BenachrichtigungenMedientypen.
  2. Aktivieren Sie die Kontrollkästchen der zu exportierenden Medientypen.
  3. Klicken Sie unterhalb der Liste auf Exportieren.

Je nach ausgewähltem Format werden Medientypen mit einem Standardnamen in eine lokale Datei exportiert:

  • zabbix_export_mediatypes.yaml - beim YAML-Export (Standardoption für den Export);
  • zabbix_export_mediatypes.xml - beim XML-Export;
  • zabbix_export_mediatypes.json - beim JSON-Export.

Importieren

Um Medientypen zu importieren, gehen Sie wie folgt vor:

  1. Gehen Sie zu BenachrichtigungenMedientypen.
  2. Klicken Sie oben rechts auf Importieren.
  3. Wählen Sie die Importdatei aus.
  4. Markieren Sie die erforderlichen Optionen in den Importregeln.
  5. Klicken Sie unten rechts im Konfigurationsformular auf Importieren.

Importregeln:

Regel Beschreibung
Vorhandene aktualisieren Vorhandene Elemente werden mithilfe der Daten aus der Importdatei aktualisiert. Andernfalls werden sie nicht aktualisiert.
Neue erstellen Neue Elemente werden mithilfe der Daten aus der Importdatei erstellt. Andernfalls werden sie nicht erstellt.

Im Frontend wird eine Erfolgs- oder Fehlermeldung zum Import angezeigt.

Exportformat

Export nach YAML:

zabbix_export:
  version: '8.0'
  media_types:
    - name: Pushover
      type: WEBHOOK
      parameters:
        - name: endpoint
          value: 'https://api.pushover.net/1/messages.json'
        - name: eventid
          value: '{EVENT.ID}'
        - name: event_nseverity
          value: '{EVENT.NSEVERITY}'
        - name: event_source
          value: '{EVENT.SOURCE}'
        - name: event_value
          value: '{EVENT.VALUE}'
        - name: expire
          value: '1200'
        - name: message
          value: '{ALERT.MESSAGE}'
        - name: priority_average
          value: '0'
        - name: priority_default
          value: '0'
        - name: priority_disaster
          value: '0'
        - name: priority_high
          value: '0'
        - name: priority_information
          value: '0'
        - name: priority_not_classified
          value: '0'
        - name: priority_warning
          value: '0'
        - name: retry
          value: '60'
        - name: title
          value: '{ALERT.SUBJECT}'
        - name: token
          value: '<PUSHOVER TOKEN HERE>'
        - name: triggerid
          value: '{TRIGGER.ID}'
        - name: url
          value: '{$ZABBIX.URL}'
        - name: url_title
          value: Zabbix
        - name: user
          value: '{ALERT.SENDTO}'
      status: DISABLED
      max_sessions: '0'
      script: |
        try {
            var params = JSON.parse(value),
                request = new HttpRequest(),
                data,
                response,
                severities = [
                    {name: 'not_classified', color: '#97AAB3'},
                    {name: 'information', color: '#7499FF'},
                    {name: 'warning', color: '#FFC859'},
                    {name: 'average', color: '#FFA059'},
                    {name: 'high', color: '#E97659'},
                    {name: 'disaster', color: '#E45959'},
                    {name: 'resolved', color: '#009900'},
                    {name: 'default', color: '#000000'}
                ],
                priority;

            if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') {
                request.setProxy(params.HTTPProxy);
            }

            if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {
                throw 'Falscher Parameter "event_source" angegeben: "' + params.event_source + '".\nMuss 0-3 sein.';
            }

            if (params.event_value !== '0' && params.event_value !== '1'
                && (params.event_source === '0' || params.event_source === '3')) {
                throw 'Falscher Parameter "event_value" angegeben: ' + params.event_value + '\nMuss 0 oder 1 sein.';
            }

            if ([0, 1, 2, 3, 4, 5].indexOf(parseInt(params.event_nseverity)) === -1) {
                params.event_nseverity = '7';
            }

            if (params.event_value === '0') {
                params.event_nseverity = '6';
            }

            priority = params['priority_' + severities[params.event_nseverity].name] || params.priority_default;

            if (isNaN(priority) || priority < -2 || priority > 2) {
                throw '"priority" sollte -2..2 sein';
            }

            if (params.event_source === '0' && isNaN(params.triggerid)) {
                throw 'Feld "triggerid" ist keine Zahl';
            }

            if (isNaN(params.eventid)) {
                throw 'Feld "eventid" ist keine Zahl';
            }

            if (typeof params.message !== 'string' || params.message.trim() === '') {
                throw 'Feld "message" darf nicht leer sein';
            }

            data = {
                token: params.token,
                user: params.user,
                title: params.title,
                message: params.message,
                url: (params.event_source === '0') 
                    ? params.url + '/tr_events.php?triggerid=' + params.triggerid + '&eventid=' + params.eventid
                    : params.url,
                url_title: params.url_title,
                priority: priority
            };

            if (priority == 2) {
                if (isNaN(params.retry) || params.retry < 30) {
                    throw 'Feld "retry" sollte eine Zahl mit einem Wert von mindestens 30 sein, wenn "priority" auf 2 gesetzt ist';
                }

                if (isNaN(params.expire) || params.expire > 10800) {
                    throw 'Feld "expire" sollte eine Zahl mit einem Wert von höchstens 10800 sein, wenn "priority" auf 2 gesetzt ist';
                }

                data.retry = params.retry;
                data.expire = params.expire;
            }

            data = JSON.stringify(data);
            Zabbix.log(4, '[ Pushover Webhook ] Sende Anfrage: ' + params.endpoint + '\n' + data);

            request.addHeader('Content-Type: application/json');
            response = request.post(params.endpoint, data);

            Zabbix.log(4, '[ Pushover Webhook ] Antwort mit Statuscode ' + request.getStatus() + ' erhalten\n' + response);

            if (response !== null) {
                try {
                    response = JSON.parse(response);
                }
                catch (error) {
                    Zabbix.log(4, '[ Pushover Webhook ] Die von Pushover erhaltene Antwort konnte nicht geparst werden');
                    response = null;
                }
            }

            if (request.getStatus() != 200 || response === null || typeof response !== 'object' || response.status !== 1) {
                if (response !== null && typeof response === 'object' && typeof response.errors === 'object'
                        && typeof response.errors[0] === 'string') {
                    throw response.errors[0];
                }
                else {
                    throw 'Unbekannter Fehler. Prüfen Sie das Debug-Log für weitere Informationen.';
                }
            }

            return 'OK';
        }
        catch (error) {
            Zabbix.log(4, '[ Pushover Webhook ] Pushover-Benachrichtigung fehlgeschlagen: ' + error);
            throw 'Pushover-Benachrichtigung fehlgeschlagen: ' + error;
        }
      description: |
        Bitte beachten Sie die Einrichtungsanleitung hier: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pushover

        Setzen Sie den Parameter token auf Ihren Pushover-Anwendungsschlüssel.
        Wenn Sie dem Zabbix-Benutzer Pushover-Medien zuweisen, fügen Sie den Benutzerschlüssel in das Feld "Senden an" ein.
      message_templates:
        - event_source: TRIGGERS
          operation_mode: PROBLEM
          subject: 'Problem: {EVENT.NAME}'
          message: |
            Problem begann um {EVENT.TIME} am {EVENT.DATE}
            Problemname: {EVENT.NAME}
            Host: {HOST.NAME}
            Schweregrad: {EVENT.SEVERITY}
            Betriebsdaten: {EVENT.OPDATA}
            Ursprüngliche Problem-ID: {EVENT.ID}
            {TRIGGER.URL}
        - event_source: TRIGGERS
          operation_mode: RECOVERY
          subject: 'Gelöst in {EVENT.DURATION}: {EVENT.NAME}'
          message: |
            Das Problem wurde um {EVENT.RECOVERY.TIME} am {EVENT.RECOVERY.DATE} behoben
            Problemname: {EVENT.NAME}
            Problemdauer: {EVENT.DURATION}
            Host: {HOST.NAME}
            Schweregrad: {EVENT.SEVERITY}
            Ursprüngliche Problem-ID: {EVENT.ID}
            {TRIGGER.URL}
        - event_source: TRIGGERS
          operation_mode: UPDATE
          subject: 'Aktualisiertes Problem in {EVENT.AGE}: {EVENT.NAME}'
          message: |
            {USER.FULLNAME} hat das Problem am {EVENT.UPDATE.DATE} um {EVENT.UPDATE.TIME} {EVENT.UPDATE.ACTION}.
            {EVENT.UPDATE.MESSAGE}

            Der aktuelle Problemstatus ist {EVENT.STATUS}, das Alter ist {EVENT.AGE}, bestätigt: {EVENT.ACK.STATUS}.
        - event_source: DISCOVERY
          operation_mode: PROBLEM
          subject: 'Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}'
          message: |
            Discovery-Regel: {DISCOVERY.RULE.NAME}

            Geräte-IP: {DISCOVERY.DEVICE.IPADDRESS}
            Geräte-DNS: {DISCOVERY.DEVICE.DNS}
            Gerätestatus: {DISCOVERY.DEVICE.STATUS}
            Geräte-Uptime: {DISCOVERY.DEVICE.UPTIME}

            Name des Geräteservices: {DISCOVERY.SERVICE.NAME}
            Port des Geräteservices: {DISCOVERY.SERVICE.PORT}
            Status des Geräteservices: {DISCOVERY.SERVICE.STATUS}
            Uptime des Geräteservices: {DISCOVERY.SERVICE.UPTIME}
        - event_source: AUTOREGISTRATION
          operation_mode: PROBLEM
          subject: 'Autoregistrierung: {HOST.HOST}'
          message: |
            Host-Name: {HOST.HOST}
            Host-IP: {HOST.IP}
            Agent-Port: {HOST.PORT}

Exportierte Elemente

Exportierte Elemente werden in der folgenden Tabelle erläutert.

Element Type Beschreibung
name string (erforderlich) Name des Medientyps.
type string (erforderlich) Für den Medientyp verwendeter Transport.
Mögliche Werte:1 EMAIL (0), SMS (1), SCRIPT (2), WEBHOOK (4).
status string Gibt an, ob der Medientyp aktiviert ist.
Mögliche Werte:1 ENABLED (0, Standard), DISABLED (1)
max_sessions integer Die maximale Anzahl von Alarmen, die parallel verarbeitet werden können.
Mögliche Werte für SMS:1 1 (Standard).
Mögliche Werte für andere Medientypen:1 0-100 (wobei 0 - unbegrenzt).
attempts integer Die maximale Anzahl von Versuchen, einen Alarm zu senden.
Mögliche Werte:1 1-10 (Standard: 3).
attempt_interval string Das Intervall (unter Verwendung von Sekunden oder Zeitsuffixen) zwischen Wiederholungsversuchen.
Mögliche Werte:1 0-60s (Standard: 10s).
description string Beschreibung des Medientyps.
message_templates Stammelement für Nachrichtenvorlagen des Medientyps.
event_source string (erforderlich) Ereignisquelle.
Mögliche Werte:1 TRIGGERS (0), DISCOVERY (1), AUTOREGISTRATION (2), INTERNAL (3), SERVICE (4).
operation_mode string Betriebsmodus.
Mögliche Werte:1 PROBLEM (0), RECOVERY (1), UPDATE (2).
subject string Betreff der Nachricht.
message string Nachrichtentext.

Siehe auch: Media type object (siehe die entsprechende Eigenschaft mit übereinstimmendem Namen).

E-Mail

Die folgenden zusätzlichen Elemente werden nur für den Medientyp E-Mail exportiert.

Element Type Beschreibung
provider string E-Mail-Anbieter.
smtp_server string SMTP-Server.
smtp_port integer Port des SMTP-Servers, zu dem die Verbindung hergestellt wird.
Standard: 25.
smtp_helo string SMTP helo.
smtp_email string E-Mail-Adresse, von der Benachrichtigungen gesendet werden.
smtp_security string Zu verwendende Sicherheitsstufe für die SMTP-Verbindung.
Mögliche Werte:1 NONE (0, Standard), STARTTLS (1), SSL_OR_TLS (2).
smtp_verify_host string SSL-Hostprüfung für SMTP.
Mögliche Werte:1 NO (0, Standard), YES (1).
smtp_verify_peer string SSL-Peer-Prüfung für SMTP.
Mögliche Werte:1 NO (0, Standard), YES (1).
smtp_authentication string Zu verwendende SMTP-Authentifizierungsmethode.
Mögliche Werte:1 NONE (0, Standard), PASSWORD (1), OAUTH (2).
username string Benutzername.
password string Authentifizierungspasswort.
redirection_url string URL des Zabbix Frontend, zu der nach der OAuth-Autorisierung zurückgeleitet wird.
client_id string Die im OAuth-Autorisierungsserver registrierte Client-ID.
authorization_url string OAuth-URL mit Parametern zum Abrufen von Zugriffs- und Aktualisierungstoken.
token_url string OAuth-URL zum Austausch des Autorisierungstokens gegen Zugriffs- und Aktualisierungstoken.
message_format string Nachrichtenformat.
Mögliche Werte:1 TEXT (0), HTML (1, Standard).

Siehe auch: Media type object (siehe die entsprechende Eigenschaft mit übereinstimmendem Namen).

SMS

Die folgenden zusätzlichen Elemente werden nur für den Medientyp SMS exportiert.

Element Type Beschreibung
gsm_modem string (erforderlich) Name des seriellen Geräts des GSM-Modems.

Siehe auch: Media type object (bezieht sich auf die entsprechende Eigenschaft mit demselben Namen).

Skript

Die folgenden zusätzlichen Elemente werden nur für den Medientyp Skript exportiert.

Element Type Beschreibung
Skriptname string (erforderlich) Name des Skripts.
Parameter Stammelement für Skriptparameter.
sortorder string (erforderlich) Reihenfolge der Skriptparameter, die als Befehlszeilenargumente an das Skript übergeben werden.
value string Wert des Skriptparameters.

Siehe auch: Medientyp-Objekt (siehe die entsprechende Eigenschaft mit demselben Namen).

webhook

Die folgenden zusätzlichen Elemente werden nur für den Medientyp webhook exportiert.

Element Type Beschreibung
script string Skript.
timeout string Timeout-Intervall für HTTP-Anfragen des JavaScript-Skripts.
Mögliche Werte:1 1-60s (Standard: 30s).
process_tags string Gibt an, ob zurückgegebene Tags verarbeitet werden sollen.
Mögliche Werte:1 NO (0, Standard), YES (1).
show_event_menu string Gibt an, ob ein Eintrag im Ereignismenü vorhanden ist, wenn das Makro {EVENT.TAGS.*} in den Feldern event_menu_url und event_menu_name erfolgreich aufgelöst wurde.
Mögliche Werte:1 NO (0, Standard), YES (1).
event_menu_url string URL des Ereignismenüeintrags. Unterstützt das Makro {EVENT.TAGS.*}.
event_menu_name string Name des Ereignismenüeintrags. Unterstützt das Makro {EVENT.TAGS.*}.
parameters Stammelement für Parameter des webhook-Medientyps.
name string (erforderlich) Name des webhook-Parameters.
value string Wert des webhook-Parameters.

Siehe auch: Media type object (siehe die entsprechende Eigenschaft mit übereinstimmendem Namen).

Fußnoten

1 API-Ganzzahlwerte in Klammern, zum Beispiel ENABLED (0), werden nur als Referenz angegeben. Weitere Informationen finden Sie auf der verlinkten API-Objektseite im Tabelleneintrag oder am Ende jedes Abschnitts.