6 Tipi di supporto

Panoramica

I tipi di supporto vengono esportati con tutti gli oggetti correlati e le relative relazioni.

Esportazione

Per esportare i tipi di supporto, procedere come segue:

  1. Vai in AvvisiTipi di media.
  2. Seleziona le caselle di controllo dei tipi di supporto da esportare.
  3. Fai clic su Esporta sotto l'elenco.

A seconda del formato selezionato, i tipi di supporto vengono esportati in un file locale con un nome predefinito:

  • zabbix_export_mediatypes.yaml - nell'esportazione YAML (opzione predefinita per l'esportazione);
  • zabbix_export_mediatypes.xml - nell'esportazione XML;
  • zabbix_export_mediatypes.json - nell'esportazione JSON.

Importazione

Per importare i tipi di supporto, procedere come segue:

  1. Andare su AvvisiTipi di supporto.
  2. Fare clic su Importa nell'angolo superiore destro.
  3. Selezionare il file di importazione.
  4. Selezionare le opzioni richieste nelle regole di importazione.
  5. Fare clic su Importa nell'angolo inferiore destro del modulo di configurazione.

Regole di importazione:

Regola Descrizione
Aggiorna esistenti Gli elementi esistenti verranno aggiornati utilizzando i dati del file di importazione. In caso contrario, non verranno aggiornati.
Crea nuovi I nuovi elementi verranno creati utilizzando i dati del file di importazione. In caso contrario, non verranno creati.

Nel frontend verrà visualizzato un messaggio di esito positivo o negativo dell'importazione.

Formato di esportazione

