6 Typy mediów

Przegląd

Typy mediów są eksportowane ze wszystkimi powiązanymi obiektami i relacjami obiektów.

Eksportowanie

Aby wyeksportować typy mediów, wykonaj następujące czynności:

  1. Przejdź do AlertyTypy mediów.
  2. Zaznacz pola wyboru typów mediów, które chcesz wyeksportować.
  3. Kliknij Eksportuj poniżej listy.

W zależności od wybranego formatu typy mediów są eksportowane do pliku lokalnego, który posiada domyślną nazwię:

  • zabbix_export_mediatypes.yaml - przy eksporcie do YAML (domyślna opcja eksportu);
  • zabbix_export_mediatypes.xml - przy eksporcie do XML;
  • zabbix_export_mediatypes.json - przy eksporcie do JSON.

Importowanie

Aby zaimportować typy mediów, wykonaj następujące kroki:

  1. Przejdź do AlertsMedia types.
  2. Kliknij Import w prawym górnym rogu.
  3. Wybierz plik importu.
  4. Zaznacz wymagane opcje w regułach importu.
  5. Kliknij Import w prawym dolnym rogu formularza konfiguracji.

Reguły importu:

Rule Description
Update existing Istniejące elementy zostaną zaktualizowane przy użyciu danych z pliku importu. W przeciwnym razie nie zostaną zaktualizowane.
Create new Nowe elementy zostaną utworzone przy użyciu danych z pliku importu. W przeciwnym razie nie zostaną utworzone.

W frontend zostanie wyświetlony komunikat o powodzeniu lub niepowodzeniu importu.

Format eksportu

Eksport do 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 '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: |
        Zapoznaj się z przewodnikiem konfiguracji tutaj: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pushover

        Ustaw parametr token na klucz aplikacji Pushover.
        Podczas przypisywania nośnika Pushover do użytkownika Zabbix - dodaj klucz użytkownika w polu wyślij do.
      message_templates:
        - event_source: TRIGGERS
          operation_mode: PROBLEM
          subject: 'Problem: {EVENT.NAME}'
          message: |
            Problem rozpoczął się o {EVENT.TIME} dnia {EVENT.DATE}
            Nazwa problemu: {EVENT.NAME}
            Host: {HOST.NAME}
            Ważność: {EVENT.SEVERITY}
            Dane operacyjne: {EVENT.OPDATA}
            ID oryginalnego problemu: {EVENT.ID}
            {TRIGGER.URL}
        - event_source: TRIGGERS
          operation_mode: RECOVERY
          subject: 'Rozwiązano w {EVENT.DURATION}: {EVENT.NAME}'
          message: |
            Problem został rozwiązany o {EVENT.RECOVERY.TIME} dnia {EVENT.RECOVERY.DATE}
            Nazwa problemu: {EVENT.NAME}
            Czas trwania problemu: {EVENT.DURATION}
            Host: {HOST.NAME}
            Ważność: {EVENT.SEVERITY}
            ID oryginalnego problemu: {EVENT.ID}
            {TRIGGER.URL}
        - event_source: TRIGGERS
          operation_mode: UPDATE
          subject: 'Zaktualizowano problem po {EVENT.AGE}: {EVENT.NAME}'
          message: |
            {USER.FULLNAME} {EVENT.UPDATE.ACTION} problem dnia {EVENT.UPDATE.DATE} o {EVENT.UPDATE.TIME}.
            {EVENT.UPDATE.MESSAGE}

            Bieżący stan problemu to {EVENT.STATUS}, wiek to {EVENT.AGE}, potwierdzono: {EVENT.ACK.STATUS}.
        - event_source: DISCOVERY
          operation_mode: PROBLEM
          subject: 'Wykrywanie: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}'
          message: |
            Reguła wykrywania: {DISCOVERY.RULE.NAME}

            IP urządzenia: {DISCOVERY.DEVICE.IPADDRESS}
            DNS urządzenia: {DISCOVERY.DEVICE.DNS}
            Stan urządzenia: {DISCOVERY.DEVICE.STATUS}
            Czas działania urządzenia: {DISCOVERY.DEVICE.UPTIME}

            Nazwa usługi urządzenia: {DISCOVERY.SERVICE.NAME}
            Port usługi urządzenia: {DISCOVERY.SERVICE.PORT}
            Stan usługi urządzenia: {DISCOVERY.SERVICE.STATUS}
            Czas działania usługi urządzenia: {DISCOVERY.SERVICE.UPTIME}
        - event_source: AUTOREGISTRATION
          operation_mode: PROBLEM
          subject: 'Autorejestracja: {HOST.HOST}'
          message: |
            Nazwa hosta: {HOST.HOST}
            IP hosta: {HOST.IP}
            Port agenta: {HOST.PORT}

Elementy eksportowane

Eksportowane elementy są wyjaśnione w poniższej tabeli.

