Tipos de medios

Resumen

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

Exportación

Para exportar tipos de medio, haga lo siguiente:

  1. Vaya a Alerts > Media types.
  2. Marque las casillas de verificación de los tipos de medio que desea exportar.
  3. Haga clic en Export debajo de la lista.

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

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

Importación

Para importar tipos de medio, haga lo siguiente:

  1. Vaya a Alerts > Media types.
  2. Haga clic en Import 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 Import en la esquina inferior derecha del formulario de configuración.

Reglas de importación:

Rule Description
Update existing Los elementos existentes se actualizarán usando los datos del archivo de importación. De lo contrario, no se actualizarán.
Create new Se crearán nuevos elementos usando los datos del archivo de importación. De lo contrario, no se crearán.

En el frontend se mostrará un mensaje de éxito o de error de la importación.

Formato de exportación

Exportar a YAML:

zabbix_export:
  version: '8.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: |
        Consulte la guía de configuración aquí: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pushover

        Establezca el parámetro token con la clave de su aplicación Pushover.
        Al asignar el medio Pushover al usuario de Zabbix, agregue la clave de usuario en el campo "send to".
      message_templates:
        - event_source: TRIGGERS
          operation_mode: PROBLEM
          subject: 'Problema: {EVENT.NAME}'
          message: |
            El problema comenzó a las {EVENT.TIME} el {EVENT.DATE}
            Nombre del problema: {EVENT.NAME}
            host: {HOST.NAME}
            Severidad: {EVENT.SEVERITY}
            Datos operativos: {EVENT.OPDATA}
            ID del problema original: {EVENT.ID}
            {TRIGGER.URL}
        - event_source: TRIGGERS
          operation_mode: RECOVERY
          subject: 'Resuelto en {EVENT.DURATION}: {EVENT.NAME}'
          message: |
            El problema se resolvió a las {EVENT.RECOVERY.TIME} el {EVENT.RECOVERY.DATE}
            Nombre del problema: {EVENT.NAME}
            Duración del problema: {EVENT.DURATION}
            host: {HOST.NAME}
            Severidad: {EVENT.SEVERITY}
            ID del problema original: {EVENT.ID}
            {TRIGGER.URL}
        - event_source: TRIGGERS
          operation_mode: UPDATE
          subject: 'Problema actualizado en {EVENT.AGE}: {EVENT.NAME}'
          message: |
            {USER.FULLNAME} {EVENT.UPDATE.ACTION} el problema el {EVENT.UPDATE.DATE} a las {EVENT.UPDATE.TIME}.
            {EVENT.UPDATE.MESSAGE}

            El estado actual del problema es {EVENT.STATUS}, la antigüedad es {EVENT.AGE}, reconocido: {EVENT.ACK.STATUS}.
        - event_source: DISCOVERY
          operation_mode: PROBLEM
          subject: 'Descubrimiento: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}'
          message: |
            Regla de descubrimiento: {DISCOVERY.RULE.NAME}

            IP del dispositivo: {DISCOVERY.DEVICE.IPADDRESS}
            DNS del dispositivo: {DISCOVERY.DEVICE.DNS}
            Estado del dispositivo: {DISCOVERY.DEVICE.STATUS}
            Tiempo de actividad del dispositivo: {DISCOVERY.DEVICE.UPTIME}

            Nombre del servicio del dispositivo: {DISCOVERY.SERVICE.NAME}
            Puerto del servicio del dispositivo: {DISCOVERY.SERVICE.PORT}
            Estado del servicio del dispositivo: {DISCOVERY.SERVICE.STATUS}
            Tiempo de actividad del servicio del dispositivo: {DISCOVERY.SERVICE.UPTIME}
        - event_source: AUTOREGISTRATION
          operation_mode: PROBLEM
          subject: 'Autoregistro: {HOST.HOST}'
          message: |
            Nombre del host: {HOST.HOST}
            IP del host: {HOST.IP}
            Puerto del agent: {HOST.PORT}

Elementos exportados

Los elementos exportados se explican en la tabla siguiente.

