6 Типови медија

Преглед

Типови медија су exported са свим повезаним објектима и објектним односима.

Извоз

Да бисте извезли типове медија, урадите следеће:

  1. Идите на УпозорењаТипови медија.
  2. Означите поља за потврду типова медија за извоз.
  3. Кликните на Извези испод листе.

У зависности од изабраног формата, типови медија се извозе у локалну датотеку са подразумеваним именом:

  • zabbix_export_mediatypes.yaml - у YAML извозу (подразумевана опција за извоз);
  • zabbix_export_mediatypes.xml - у XML извозу;
  • zabbix_export_mediatypes.json - у JSON извозу.

Увоз

Да бисте увезли типове медија, урадите следеће:

  1. Идите на УпозорењаТипови медија.
  2. Кликните на Увези у горњем десном углу.
  3. Изаберите датотеку за увоз.
  4. Означите потребне опције у правилима увоза.
  5. Кликните на Увези у доњем десном углу обрасца за конфигурацију.

Правила увоза:

Rule Description
Update existing Постојећи елементи ће бити ажурирани коришћењем података из увозне датотеке. У супротном, неће бити ажурирани.
Create new Нови елементи ће бити креирани коришћењем података из увозне датотеке. У супротном, неће бити креирани.

Порука о успеху или неуспеху увоза ће бити приказана на корисничком интерфејсу.

Формат извоза

Извоз у YAML:

zabbix_export:
         version: '7.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: |
               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}

Извезени елементи

Извезени елементи су објашњени у табели испод.

Element Type Description
name string (обавезно) Име типа медија.
type string (обавезно) Транспорт који користи тио медија.
Могуће вредности:1 EMAIL (0), SMS (1), SCRIPT (2), WEBHOOK (4).
status string Ако је тип медија омогућен.
Могуће вредности:1 ENABLED (0, default), DISABLED (1)
max_sessions integer Максималан број упозорења који се могу обрадити паралелно.
Могуће вредности за SMS:1 1 (default).
Могуће вредности за остале типове медија:1 0-100 (where 0 - unlimited).
attempts integer Максималан број покушаја слања упозорења.
Могуће вредности:1 1-10 (default: 3).
attempt_interval string Интервал између (користећи секунде или time suffix) поновних покушаја.
Могуће вредности:1 0-60s (default: 10s).
description string Опис типа медија.
message_templates Коренски елемент за шаблоне порука типа медија.
event_source string (required) Извор догађаја.
Могуће вредности:1 TRIGGERS (0), DISCOVERY (1), AUTOREGISTRATION (2), INTERNAL (3), SERVICE (4).
operation_mode string Operation mode.
Могуће вредности:1 PROBLEM (0), RECOVERY (1), UPDATE (2).
subject string Тема поруке.
message string Тело поруке.

Такође погледајте: Media type object (погледајте релевантно својство са одговарајућим именом).

Е-пошта

Следећи додатни елементи се извозе само за тип медија Е-пошта.

Element Type Description
provider string Email provider.
smtp_server string SMTP server.
smtp_port integer SMTP server port за повезивање.
Подразумевано: 25.
smtp_helo string SMTP helo.
smtp_email string Имејл адреса са које ће се слати нотификације.
smtp_security string Ниво безбедности SMTP везе који треба користити.
Могуће вредности:1 NONE (0, default), STARTTLS (1), SSL_OR_TLS (2).
smtp_verify_host string SSL verify host за SMTP.
Могуће вредности:1 NO (0, default), YES (1).
smtp_verify_peer string SSL verify peer за SMTP.
Могуће вредности:1 NO (0, default), YES (1).
smtp_authentication string SMTP метод аутентификације.
Могуће вредности:1 NONE (0, default), PASSWORD (1).
username string Корисничко име.
password string Лозинка за аутентификацију.
message_format string Формат поруке.
Могуће вредности:1 TEXT (0), HTML (1, default).

Такође погледајте: Media type object (погледајте релевантно својство са одговарајућим именом).

SMS

Следећи додатни елементи се извозе само за тип медија SMS.

Element Type Description
gsm_modem string (обавезно) Назив серијског уређаја GSM модема.

Такође погледајте: Media type object (погледајте релевантно својство са одговарајућим именом).

Скрипта

Следећи додатни елементи се извозе само за тип медија Скрипта.

Element Type Description
script name string (обавезно) Име скрипте.
parameters Коренски елемент за параметар скрипте.
sortorder string (обавезно) Редослед параметара скрипте прослеђених скрипти као аргумент командне линије.
value string Вредност параметра скрипте.

Такође погледајте: Media type object (погледајте релевантно својство са одговарајућим именом).

Вебхук

Следећи додатни елементи се извозе само за тип медија Вебхук.

Element Type Description
script string Script.
timeout string Интервал временског ограничења HTTP захтева Javascript скрипте.
Могуће вредности:1 1-60s (подразумевано: 30s).
process_tags string Да ли да се обрађују враћене ознаке.
Могуће вредности:1 NO (0, подразумевано), YES (1).
show_event_menu string Указује на присуство уноса у менију догађаја ако је макро {EVENT.TAGS.*} успешно решен у пољима event_menu_url and event_menu_name.
Могуће вредности:1 NO (0, подразумевано), YES (1).
event_menu_url string URL уноса у менију догађаја. Подржава {EVENT.TAGS.*} макро.
event_menu_name string Назив ставке менија догађаја. Подржава {EVENT.TAGS.*} макро.
parameters Коренски елемент за параметре типа медија Вебхук.
name string (обавезно) Име параметра вебхук.
value string Вебхук параметар вредности.

Такође погледајте: Media type object (погледајте релевантно својство са одговарајућим именом).

Фусноте

1 API целобројне вредности у заградама, на пример, ENABLED (0), помињу се само као референца. За више информација погледајте страницу повезаног API објекта у уносу у табели или на крају сваког одељка.