Element Typ Opis
name string (wymagane) Nazwa typu mediów.
type string (wymagane) Typ komunikacji używany przez typ mediów.
Możliwe wartości:1 EMAIL (0), SMS (1), SCRIPT (2), WEBHOOK (4).
status string Czy typ mediów jest włączony.
Możliwe wartości:1 ENABLED (0, domyślne), DISABLED (1)
max_sessions integer Maksymalna liczba alertów, które można przetwarzać równolegle.
Możliwe wartości dla wiadomości SMS:1 1 (domyślnie).
Możliwe wartości dla innych typów mediów:1 0-100 (gdzie 0 — bez ograniczeń).
attempts integer Maksymalna liczba prób wysłania alertu.
Możliwe wartości:1 1-10 (domyślnie: 3).
attempt_interval string Interwał (z użyciem sekund lub przyrostka czasu) między kolejnymi próbami.
Możliwe wartości:1 0-60 s (domyślnie: 10 s).
description string Opis typu mediów.
message_templates Element główny szablonu wiadomości dla typu mediów.
event_source string (wymagane) Źródło zdarzenia.
Możliwe wartości:1 TRIGGERS (0), DISCOVERY (1), AUTOREGISTRATION (2), INTERNAL (3), SERVICE (4).
operation_mode string Tryb działania.
Możliwe wartości:1 PROBLEM (0), RECOVERY (1), UPDATE (2).
subject string Temat wiadomości.
message string Treść wiadomości.

Zobacz także: Obiekt typu mediów (odnieś się do odpowiedniej właściwości o pasującej nazwie).

E-mail

Następujące dodatkowe elementy są eksportowane tylko dla typu nośnika E-mail.

Element Type Opis
provider string Dostawca poczty e-mail.
smtp_server string Serwer SMTP.
smtp_port integer Port serwera SMTP, z którym ma zostać nawiązane połączenie.
Domyślnie: 25.
smtp_helo string HELO SMTP.
smtp_email string Adres e-mail, z którego będą wysyłane powiadomienia.
smtp_security string Poziom zabezpieczeń połączenia SMTP do użycia.
Możliwe wartości:1 NONE (0, domyślnie), STARTTLS (1), SSL_OR_TLS (2).
smtp_verify_host string Weryfikacja hosta SSL dla SMTP.
Możliwe wartości:1 NO (0, domyślnie), YES (1).
smtp_verify_peer string Weryfikacja peera SSL dla SMTP.
Możliwe wartości:1 NO (0, domyślnie), YES (1).
smtp_authentication string Metoda uwierzytelniania SMTP do użycia.
Możliwe wartości:1 NONE (0, domyślnie), PASSWORD (1), OAUTH (2).
username string Nazwa użytkownika.
password string Hasło uwierzytelniające.
redirection_url string Adres URL frontendu Zabbix, do którego nastąpi przekierowanie po autoryzacji OAuth.
client_id string Identyfikator klienta zarejestrowany na serwerze autoryzacji OAuth.
authorization_url string Adres URL OAuth wraz z parametrami służący do uzyskania tokenów dostępu i odświeżania.
token_url string Adres URL OAuth służący do wymiany tokenu autoryzacyjnego na tokeny dostępu i odświeżania.
message_format string Format wiadomości.
Możliwe wartości:1 TEXT (0), HTML (1, domyślnie).

Zobacz także: Media type object (odpowiednia właściwość o pasującej nazwie).

SMS

Następujące dodatkowe elementy są eksportowane tylko dla typu mediów SMS.

Element Typ Opis
gsm_modem string (wymagane) Nazwa urządzenia szeregowego modemu GSM.

Zobacz także: Obiekt typu mediów (sprawdź odpowiednią właściwość z pasującą nazwą).

Skrypt

Następujące dodatkowe elementy są eksportowane tylko dla typu nośnika Skrypt.

Element Typ Opis
nazwa skryptu string (wymagane) Nazwa skryptu.
parametry Element główny dla parametrów skryptu.
sortorder string (wymagane) Kolejność parametrów skryptu przekazywanych do skryptu jako argumenty wiersza poleceń.
wartość string Wartość parametru skryptu.

Zobacz także: Obiekt typu nośnika (sprawdź odpowiednią właściwość o pasującej nazwie).

Webhook

Następujące dodatkowe elementy są eksportowane tylko dla typu mediów Webhook.

Element Typ Opis
script string Skrypt.
timeout string Limitu czasu żądania HTTP dla skryptu JavaScript.
Możliwe wartości:1 1-60s (domyślnie: 30s).
process_tags string Czy przetwarzać zwrócone tagi.
Możliwe wartości:1 NIE (0, domyślnie), TAK (1).
show_event_menu string Wskaż obecność wpisu w menu zdarzeń,, jeśli makro {EVENT.TAGS.*} zostało pomyślnie przetworzone w polach event_menu_url i event_menu_name.
Możliwe wartości:1 NIE (0, domyślnie), TAK (1).
event_menu_url string Adres URL wpisu menu zdarzeń. Obsługuje makro {EVENT.TAGS.*}.
event_menu_name string Nazwa wpisu menu zdarzeń. Obsługuje makro {EVENT.TAGS.*}.
parameters Element główny dla parametrów typu mediów webhook.
name string (wymagane) Nazwa parametru webhook.
value string Wartość parametru webhook.

Zobacz także: Obiekt typu media (odnieś się do odpowiedniej właściwości o pasującej nazwie).

Przypisy

1 Wartości liczb całkowitych API w nawiasach, na przykład ENABLED (0), są wymienione tylko w celach informacyjnych. Aby uzyskać więcej informacji, zobacz powiązaną stronę obiektu API w tabeli lub na końcu każdej sekcji.