Types de média

Vue d'ensemble

Les types de média sont exportés avec tous les objets associés et les relations entre objets.

Exportation

Pour exporter des types de média, procédez comme suit :

  1. Accédez à Alertes > Types de média.
  2. Cochez les cases des types de média à exporter.
  3. Cliquez sur Exporter sous la liste.

Selon le format sélectionné, les types de média sont exportés vers un fichier local avec un nom par défaut :

  • zabbix_export_mediatypes.yaml - en export YAML (option d'export par défaut) ;
  • zabbix_export_mediatypes.xml - en export XML ;
  • zabbix_export_mediatypes.json - en export JSON.

Importation

Pour importer des types de média, procédez comme suit :

  1. Accédez à Alerts > Media types.
  2. Cliquez sur Import dans le coin supérieur droit.
  3. Sélectionnez le fichier d'importation.
  4. Cochez les options requises dans les règles d'importation.
  5. Cliquez sur Import dans le coin inférieur droit du formulaire de configuration.

Règles d'importation :

Rule Description
Update existing Les éléments existants seront mis à jour à l'aide des données du fichier d'importation. Sinon, ils ne seront pas mis à jour.
Create new De nouveaux éléments seront créés à l'aide des données du fichier d'importation. Sinon, ils ne seront pas créés.

Un message de réussite ou d'échec de l'importation s'affichera dans l'interface.

Format d'export

Export au format 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 'Paramètre "event_source" incorrect fourni: "' + params.event_source + '".\nDoit être compris entre 0 et 3.';
            }

            if (params.event_value !== '0' && params.event_value !== '1'
                && (params.event_source === '0' || params.event_source === '3')) {
                throw 'Paramètre "event_value" incorrect fourni: ' + params.event_value + '\nDoit être 0 ou 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" doit être compris entre -2 et 2';
            }

            if (params.event_source === '0' && isNaN(params.triggerid)) {
                throw 'le champ "triggerid" n\'est pas un nombre';
            }

            if (isNaN(params.eventid)) {
                throw 'le champ "eventid" n\'est pas un nombre';
            }

            if (typeof params.message !== 'string' || params.message.trim() === '') {
                throw 'le champ "message" ne peut pas être vide';
            }

            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 'le champ "retry" doit être un nombre d\'une valeur d\'au moins 30 si "priority" est défini sur 2';
                }

                if (isNaN(params.expire) || params.expire > 10800) {
                    throw 'le champ "expire" doit être un nombre d\'une valeur d\'au plus 10800 si "priority" est défini sur 2';
                }

                data.retry = params.retry;
                data.expire = params.expire;
            }

            data = JSON.stringify(data);
            Zabbix.log(4, '[ Pushover Webhook ] Envoi de la requête : ' + params.endpoint + '\n' + data);

            request.addHeader('Content-Type: application/json');
            response = request.post(params.endpoint, data);

            Zabbix.log(4, '[ Pushover Webhook ] Réponse reçue avec le code de statut ' + request.getStatus() + '\n' + response);

            if (response !== null) {
                try {
                    response = JSON.parse(response);
                }
                catch (error) {
                    Zabbix.log(4, '[ Pushover Webhook ] Échec de l\'analyse de la réponse reçue de 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 'Erreur inconnue. Consultez le journal de débogage pour plus d\'informations.';
                }
            }

            return 'OK';
        }
        catch (error) {
            Zabbix.log(4, '[ Pushover Webhook ] Échec de la notification Pushover : ' + error);
            throw 'Échec de la notification Pushover : ' + error;
        }
      description: |
        Veuillez consulter le guide de configuration ici : https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pushover

        Définissez le paramètre token avec la clé de votre application Pushover.
        Lors de l'attribution du média Pushover à l'utilisateur Zabbix, ajoutez la clé utilisateur dans le champ Envoyer à.
      message_templates:
        - event_source: TRIGGERS
          operation_mode: PROBLEM
          subject: 'Problème: {EVENT.NAME}'
          message: |
            Le problème a commencé à {EVENT.TIME} le {EVENT.DATE}
            Nom du problème: {EVENT.NAME}
            Hôte: {HOST.NAME}
            Gravité: {EVENT.SEVERITY}
            Données opérationnelles: {EVENT.OPDATA}
            ID du problème d'origine: {EVENT.ID}
            {TRIGGER.URL}
        - event_source: TRIGGERS
          operation_mode: RECOVERY
          subject: 'Résolu en {EVENT.DURATION}: {EVENT.NAME}'
          message: |
            Le problème a été résolu à {EVENT.RECOVERY.TIME} le {EVENT.RECOVERY.DATE}
            Nom du problème: {EVENT.NAME}
            Durée du problème: {EVENT.DURATION}
            Hôte: {HOST.NAME}
            Gravité: {EVENT.SEVERITY}
            ID du problème d'origine: {EVENT.ID}
            {TRIGGER.URL}
        - event_source: TRIGGERS
          operation_mode: UPDATE
          subject: 'Problème mis à jour en {EVENT.AGE}: {EVENT.NAME}'
          message: |
            {USER.FULLNAME} a {EVENT.UPDATE.ACTION} le problème le {EVENT.UPDATE.DATE} à {EVENT.UPDATE.TIME}.
            {EVENT.UPDATE.MESSAGE}

            L'état actuel du problème est {EVENT.STATUS}, son ancienneté est de {EVENT.AGE}, accusé de réception: {EVENT.ACK.STATUS}.
        - event_source: DISCOVERY
          operation_mode: PROBLEM
          subject: 'Découverte: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}'
          message: |
            Règle de découverte: {DISCOVERY.RULE.NAME}

            IP de l'appareil: {DISCOVERY.DEVICE.IPADDRESS}
            DNS de l'appareil: {DISCOVERY.DEVICE.DNS}
            État de l'appareil: {DISCOVERY.DEVICE.STATUS}
            Temps de fonctionnement de l'appareil: {DISCOVERY.DEVICE.UPTIME}

            Nom du service de l'appareil: {DISCOVERY.SERVICE.NAME}
            Port du service de l'appareil: {DISCOVERY.SERVICE.PORT}
            État du service de l'appareil: {DISCOVERY.SERVICE.STATUS}
            Temps de fonctionnement du service de l'appareil: {DISCOVERY.SERVICE.UPTIME}
        - event_source: AUTOREGISTRATION
          operation_mode: PROBLEM
          subject: 'Auto-enregistrement: {HOST.HOST}'
          message: |
            Nom de l'hôte: {HOST.HOST}
            IP de l'hôte: {HOST.IP}
            Port de l'agent: {HOST.PORT}

