6 Tipus de suport

Vista general

Els tipus de suport s'exporten amb tots els objectes i relacions d'objecte associats.

Exportació

Per exportar tipus de suport, feu el següent:

  1. Aneu a AlertesTipus de suport.
  2. Marqueu les caselles dels tipus de suport que voleu exportar.
  3. Cliqueu a Exportar sota la llista.

Segons el format triat, els tipus de suport s'exporten a un arxiu local amb un nom per defecte:

  • zabbix_export_mediatypes.yaml - a exportacions YAML (opció per defecte);
  • zabbix_export_mediatypes.xml - en format XML;
  • zabbix_export_mediatypes.json - en format JSON.

Importació

Per importar tipus de suport, feu el següent:

  1. Anar a: AdministracióTipus de suport.
  2. Feu clic a Importar a la dreta.
  3. Trieu el fitxer a importar.
  4. Comproveu les opcions requerides a les regles d'importació.
  5. Feu clic a Importar.

Regles d'importació:

Regla Descripció
Actualització existent Els elements existents s'actualitzaran amb les dades extretes del fitxer d'importació. En cas contrari, no s'actualitzaran.
Crear nou La importació afegirà nous elements emprant les dades del fitxer d'importació. En cas contrari, no els afegirà.

A la interfície veureu un missatge d'èxit o error d'importació.

Format d'exportació

Exportar a YAML:

zabbix_export:
         version: '6.4'
         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}'
             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: |
               Please refer to setup guide here: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pushover
               
               Set token parameter with to your Pushover application key.
               When assigning Pushover media to the Zabbix user - add user key into send to field.
             message_templates:
               - event_source: TRIGGERS
                 operation_mode: PROBLEM
                 subject: 'Problem: {EVENT.NAME}'
                 message: |
                   Problem started at {EVENT.TIME} on {EVENT.DATE}
                   Problem name: {EVENT.NAME}
                   Host: {HOST.NAME}
                   Severity: {EVENT.SEVERITY}
                   Operational data: {EVENT.OPDATA}
                   Original problem ID: {EVENT.ID}
                   {TRIGGER.URL}
               - event_source: TRIGGERS
                 operation_mode: RECOVERY
                 subject: 'Resolved in {EVENT.DURATION}: {EVENT.NAME}'
                 message: |
                   Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
                   Problem name: {EVENT.NAME}
                   Problem duration: {EVENT.DURATION}
                   Host: {HOST.NAME}
                   Severity: {EVENT.SEVERITY}
                   Original problem ID: {EVENT.ID}
                   {TRIGGER.URL}
               - event_source: TRIGGERS
                 operation_mode: UPDATE
                 subject: 'Updated problem in {EVENT.AGE}: {EVENT.NAME}'
                 message: |
                   {USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.
                   {EVENT.UPDATE.MESSAGE}
                   
                   Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}.
               - event_source: DISCOVERY
                 operation_mode: PROBLEM
                 subject: 'Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}'
                 message: |
                   Discovery rule: {DISCOVERY.RULE.NAME}
                   
                   Device IP: {DISCOVERY.DEVICE.IPADDRESS}
                   Device DNS: {DISCOVERY.DEVICE.DNS}
                   Device status: {DISCOVERY.DEVICE.STATUS}
                   Device uptime: {DISCOVERY.DEVICE.UPTIME}
                   
                   Device service name: {DISCOVERY.SERVICE.NAME}
                   Device service port: {DISCOVERY.SERVICE.PORT}
                   Device service status: {DISCOVERY.SERVICE.STATUS}
                   Device service uptime: {DISCOVERY.SERVICE.UPTIME}
               - event_source: AUTOREGISTRATION
                 operation_mode: PROBLEM
                 subject: 'Autoregistration: {HOST.HOST}'
                 message: |
                   Host name: {HOST.HOST}
                   Host IP: {HOST.IP}
                   Agent port: {HOST.PORT}

Etiquetes d'elements

Els valors de l'etiqueta d'element s'expliquen a la taula següent.

