This is a translation of the original English documentation page. Help us make it better.

5 Types de média

Aperçu

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

Exportation

Pour exporter des types de médias, procéder comme suit :

  • Aller dans : AdministrationTypes de médias
  • Cocher les cases des types de médias à exporter
  • Cliquer sur le bouton Exporter sous la liste

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

  • zabbix_export_mediatypes.yaml - pour une exportation YAML (option d'exportation par défaut)
  • zabbix_export_mediatypes.xml - pour une exportation XML
  • zabbix_export_mediatypes.json - pour une exportation JSON

Importing

Pour importer des types de médias, procéder comme suit :

  • Aller dans : AdministrationTypes de médias
  • Cliquer sur Importer sur la droite
  • Sélectionner le fichier à importer
  • Cocher les options requises dans les règles d'importation
  • Cliquer sur Importer

Un message de réussite ou d'échec de l'importation sera affiché dans l'interface.

Règles d'importation :

Règle Description
Mettre à jour l'existant Les éléments existants seront mis à jour avec les données extraites du fichier d'importation. Sinon, ils ne seront pas mis à jour.
Créer le nouveau L'importation ajoutera de nouveaux éléments à l'aide des données du fichier d'importation. Sinon, il ne les ajoutera pas.
Supprimer le manquant L'importation supprimera les éléments existants non présents dans le fichier d'importation. Sinon, il ne les supprimera pas.

Format d'exportation

Exportation 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}

Balises d'élément

Les valeurs des balises d'élément sont expliquées dans le tableau ci-dessous.

Élément Propriété de l'élément Requis Type Intervalle1 Description
media_types - Élément racine pour media_types.
name x chaîne Nom du type de média.
type x chaîne 0 - EMAIL
1 - SMS
2 - SCRIPT
4 - WEBHOOK
Transport utilisé par le type de média.
status - chaîne 0 - ENABLED (default)
1 - DISABLED
Indique si le type de média est activé.
max_sessions - entier Valeurs possibles pour SMS : 1 - (par défaut)

Valeurs possibles pour les autres types de média : 0-100, 0 - illimité
Le nombre maximum d'alertes pouvant être traitées en parallèle.
attempts - entier 1-10 (par défaut : 3) Le nombre maximum de tentatives d'envoi d'une alerte.
attempt_interval - chaîne 0-60s (par défaut : 10s) Intervalle entre chaque nouvelle tentative.

Accepte les secondes et les unités de temps avec suffixe.
description - chaîne Description du type de média.
message_templates - Élément racine pour les modèles de message du type de média.
event_source x chaîne 0 - TRIGGERS
1 - DISCOVERY
2 - AUTOREGISTRATION
3 - INTERNAL
Origine de l'événement.
operation_mode x chaîne 0 - PROBLEM
1 - RECOVERY
2 - UPDATE
Mode de fonctionnement.
subject - chaîne Objet du message.
message - chaîne Corps du message.
Utilisés uniquement par le type de média email.
smtp_server x chaîne Serveur SMTP.
smtp_port - entier Par défaut : 25 Port du serveur SMTP auquel se connecter.
smtp_helo x chaîne SMTP helo.
smtp_email x chaîne Adresse e-mail à partir de laquelle les notifications seront envoyées.
smtp_security - chaîne 0 - NONE (par défaut)
1 - STARTTLS
2 - SSL_OR_TLS
Niveau de sécurité de la connexion SMTP à utiliser.
smtp_verify_host - chaîne 0 - NO (par défaut)
1 - YES
Vérification SSL de l'hôte pour le SMTP. Facultatif si smtp_security est paramétrer à STARTTLS ou SSL_OR_TLS.
smtp_verify_peer - chaîne 0 - NO (par défaut)
1 - YES
Vérification SSL des peers pour le SMTP. Facultatif si smtp_security est paramétrer à STARTTLS ou SSL_OR_TLS.
smtp_authentication - chaîne 0 - NONE (par défaut)
1 - PASSWORD
Méthode d'authentification SMTP à utiliser.
username - chaîne Nom d'utilisateur.
password - chaîne Mot de passe d'authentification.
content_type - chaîne 0 - TEXT
1 - HTML (par défaut)
Format des messages.
Utilisé uniquement par le type de média SMS.
gsm_modem x chaîne Nom de périphérique série du modem GSM.
Utilisé uniquement par le type de média script.
script name x chaîne Nom du script.
parameters - Élément racine pour les paramètres de script.
Utilisés uniquement par le type de média Webhook.
script x chaîne Script.
timeout - chaîne 1-60s (par défaut : 30s) Intervalle de délai d'expiration de la requête HTTP du script Javascript.
process_tags - chaîne 0 - NO (par défaut)
1 - YES
Faut il traiter les balises renvoyées ?
show_event_menu - chaîne 0 - NO (par défaut)
1 - YES
Si {EVENT.TAGS.*} ont été correctement résolus dans les champs event_menu_url et event_menu_name, ce champ indique la présence d'une entrée dans le menu des événements.
event_menu_url - chaîne URL de l'entrée du menu de l'événement. Prend en charge la macro {EVENT.TAGS.*}.
event_menu_name - chaîne 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 de type de média webhook.
name x chaîne Nom du paramètre Webhook.
value - chaîne Valeur du paramètre Webhook.
Notes de bas de page

1 Pour les valeurs de type chaîne de caractères, seule la chaîne sera exportée (par exemple "EMAIL") sans la numérotation utilisée dans ce tableau. Les nombres pour les valeurs de plage (correspondant aux valeurs API) dans ce tableau sont utilisés uniquement pour l'ordre.