Element Type Description
name string (obligatorio) Nombre del tipo de medio.
type string (obligatorio) Transporte utilizado por el tipo de medio.
Valores posibles:1 EMAIL (0), SMS (1), SCRIPT (2), WEBHOOK (4).
status string Indica si el tipo de medio está habilitado.
Valores posibles:1 ENABLED (0, predeterminado), DISABLED (1)
max_sessions integer 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 medio:1 0-100 (donde 0 = ilimitado).
attempts integer El número máximo de intentos para enviar una alerta.
Valores posibles:1 1-10 (predeterminado: 3).
attempt_interval string El intervalo (usando segundos o time suffix) entre los intentos de reintento.
Valores posibles:1 0-60s (predeterminado: 10s).
description string Descripción del tipo de medio.
message_templates Elemento raíz para las plantillas de mensajes del tipo de medio.
event_source string (obligatorio) Origen del evento.
Valores posibles:1 TRIGGERS (0), DISCOVERY (1), AUTOREGISTRATION (2), INTERNAL (3), SERVICE (4).
operation_mode string Modo de operación.
Valores posibles:1 PROBLEM (0), RECOVERY (1), UPDATE (2).
subject string Asunto del mensaje.
message string Cuerpo del mensaje.

Véase también: Media type object (consulte la propiedad correspondiente con el mismo nombre).

Email

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

Element Type Description
provider string Proveedor de correo electrónico.
smtp_server string Servidor SMTP.
smtp_port integer 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 la conexión SMTP que se usará.
Valores posibles:1 NONE (0, predeterminado), STARTTLS (1), SSL_OR_TLS (2).
smtp_verify_host string Verificación SSL del host para SMTP.
Valores posibles:1 NO (0, predeterminado), YES (1).
smtp_verify_peer string Verificación SSL del peer para SMTP.
Valores posibles:1 NO (0, predeterminado), YES (1).
smtp_authentication string Método de autenticación SMTP que se usará.
Valores posibles:1 NONE (0, predeterminado), PASSWORD (1), OAUTH (2).
username string Nombre de usuario.
password string Contraseña de autenticación.
redirection_url string URL del frontend de Zabbix a la que redirigir de vuelta la autorización OAuth.
client_id string Identificador del cliente registrado en el servidor de autorización OAuth.
authorization_url string URL de OAuth, con parámetros, para obtener tokens de acceso y actualización.
token_url string URL de OAuth para intercambiar el token de autorización por tokens de acceso y actualización.
message_format string Formato del mensaje.
Valores posibles:1 TEXT (0), HTML (1, predeterminado).

Véase también: Media type object (consulte la propiedad correspondiente con el nombre coincidente).

SMS

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

Element Type Description
gsm_modem string (required) Nombre del dispositivo serie del módem GSM.

Consulte también: Media type object (consulte la propiedad correspondiente con el mismo nombre).

Script

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

Element Type Description
script name string (required) Nombre del script.
parameters Elemento raíz para los parámetros del script.
sortorder string (required) Orden de los parámetros del script que se pasan al script como argumentos de línea de comandos.
value string Valor del parámetro del script.

Véase también: Media type object (consulte la propiedad correspondiente con el mismo nombre).

Webhook

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

Element Type Description
script string Script.
timeout string Intervalo de tiempo de espera de la solicitud HTTP del script de Javascript.
Valores posibles:1 1-60s (predeterminado: 30s).
process_tags string Indica si se deben procesar las etiquetas devueltas.
Valores posibles:1 NO (0, predeterminado), YES (1).
show_event_menu string Indica la presencia de una entrada en el menú de eventos si la macro {EVENT.TAGS.*} se resolvió correctamente en los campos event_menu_url y event_menu_name.
Valores posibles:1 NO (0, predeterminado), YES (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 del tipo de medio webhook.
name string (obligatorio) Nombre del parámetro de webhook.
value string Valor del parámetro de webhook.

Véase también: Media type object (consulte la propiedad correspondiente con el mismo nombre).

Notas al pie

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