Element Propietat de l'element Obligatori Tipus Range1 Descripció
media_types - Element arrel per a suport_tipus.
name x cadena Nom del tipus de suport.
type x cadena 0 - EMAIL
1 - SMS
2 - SCRIPT
4 - WEBHOOK
Transport emprat pel tipus de suport.
status - cadena 0 - ACTIVAT (per defecte)
1 - DESACTIVAT
Si el tipus de suport és habilitat.
max_sessions - enter Valors possibles per a SMS: 1 - (per defecte)

Valors possibles per a altres tipus de suport: 0-100, 0 - il·limitat
El nombre màxim d'alertes que poden processar-se en paral·lel.
attempts - enter 1-10 (per defecte: 3) El nombre màxim d'intents per enviar una alerta.
attempt_interval - cadena 0-60s (per defecte: 10s) L'interval entre els intents de reintent.

Accepta segons i unitat de temps amb sufix.
description - cadena Descripció del tipus de suport.
message_templates - Element arrel per a plantilles de missatges de tipus multimèdia.
event_source x cadena 0 - ACTIVADORS
1 - DESCOBRIMENT
2 - AUTOREGISTRE
3 - INTERN
4 - SERVEI
Font de l'esdeveniment.
operation_mode x cadena 0 - PROBLEMA
1 - RECUPERACIÓ
2 - ACTUALITZACIÓ
Mode de funcionament.
subject - cadena Assumpte del missatge.
message - cadena Cos del missatge.
S'empra només pel tipus de suport de correu electrònic
smtp_server x cadena Servidor SMTP.
smtp_port - enter Per defecte: 25 Port del servidor SMTP per connectar-se.
smtp_helo x cadena SMTP hola.
smtp_email x cadena Adreça de correu electrònic des de la qual s'enviaran les notificacions.
smtp_security - cadena 0 - NINGÚ (per defecte)
1 - STARTTLS
2 - SSL_OR_TLS
Nivell de seguretat de connexió SMTP a emprar.
smtp_verify_host - cadena 0 - NO (per defecte)
1 - YES
SSL verifica l'equip per a SMTP. Opcional si smtp_security és STARTTLS o SSL_OR_TLS.
smtp_verify_peer - cadena 0 - NO (predeterminat)
1 - YES
SSL verifica el parell per a SMTP. Opcional si smtp_security és STARTTLS o SSL_OR_TLS.
smtp_authentication - cadena 0 - NINGÚ (per defecte)
1 - PASSWORD
Mètode d'autenticació SMTP a emprar.
username - cadena Nom d'usuari.
password - cadena Mot de pas d'autenticació.
content_type - cadena 0 - TEXT
1 - HTML (per defecte)
Format del missatge.
Ús només pel tipus de suport SMS
gsm_modem x cadena Nom del dispositiu sèrie del mòdem GSM.
Ús només pel tipus de suport d'script
script name x cadena Nom de l'script.
parameters - Element arrel per als paràmetres de l'script.
Ús només pel tipus de suport webhook
script x cadena Guió.
timeout - cadena 1-60s (per defecte: 30s) Interval de temps d'espera de la petició HTTP de l'script de JavaScript.
process_tags - cadena 0 - NO (per defecte)
1 - SÍ
Si s'han de processar les etiquetes retornades.
show_event_menu - cadena 0 - NO (predeterminat)
1 - SÍ
Si {EVENT.TAGS.*} s'han resolt correctament als camps event_menu_url i event_menu_name; aquest camp indica la presència d'una entrada al menú d'esdeveniments.
event_menu_url - cadena URL de l'entrada del menú d'esdeveniments. Accepta la macro {EVENT.TAGS.*}.
event_menu_name - cadena Nom de l'entrada del menú de l'esdeveniment. Accepta la macro {EVENT.TAGS.*}.
paràmetres - Element arrel per als paràmetres del tipus de suport de webhook.
name x cadena Nom del paràmetre webhook.
value - cadena Valor del paràmetre Webhook.
Notes de peu de pàgina

1 Per als valors de tipus de cadena de caràcters, només s'exportarà la cadena (per exemple, "EMAIL") sense la numeració emprada en aquesta taula. S'empren nombres per als valors d'interval (corresponents als valors de l'API) en aquesta matriu només a petició.