Esporta in 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 'Parametro "event_source" fornito non corretto: "' + params.event_source + '".\nDeve essere 0-3.';
            }

            if (params.event_value !== '0' && params.event_value !== '1'
                && (params.event_source === '0' || params.event_source === '3')) {
                throw 'Parametro "event_value" fornito non corretto: ' + params.event_value + '\nDeve essere 0 o 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" deve essere compreso tra -2 e 2';
            }

            if (params.event_source === '0' && isNaN(params.triggerid)) {
                throw 'il campo "triggerid" non è un numero';
            }

            if (isNaN(params.eventid)) {
                throw 'il campo "eventid" non è un numero';
            }

            if (typeof params.message !== 'string' || params.message.trim() === '') {
                throw 'il campo "message" non può essere vuoto';
            }

            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 'il campo "retry" deve essere un numero con valore di almeno 30 se "priority" è impostato a 2';
                }

                if (isNaN(params.expire) || params.expire > 10800) {
                    throw 'il campo "expire" deve essere un numero con valore massimo di 10800 se "priority" è impostato a 2';
                }

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

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

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

            Zabbix.log(4, '[ Pushover Webhook ] Risposta ricevuta con codice di stato ' + request.getStatus() + '\n' + response);

            if (response !== null) {
                try {
                    response = JSON.parse(response);
                }
                catch (error) {
                    Zabbix.log(4, '[ Pushover Webhook ] Impossibile analizzare la risposta ricevuta da 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 'Errore sconosciuto. Controllare il log di debug per ulteriori informazioni.';
                }
            }

            return 'OK';
        }
        catch (error) {
            Zabbix.log(4, '[ Pushover Webhook ] Notifica Pushover non riuscita: ' + error);
            throw 'Notifica Pushover non riuscita: ' + error;
        }
      description: |
        Fare riferimento alla guida di configurazione qui: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pushover

        Impostare il parametro token con la chiave dell'applicazione Pushover.
        Quando si assegna il tipo di supporto Pushover all'utente Zabbix, aggiungere la chiave utente nel campo send to.
      message_templates:
        - event_source: TRIGGERS
          operation_mode: PROBLEM
          subject: 'Problema: {EVENT.NAME}'
          message: |
            Problema iniziato alle {EVENT.TIME} del {EVENT.DATE}
            Nome del problema: {EVENT.NAME}
            Host: {HOST.NAME}
            Gravità: {EVENT.SEVERITY}
            Dati operativi: {EVENT.OPDATA}
            ID problema originale: {EVENT.ID}
            {TRIGGER.URL}
        - event_source: TRIGGERS
          operation_mode: RECOVERY
          subject: 'Risolto in {EVENT.DURATION}: {EVENT.NAME}'
          message: |
            Il problema è stato risolto alle {EVENT.RECOVERY.TIME} del {EVENT.RECOVERY.DATE}
            Nome del problema: {EVENT.NAME}
            Durata del problema: {EVENT.DURATION}
            Host: {HOST.NAME}
            Gravità: {EVENT.SEVERITY}
            ID problema originale: {EVENT.ID}
            {TRIGGER.URL}
        - event_source: TRIGGERS
          operation_mode: UPDATE
          subject: 'Problema aggiornato in {EVENT.AGE}: {EVENT.NAME}'
          message: |
            {USER.FULLNAME} ha {EVENT.UPDATE.ACTION} il problema il {EVENT.UPDATE.DATE} alle {EVENT.UPDATE.TIME}.
            {EVENT.UPDATE.MESSAGE}

            Lo stato attuale del problema è {EVENT.STATUS}, l'età è {EVENT.AGE}, riconosciuto: {EVENT.ACK.STATUS}.
        - event_source: DISCOVERY
          operation_mode: PROBLEM
          subject: 'Rilevamento: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}'
          message: |
            Regola di rilevamento: {DISCOVERY.RULE.NAME}

            IP del dispositivo: {DISCOVERY.DEVICE.IPADDRESS}
            DNS del dispositivo: {DISCOVERY.DEVICE.DNS}
            Stato del dispositivo: {DISCOVERY.DEVICE.STATUS}
            Uptime del dispositivo: {DISCOVERY.DEVICE.UPTIME}

            Nome del servizio del dispositivo: {DISCOVERY.SERVICE.NAME}
            Porta del servizio del dispositivo: {DISCOVERY.SERVICE.PORT}
            Stato del servizio del dispositivo: {DISCOVERY.SERVICE.STATUS}
            Uptime del servizio del dispositivo: {DISCOVERY.SERVICE.UPTIME}
        - event_source: AUTOREGISTRATION
          operation_mode: PROBLEM
          subject: 'Autoregistrazione: {HOST.HOST}'
          message: |
            Nome host: {HOST.HOST}
            IP host: {HOST.IP}
            Porta agent: {HOST.PORT}

Elementi esportati

Gli elementi esportati sono spiegati nella tabella seguente.

Elemento Tipo Descrizione
name string (obbligatorio) Nome del tipo di supporto.
type string (obbligatorio) Trasporto utilizzato dal tipo di supporto.
Valori possibili:1 EMAIL (0), SMS (1), SCRIPT (2), WEBHOOK (4).
status string Indica se il tipo di supporto è abilitato.
Valori possibili:1 ENABLED (0, predefinito), DISABLED (1)
max_sessions integer Il numero massimo di avvisi che possono essere elaborati in parallelo.
Valori possibili per SMS:1 1 (predefinito).
Valori possibili per altri tipi di supporto:1 0-100 (dove 0 = illimitato).
attempts integer Il numero massimo di tentativi di invio di un avviso.
Valori possibili:1 1-10 (predefinito: 3).
attempt_interval string L'intervallo (utilizzando secondi o suffisso temporale) tra i tentativi di ripetizione.
Valori possibili:1 0-60s (predefinito: 10s).
description string Descrizione del tipo di supporto.
message_templates Elemento radice per i modelli di messaggio del tipo di supporto.
event_source string (obbligatorio) Origine dell'evento.
Valori possibili:1 TRIGGERS (0), DISCOVERY (1), AUTOREGISTRATION (2), INTERNAL (3), SERVICE (4).
operation_mode string Modalità operativa.
Valori possibili:1 PROBLEM (0), RECOVERY (1), UPDATE (2).
subject string Oggetto del messaggio.
message string Corpo del messaggio.