Éléments exportés

Les éléments exportés sont expliqués dans le tableau ci-dessous.

Element Type Description
name string (obligatoire) Nom du type de média.
type string (obligatoire) Transport utilisé par le type de média.
Valeurs possibles:1 EMAIL (0), SMS (1), SCRIPT (2), WEBHOOK (4).
status string Indique si le type de média est activé.
Valeurs possibles:1 ENABLED (0, par défaut), DISABLED (1)
max_sessions integer Nombre maximal d'alertes pouvant être traitées en parallèle.
Valeurs possibles pour SMS:1 1 (par défaut).
Valeurs possibles pour les autres types de média:1 0-100 (où 0 - illimité).
attempts integer Nombre maximal de tentatives d'envoi d'une alerte.
Valeurs possibles:1 1-10 (par défaut: 3).
attempt_interval string Intervalle (en utilisant des secondes ou un suffixe de temps) entre les tentatives de réessai.
Valeurs possibles:1 0-60s (par défaut: 10s).
description string Description du type de média.
message_templates Élément racine pour les modèles de message du type de média.
event_source string (obligatoire) Source de l'événement.
Valeurs possibles:1 TRIGGERS (0), DISCOVERY (1), AUTOREGISTRATION (2), INTERNAL (3), SERVICE (4).
operation_mode string Mode de fonctionnement.
Valeurs possibles:1 PROBLEM (0), RECOVERY (1), UPDATE (2).
subject string Objet du message.
message string Corps du message.

