6 Tipos de medios

Descripción general

Los tipos de medios se exportan con todos los objetos relacionados y las relaciones entre objetos.

Exportando

Para exportar tipos de medios, haga lo siguiente:

  1. Vaya a AlertasTipos de medios.
  2. Marque las casillas de verificación de los tipos de medios a exportar.
  3. Haga clic en Exportar debajo de la lista.

Según el formato seleccionado, los tipos de medios se exportan a un archivo local con un nombre predeterminado:

  • zabbix_export_mediatypes.yaml - en exportación YAML (opción predeterminada para exportar);
  • zabbix_export_mediatypes.xml - en exportación XML;
  • zabbix_export_mediatypes.json - en exportación JSON.

Importando

Para importar tipos de medios, haga lo siguiente:

  1. Vaya a AlertasTipos de medios.
  2. Haga clic en Importar en la esquina superior derecha.
  3. Seleccione el archivo de importación.
  4. Marque las opciones requeridas en las reglas de importación.
  5. Haga clic en Importar en la esquina inferior derecha del formulario de configuración.

Reglas de importación:

Regla Descripción
Actualizar existente Los elementos existentes se actualizarán utilizando los datos del archivo de importación. De lo contrario, no se actualizarán.
Crear nuevo Se crearán nuevos elementos utilizando los datos del archivo de importación. En caso contrario no se crearán.

Se mostrará un mensaje de éxito o fracaso de la importación en la interfaz.

Formato de exportación

Exportar a 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 '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}

Elementos exportados

Los elementos exportados se explican en la siguiente tabla.

Elemento Tipo Descripción
name cadena (obligatorio) Nombre del tipo de medio.
type cadena (obligatorio) Transporte utilizado por el tipo de medio.
Valores posibles:1 CORREO ELECTRÓNICO (0), SMS (1), SCRIPT (2), WEBHOOK (4 ).
status cadena Si el tipo de medio está habilitado.
Valores posibles:1 HABILITADO (0, predeterminado), DESHABILITADO (1)
max_sessions entero El número máximo de alertas que se pueden procesar en paralelo.
Valores posibles para SMS:1 1 (predeterminado).
Valores posibles para otros tipos de medios:1 0-100 (donde 0 - ilimitado).
attempts entero El número máximo de intentos para enviar una alerta.
Valores posibles:1 1-10 (predeterminado: 3).
attempt_interval cadena El intervalo (usando segundos o sufijo de tiempo) entre reintentos.
Valores posibles:1(#footnotes) ^ 0-60 s (predeterminado: 10 s).
description cadena Descripción del tipo de medio.
message_templates Elemento raíz para plantillas de mensajes de tipo multimedia.
event_source cadena (obligatorio) Origen del evento.
Valores posibles:1 DISPARADORES (0), DESCUBRIMIENTO (1), REGISTRO AUTOMÁTICO (2), INTERNO (3), SERVICIO (4).
operation_mode cadena Modo de operación.
Valores posibles:1 PROBLEMA (0), RECUPERACIÓN (1), ACTUALIZACIÓN (2).
subject cadena Asunto del mensaje.
message cadena Cuerpo del mensaje.

Consulte también: Objeto de tipo de medio (consulte la propiedad relevante con un nombre coincidente).

Correo electrónico

Los siguientes elementos adicionales se exportan solo para el tipo de medio Correo electrónico.

Elemento Tipo Descripción
provider cadena Proveedor de correo electrónico.
smtp_server cadena Servidor SMTP.
smtp_port entero Puerto del servidor SMTP al que conectarse.
Predeterminado: 25.
smtp_helo string SMTP helo.
smtp_email string Dirección de correo electrónico desde la que se enviarán las notificaciones.
smtp_security string Nivel de seguridad de conexión SMTP a utilizar.
Valores posibles:1 NONE (0, predeterminado), STARTTLS (1), SSL_OR_TLS (2 ).
smtp_verify_host string SSL verificar host para SMTP.
Valores posibles:1 NO (0, predeterminado), SÍ (1).
smtp_verify_peer string SSL verificar par para SMTP.
Valores posibles:1 NO (0, predeterminado), SÍ (1).
smtp_authentication cadena Método de autenticación SMTP a utilizar.
Valores posibles:1 NINGUNO (0, predeterminado), CONTRASEÑA (1).
username cadena Nombre de usuario.
password cadena Contraseña de autenticación.
message_format cadena Formato del mensaje.
Valores posibles:1 TEXTO (0), HTML (1, predeterminado).

Consulte también: Objeto de tipo de medio (consulte la propiedad relevante con un nombre coincidente).

SMS

Los siguientes elementos adicionales se exportan únicamente para el tipo de medio SMS.

Elemento Tipo Descripción
gsm_modem cadena (obligatorio) Nombre del dispositivo serie del módem GSM.

Consulte también: Objeto de tipo de medio (consulte la propiedad relevante con un nombre coincidente).

Script

Los siguientes elementos adicionales se exportan solo para el tipo de medio Script.

Elemento Tipo Descripción
script name cadena (obligatorio) Nombre del script.
parameters Elemento raíz para los parámetros del script.
sortorder string (obligatorio) Orden de los parámetros del script pasados al script como argumentos de la línea de comandos.
value cadena Valor del parámetro del script.

::: nota clásica Consulte también: Objeto de tipo de medio (consulte la propiedad relevante con un nombre coincidente). :::

Webhook

Los siguientes elementos adicionales se exportan solo para el tipo de medio Webhook.

Elemento Tipo Descripción
script cadena Script.
timeout string Intervalo de tiempo de espera de solicitud HTTP de secuencia de comandos Javascript.
Valores posibles:1 1-60 s (predeterminado: 30 s).
process_tags cadena Si se deben procesar las etiquetas devueltas.
Valores posibles:1 NO (0, predeterminado), SÍ (1).
show_event_menu string Indica la presencia de una entrada en el menú de eventos si la macro {EVENT.TAGS.*} se resolvió exitosamente en los campos event_menu_url y event_menu_name.
Valores posibles :1 NO (0, predeterminado), SÍ (1).
event_menu_url string URL de la entrada del menú de eventos. Admite la macro {EVENT.TAGS.*}.
event_menu_name string Nombre de la entrada del menú de eventos. Admite la macro {EVENT.TAGS.*}.
parameters Elemento raíz para los parámetros de tipo de medio de webhook.
name cadena (obligatorio) Nombre del parámetro del webhook.
value cadena Valor del parámetro webhook.

Consulte también: Objeto de tipo de medio (consulte la propiedad relevante con un nombre coincidente).

Notas al pie

1 Los valores enteros de API entre paréntesis, por ejemplo, HABILITADO (0), se mencionan solo como referencia. Para obtener más información, consulte la página del objeto API vinculado en la entrada de la tabla o al final de cada sección.


  1. 1↩︎