Vedi anche: Media type object (fare riferimento alla proprietà pertinente con nome corrispondente).

Email

I seguenti elementi aggiuntivi vengono esportati solo per il tipo di supporto Email.

Elemento Type Descrizione
provider string Provider email.
smtp_server string Server SMTP.
smtp_port integer Porta del server SMTP a cui connettersi.
Predefinita: 25.
smtp_helo string HELO SMTP.
smtp_email string Indirizzo email da cui verranno inviate le notifiche.
smtp_security string Livello di sicurezza della connessione SMTP da utilizzare.
Valori possibili:1 NONE (0, predefinito), STARTTLS (1), SSL_OR_TLS (2).
smtp_verify_host string Verifica host SSL per SMTP.
Valori possibili:1 NO (0, predefinito), YES (1).
smtp_verify_peer string Verifica peer SSL per SMTP.
Valori possibili:1 NO (0, predefinito), YES (1).
smtp_authentication string Metodo di autenticazione SMTP da utilizzare.
Valori possibili:1 NONE (0, predefinito), PASSWORD (1), OAUTH (2).
username string Nome utente.
password string Password di autenticazione.
redirection_url string URL del frontend Zabbix a cui reindirizzare l'autorizzazione OAuth.
client_id string Identificatore del client registrato nel server di autorizzazione OAuth.
authorization_url string URL OAuth, con parametri, per ottenere i token di accesso e di aggiornamento.
token_url string URL OAuth per scambiare il token di autorizzazione con i token di accesso e di aggiornamento.
message_format string Formato del messaggio.
Valori possibili:1 TEXT (0), HTML (1, predefinito).

Vedi anche: Media type object (fare riferimento alla proprietà pertinente con il nome corrispondente).

SMS

I seguenti elementi aggiuntivi vengono esportati solo per il tipo di supporto SMS.

Elemento Type Descrizione
gsm_modem string (obbligatorio) Nome del dispositivo seriale del modem GSM.

Vedi anche: Oggetto tipo di supporto (fare riferimento alla proprietà pertinente con un nome corrispondente).

Script

I seguenti elementi aggiuntivi vengono esportati solo per il tipo di supporto Script.

Elemento Type Descrizione
nome script string (obbligatorio) Nome dello script.
parameters Elemento radice per i parametri dello script.
sortorder string (obbligatorio) Ordine dei parametri dello script passati allo script come argomenti della riga di comando.
value string Valore del parametro dello script.

Vedi anche: Media type object (fare riferimento alla proprietà pertinente con un nome corrispondente).

Webhook

I seguenti elementi aggiuntivi vengono esportati solo per il tipo di supporto Webhook.

Elemento Type Descrizione
script string Script.
timeout string Intervallo di timeout della richiesta HTTP dello script Javascript.
Valori possibili:1 1-60s (predefinito: 30s).
process_tags string Indica se elaborare i tag restituiti.
Valori possibili:1 NO (0, predefinito), YES (1).
show_event_menu string Indica la presenza di una voce nel menu eventi se la macro {EVENT.TAGS.*} è stata risolta correttamente nei campi event_menu_url e event_menu_name.
Valori possibili:1 NO (0, predefinito), YES (1).
event_menu_url string URL della voce del menu eventi. Supporta la macro {EVENT.TAGS.*}.
event_menu_name string Nome della voce del menu eventi. Supporta la macro {EVENT.TAGS.*}.
parameters Elemento radice per i parametri del tipo di supporto webhook.
name string (obbligatorio) Nome del parametro webhook.
value string Valore del parametro webhook.

Vedi anche: Media type object (fare riferimento alla proprietà pertinente con il nome corrispondente).

Note a piè di pagina

1 I valori interi dell'API tra parentesi, ad esempio ENABLED (0), sono riportati solo a scopo di riferimento. Per ulteriori informazioni, vedere la pagina dell'oggetto API collegata nella voce della tabella o alla fine di ciascuna sezione.