5 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:

  • Aneu a: AdministracióTipus de suport
  • Marqueu les caselles dels tipus de suport que voleu exportar
  • 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:

  • Anar a: AdministracióTipus de suport
  • Feu clic a Importar a la dreta
  • Trieu el fitxer a importar
  • Comproveu les opcions requerides a les regles d'importació
  • Feu clic a Importar

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

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à.
Esborrar absents La importació esborrarà els elements existents que no són presents al fitxer d'importació. En cas contrari, no els esborrarà pas.

Format d'exportació

Exportar a YAML:

zabbix_export:
         version: '6.0'
         date: '2021-08-31T13:34:17Z'
         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 Interval1 Descripció
media_types - Element arrel per media_types.
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
Indica si el tipus de suport és actiu.
max_sessions - enter Valors possibles per SMS : 1 - (per defecte)

Valors possibles ​​per a altres tipus de suports: 0-100, 0 - il·limitat
El nombre màxim d'alertes que es poden processar 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) Interval entre cada reintent.

Accepta segons unitats de temps com a 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 - TRIGGERS
1 - DESCOBERTA
2 - AUTOREGISTRE
3 - INTERN
Origen 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 només pel tipus de suport correu electrònic.
smtp_server x cadena Servidor SMTP.
smtp_port - enter Per defecte: 25 Port del servidor SMTP on connectar-se.
smtp_helo x cadena SMTP helo.
smtp_email x cadena Adreça de correu-e des d'on s'enviaran les notificacions.
smtp_security - cadena 0 - CAP (per defecte)
1 - STARTTLS
2 - SSL_OR_TLS
Nivell de seguretat de la connexió SMTP a emprar.
smtp_verify_host - cadena 0 - NO (per defecte)
1 - SÍ
Verificació SSL de l'equip per l'SMTP. Opcional si smtp_security s'estableix a STARTTLS o SSL_OR_TLS.
smtp_verify_peer - cadena 0 - NO (per defecte)
1 - SÍ
Verificació de iguals SSL per a SMTP. Opcional si smtp_security és establert a STARTTLS o SSL_OR_TLS.
smtp_authentication - cadena 0 - CAP (per defecte)
1 - MOT DE PAS
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 dels missatges.
Emprat només pel tipus de suport SMS.
gsm_modem x cadena Nom del dispositiu sèrie del mòdem GSM.
Emprat només pel tipus de suport script.
script name x cadena Nom du script.
parameters - Element arrel per als paràmetres de l'script.
Emprat només pel tipus de suport Webhook.
script x cadena Script.
timeout - cadena 1-60s (par défaut : 30s) Interval de temps d'espera de la petició HTTP de JavaScript.
process_tags - cadena 0 - NO (per defecte)
1 - SÍ
S'han de processar les etiquetes retornades?
show_event_menu - cadena 0 - NO per defecte)
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. Admet la macro {EVENT.TAGS.*}.
event_menu_name - cadena Nom de l'entrada del menú d'esdeveniments. Admet la macro {EVENT.TAGS.*}.
parameters - Element arrel per als paràmetres de tipus de suport 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ó.