Voir aussi: Objet Media type (reportez-vous à la propriété correspondante portant le même nom).

Email

Les éléments supplémentaires suivants sont exportés uniquement pour le type de média Email.

Element Type Description
provider string Fournisseur de messagerie.
smtp_server string Serveur SMTP.
smtp_port integer Port du serveur SMTP auquel se connecter.
Par défaut: 25.
smtp_helo string HELO SMTP.
smtp_email string Adresse e-mail à partir de laquelle les notifications seront envoyées.
smtp_security string Niveau de sécurité de la connexion SMTP à utiliser.
Valeurs possibles:1 NONE (0, par défaut), STARTTLS (1), SSL_OR_TLS (2).
smtp_verify_host string Vérification SSL de l'hôte pour SMTP.
Valeurs possibles:1 NO (0, par défaut), YES (1).
smtp_verify_peer string Vérification SSL du pair pour SMTP.
Valeurs possibles:1 NO (0, par défaut), YES (1).
smtp_authentication string Méthode d'authentification SMTP à utiliser.
Valeurs possibles:1 NONE (0, par défaut), PASSWORD (1), OAUTH (2).
username string Nom d'utilisateur.
password string Mot de passe d'authentification.
redirection_url string URL de l'interface Zabbix vers laquelle rediriger l'autorisation OAuth.
client_id string Identifiant du client enregistré auprès du serveur d'autorisation OAuth.
authorization_url string URL OAuth, avec paramètres, pour obtenir des jetons d'accès et d'actualisation.
token_url string URL OAuth pour échanger le jeton d'autorisation contre des jetons d'accès et d'actualisation.
message_format string Format du message.
Valeurs possibles:1 TEXT (0), HTML (1, par défaut).

Voir aussi: Objet Media type (reportez-vous à la propriété correspondante portant le même nom).

SMS

Les éléments supplémentaires suivants sont exportés uniquement pour le type de média SMS.

Element Type Description
gsm_modem string (obligatoire) Nom du périphérique série du modem GSM.

Voir aussi : Media type object (reportez-vous à la propriété correspondante portant le même nom).

Script

Les éléments supplémentaires suivants sont exportés uniquement pour le type de média Script.

Element Type Description
script name string (required) Nom du script.
parameters Élément racine pour les paramètres du script.
sortorder string (required) Ordre des paramètres du script transmis au script en tant qu'arguments de ligne de commande.
value string Valeur du paramètre du script.

Voir aussi: Objet type de média (se référer à la propriété correspondante portant le même nom).

Webhook

Les éléments supplémentaires suivants sont exportés uniquement pour le type de média Webhook.

Element Type Description
script string Script.
timeout string Intervalle de délai d'attente de la requête HTTP du script JavaScript.
Valeurs possibles :1 1-60s (par défaut : 30s).
process_tags string Indique s'il faut traiter les tags renvoyés.
Valeurs possibles :1 NO (0, par défaut), YES (1).
show_event_menu string Indique la présence d'une entrée dans le menu d'événement si la macro {EVENT.TAGS.*} a été résolue avec succès dans les champs event_menu_url et event_menu_name.
Valeurs possibles :1 NO (0, par défaut), YES (1).
event_menu_url string URL de l'entrée du menu d'événement. Prend en charge la macro {EVENT.TAGS.*}.
event_menu_name string Nom de l'entrée du menu d'événement. Prend en charge la macro {EVENT.TAGS.*}.
parameters Élément racine pour les paramètres du type de média webhook.
name string (obligatoire) Nom du paramètre webhook.
value string Valeur du paramètre webhook.

Voir aussi : Media type object (reportez-vous à la propriété correspondante portant le même nom).

Notes de bas de page

1 Les valeurs entières de l'API entre parenthèses, par exemple, ENABLED (0), sont mentionnées uniquement à titre de référence. Pour plus d'informations, consultez la page de l'objet API liée dans l'entrée du tableau ou à la fin de chaque section.