6 Tipos de medios

Descripción general

Los tipos de medios se exportan con todos los objetos relacionados y todas 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.

Dependiendo del 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 a la derecha.
  3. Seleccione el archivo de importación.
  4. Marque las opciones requeridas en las reglas de importación.
  5. Haga clic en Importar.

Reglas de importación:

Regla Descripción
Actualizar existente Los elementos existentes se actualizarán con los datos tomados del archivo de importación. De lo contrario no se actualizarán.
Crear nuevo La importación agregará nuevos elementos utilizando datos del archivo de importación. De lo contrario no los agregará.

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

Formato de exportación

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}

Etiquetas de elementos

Los valores de las etiquetas de los elementos se explican en la siguiente tabla.

Elemento Propiedad del elemento Obligatorio Tipo Rango1 Descripción
media_types - Elemento raíz para media_types.
name x cadena Nombre del tipo de medio.
type x cadena 0 - CORREO ELECTRÓNICO
1 - SMS
2 - SCRIPT
4 - WEBHOOK
Transporte utilizado por el tipo de medio.
status - cadena 0 - HABILITADO (predeterminado)
1 - DESHABILITADO
Si el tipo de medio está habilitado.
max_sessions - entero Valores posibles para SMS: 1 - (predeterminado)

Valores posibles para otros tipos de medios: 0-100, 0 - ilimitado
El número máximo de alertas que pueden procesarse en paralelo.
attempts - integer 1-10 (predeterminado: 3) El número máximo de intentos para enviar una alerta.
attempt_interval - string 0-60s (predeterminado: 10s) El intervalo entre reintentos.

Acepta segundos y unidades de tiempo con sufijo.
description - cadena Descripción del tipo de medio.
message_templates - Elemento raíz para plantillas de mensajes de tipo multimedia.
event_source x cadena 0 - DISPARADORES
1 - DESCUBRIMIENTO
2 - REGISTRO AUTOMÁTICO
3 - INTERNO
4 - SERVICIO
Fuente del evento.
operation_mode x cadena 0 - PROBLEMA
1 - RECUPERACIÓN
2 - ACTUALIZACIÓN
Modo de operación.
subject - cadena Asunto del mensaje.
message - cadena Cuerpo del mensaje.
Usado solo por tipo de medio de correo electrónico
smtp_server x cadena Servidor SMTP.
smtp_port - integer Predeterminado: 25 Puerto del servidor SMTP al que conectarse.
smtp_helo x cadena Hola SMTP.
smtp_email x cadena Dirección de correo electrónico desde la que se enviarán las notificaciones.
smtp_security - cadena 0 - NINGUNO (predeterminado)
1 - STARTTLS
2 - SSL_OR_TLS
Nivel de seguridad de conexión SMTP a utilizar.
smtp_verify_host - cadena 0 - NO (predeterminado)
1 - SÍ
SSL verificar host para SMTP. Opcional si smtp_security es STARTTLS o SSL_OR_TLS.
smtp_verify_peer - cadena 0 - NO (predeterminado)
1 - SÍ
SSL verificar par para SMTP. Opcional si smtp_security es STARTTLS o SSL_OR_TLS.
smtp_authentication - cadena 0 - NINGUNO (predeterminado)
1 - CONTRASEÑA
Método de autenticación SMTP a utilizar.
username - cadena Nombre de usuario.
password - cadena Contraseña de autenticación.
content_type - string 0 - TEXTO
1 - HTML (predeterminado)
Formato de mensaje.
Usado solo por tipo de medio SMS
gsm_modem x cadena Nombre del dispositivo serie del módem GSM.
Usado solo por tipo de medio de script
script name x cadena Nombre del script.
parámetros - Elemento raíz para los parámetros del script.
Usado solo por el tipo de medio de webhook
script x cadena Guión.
timeout - cadena 1-60s (predeterminado: 30s) Intervalo de tiempo de espera de solicitud HTTP de secuencia de comandos Javascript.
process_tags - string 0 - NO (predeterminado)
1 - SÍ
Si se deben procesar las etiquetas devueltas.
show_event_menu - string 0 - NO (predeterminado)
1 - SÍ
Si {EVENT.TAGS.*} se resolvió exitosamente en event_menu_url y event_menu Campos _name, este campo indica la presencia de una entrada en el menú de eventos.
event_menu_url - cadena URL de la entrada del menú del evento. Admite la macro {EVENT.TAGS.*}.
event_menu_name - cadena 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 x cadena Nombre del parámetro del webhook.
value - cadena Valor del parámetro webhook.
Notas al pie

1 Para valores de cadena, solo se exportará la cadena (p. ej. "EMAIL") sin la numeración utilizada en esta tabla. Los números para los valores de rango (correspondientes a los valores API) en esta tabla se utilizan solo para realizar ordenes.