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 media, procedere come segue:

  1. Andare su AlertsMedia types.
  2. Fare clic su Import nell'angolo in alto a destra.
  3. Selezionare il file di importazione.
  4. Selezionare le opzioni richieste nelle regole di importazione.
  5. Fare clic su Import nell'angolo in basso a destra del modulo di configurazione.

Regole di importazione:

Rule Description
Update existing Gli elementi esistenti verranno aggiornati usando i dati del file di importazione. In caso contrario, non verranno aggiornati.
Create new I nuovi elementi verranno creati usando i dati del file di importazione. In caso contrario, non verranno creati.

Un messaggio di successo o di errore dell'importazione verrà visualizzato nel frontend.

Formato di esportazione

Esporta in YAML:

zabbix_export:
  version: '7.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" 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" 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 -2..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 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 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 ] Ricevuta risposta 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. Controlla 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

        Imposta il parametro token con la chiave dell'applicazione Pushover.
        Quando assegni il media Pushover all'utente Zabbix, aggiungi la chiave utente nel campo send to.
      message_templates:
        - event_source: TRIGGERS
          operation_mode: PROBLEM
          subject: 'Problema: {EVENT.NAME}'
          message: |
            Il 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} {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}, confermato: {EVENT.ACK.STATUS}.
        - event_source: DISCOVERY
          operation_mode: PROBLEM
          subject: 'Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}'
          message: |
            Regola di discovery: {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 media Email.

Element Type Description
provider string Provider email.
smtp_server string Server SMTP.
smtp_port integer Porta del server SMTP a cui connettersi.
Predefinito: 25.
smtp_helo string SMTP helo.
smtp_email string Indirizzo email da cui verranno inviate le notifiche.
smtp_security string Livello di sicurezza della connessione SMTP da usare.
Valori possibili:1 NONE (0, predefinito), STARTTLS (1), SSL_OR_TLS (2).
smtp_verify_host string Verifica SSL dell'host per SMTP.
Valori possibili:1 NO (0, predefinito), YES (1).
smtp_verify_peer string Verifica SSL del peer per SMTP.
Valori possibili:1 NO (0, predefinito), YES (1).
smtp_authentication string Metodo di autenticazione SMTP da usare.
Valori possibili:1 NONE (0, predefinito), PASSWORD (1).
username string Nome utente.
password string Password di autenticazione.
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.