Les types de média sont exportés avec tous les objets et relations d'objet associés.
Pour exporter des types de médias, procéder comme suit :
Selon le format sélectionné, les types de médias sont exportés vers un fichier local avec un nom par défaut :
Pour importer des types de médias, procéder comme suit :
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 un nouveau | L'importation ajoutera de nouveaux éléments à l'aide des données du fichier d'importation. Sinon, il ne les ajoutera pas. |
Un message de réussite ou d'échec de l'importation sera affiché dans l'interface.
Exportation 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}
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 | string |
Nom du type de média. | ||
type | x | string |
0 - EMAIL 1 - SMS 2 - SCRIPT 4 - WEBHOOK |
Transport utilisé par le type de média. | |
status | - | string |
0 - ENABLED (default) 1 - DISABLED |
Indique si le type de média est activé. | |
max_sessions | - | integer |
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 | - | integer |
1-10 (par défaut : 3) | Le nombre maximum de tentatives d'envoi d'une alerte. | |
attempt_interval | - | string |
0-60s (par défaut : 10s) | Intervalle entre chaque nouvelle tentative. Accepte les secondes et les unités de temps avec suffixe. |
|
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 | x | string |
0 - TRIGGERS 1 - DISCOVERY 2 - AUTOREGISTRATION 3 - INTERNAL 4 - SERVICE |
Origine de l'événement. | |
operation_mode | x | string |
0 - PROBLEM 1 - RECOVERY 2 - UPDATE |
Mode de fonctionnement. | |
subject | - | string |
Objet du message. | ||
message | - | string |
Corps du message. | ||
Utilisés uniquement par le type de média email. | |||||
smtp_server | x | string |
Serveur SMTP. | ||
smtp_port | - | integer |
Par défaut : 25 | Port du serveur SMTP auquel se connecter. | |
smtp_helo | x | string |
SMTP helo. | ||
smtp_email | x | string |
Adresse e-mail à partir de laquelle les notifications seront envoyées. | ||
smtp_security | - | string |
0 - NONE (par défaut) 1 - STARTTLS 2 - SSL_OR_TLS |
Niveau de sécurité de la connexion SMTP à utiliser. | |
smtp_verify_host | - | string |
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 | - | string |
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 | - | string |
0 - NONE (par défaut) 1 - PASSWORD |
Méthode d'authentification SMTP à utiliser. | |
username | - | string |
Nom d'utilisateur. | ||
password | - | string |
Mot de passe d'authentification. | ||
content_type | - | string |
0 - TEXT 1 - HTML (par défaut) |
Format des messages. | |
Utilisé uniquement par le type de média SMS. | |||||
gsm_modem | x | string |
Nom de série du périphérique du modem GSM. | ||
Utilisé uniquement par le type de média script. | |||||
script name | x | string |
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 | string |
Script. | ||
timeout | - | string |
1-60s (par défaut : 30s) | Intervalle de délai d'expiration de la requête HTTP du script Javascript. | |
process_tags | - | string |
0 - NO (par défaut) 1 - YES |
Indique s'il faut traiter les balises renvoyées. | |
show_event_menu | - | string |
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 | - | string |
URL de l'entrée du menu de l'é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 de type de média webhook. | |||
name | x | string |
Nom du paramètre Webhook. | ||
value | - | string |
Valeur du paramètre Webhook. |
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.