Medientypen

Übersicht

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

Exportieren

Gehen Sie zum Exportieren von Medientypen wie folgt vor:

  1. Gehen Sie zu Alerts > Media types.
  2. Markieren Sie die Kontrollkästchen der zu exportierenden Medientypen.
  3. Klicken Sie unterhalb der Liste auf Export, um im standardmäßigen YAML-Format zu exportieren, oder klicken Sie auf den Pfeil, um ein anderes Exportformat auszuwählen.

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

  • zabbix_export_mediatypes.yaml - beim YAML-Export;
  • zabbix_export_mediatypes.xml - beim XML-Export;
  • zabbix_export_mediatypes.json - beim JSON-Export.

Importieren

Gehen Sie zum Importieren von Medientypen wie folgt vor:

  1. Gehen Sie zu Alerts > Media types.
  2. Klicken Sie oben rechts auf Import.
  3. Wählen Sie die Importdatei aus.
  4. Aktivieren Sie die Kontrollkästchen der Importregeln, die Sie anwenden möchten (siehe unten).
  5. Klicken Sie unten rechts im Konfigurationsformular auf Import.

Importregeln:

Regel Beschreibung
Update existing Aktivieren Sie dieses Kontrollkästchen, um vorhandene Medientypen anhand der Daten aus der Importdatei zu aktualisieren.
Create new Aktivieren Sie dieses Kontrollkästchen, um neue Medientypen anhand der Daten aus der Importdatei zu erstellen. Wenn die Importdatei einen bereits vorhandenen Medientyp enthält (z. B. Email), wird kein neuer erstellt und der vorhandene Medientyp wird ebenfalls nicht aktualisiert.

Während des Imports können Sie Änderungen an Medientypen nicht überprüfen. Eine Erfolgs- oder Fehlermeldung des Imports wird im Frontend angezeigt.

Exportformat

Export nach YAML:

zabbix_export:
  version: '8.2'
  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 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.';
            }

            if (params.event_value !== '0' && params.event_value !== '1'
                && (params.event_source === '0' || params.event_source === '3')) {
                throw 'Incorrect "event_value" parameter given: ' + params.event_value + '\nMust be 0 or 1.';
            }

            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" should be -2..2';
            }

            if (params.event_source === '0' && isNaN(params.triggerid)) {
                throw 'field "triggerid" is not a number';
            }

            if (isNaN(params.eventid)) {
                throw 'field "eventid" is not a number';
            }

            if (typeof params.message !== 'string' || params.message.trim() === '') {
                throw 'field "message" cannot be empty';
            }

            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 'field "retry" should be a number with value of at least 30 if "priority" is set to 2';
                }

                if (isNaN(params.expire) || params.expire > 10800) {
                    throw 'field "expire" should be a number with value of at most 10800 if "priority" is set to 2';
                }

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

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

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

            Zabbix.log(4, '[ Pushover Webhook ] Received response with status code ' + request.getStatus() + '\n' + response);

            if (response !== null) {
                try {
                    response = JSON.parse(response);
                }
                catch (error) {
                    Zabbix.log(4, '[ Pushover Webhook ] Failed to parse response received from Pushover');
                    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 'Unknown error. Check debug log for more information.';
                }
            }

            return 'OK';
        }
        catch (error) {
            Zabbix.log(4, '[ Pushover Webhook ] Pushover notification failed: ' + error);
            throw 'Pushover notification failed: ' + error;
        }
      description: |
        Eine Anleitung zur Einrichtung finden Sie hier: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pushover

        Setzen Sie den Parameter token auf den Anwendungsschlüssel Ihrer Pushover-Anwendung.
        Wenn Sie dem Zabbix-Benutzer ein Pushover-Medium 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 gestartet 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: 'Behoben in {EVENT.DURATION}: {EVENT.NAME}'
          message: |
            Problem behoben um {EVENT.RECOVERY.TIME} am {EVENT.RECOVERY.DATE}
            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 seit {EVENT.AGE}: {EVENT.NAME}'
          message: |
            {USER.FULLNAME} {EVENT.UPDATE.ACTION} Problem am {EVENT.UPDATE.DATE} um {EVENT.UPDATE.TIME}.
            {EVENT.UPDATE.MESSAGE}

            Der aktuelle Problemstatus ist {EVENT.STATUS}, das Problem besteht seit {EVENT.AGE}, bestätigt: {EVENT.ACK.STATUS}.
        - event_source: DISCOVERY
          operation_mode: PROBLEM
          subject: 'Erkennung: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}'
          message: |
            Erkennungsregel: {DISCOVERY.RULE.NAME}

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

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

Exportierte Elemente

Die exportierten Elemente werden in der folgenden Tabelle erläutert.

Element Type Beschreibung
name string (erforderlich) Name des Medientyps.
type string (erforderlich) Vom Medientyp verwendeter Transport.
Mögliche Werte:1 EMAIL (0), SMS (1), SCRIPT (2), WEBHOOK (4).
status string 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 (in Sekunden oder mit Zeit-Suffix) 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: Medientyp-Objekt (verweisen Sie auf die entsprechende Eigenschaft mit dem passenden Namen).

Email

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

Element Type Description
provider string Email-Anbieter.
smtp_server string SMTP-Server.
smtp_port integer Port des SMTP-Servers, zu dem eine Verbindung hergestellt werden soll.
Standard: 25.
smtp_helo string SMTP-HELO.
smtp_email string E-Mail-Adresse, von der aus Benachrichtigungen gesendet werden.
smtp_security string Zu verwendende Sicherheitsstufe der 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-Peerprü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 Authentifizierungskennwort.
redirection_url string Zabbix-Frontend-URL, zu der die 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 Aktualisierungstokens.
token_url string OAuth-URL zum Austausch des Autorisierungstokens gegen Zugriffs- und Aktualisierungstokens.
message_format string Nachrichtenformat.
Mögliche Werte:1 TEXT (0), HTML (1, Standard).

Siehe auch: Media type object (verweisen Sie auf die entsprechende Eigenschaft mit passendem Namen).

SMS

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

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

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

Script

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

Element Type Description
script name string (erforderlich) Skriptname.
parameters 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: Media type object (verweisen Sie auf die entsprechende Eigenschaft mit demselben Namen).

webhook

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

Element Type Description
script string Script.
timeout string Zeitlimit für das HTTP-Anfrageintervall 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 Eintrags im Ereignismenü. Unterstützt das Makro {EVENT.TAGS.*}.
event_menu_name string Name des Eintrags im Ereignismenü. 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 (verweisen Sie auf die entsprechende Eigenschaft mit demselben Namen).

Fußnoten

1 API-Integerwerte 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.