zabbix_export:
version: '7.0'
media_types:
- name: ServiceNow
type: WEBHOOK
parameters:
- name: alert_message
value: '{ALERT.MESSAGE}'
- name: alert_subject
value: '{ALERT.SUBJECT}'
- name: event_nseverity
value: '{EVENT.NSEVERITY}'
- name: event_recovery_value
value: '{EVENT.RECOVERY.VALUE}'
- name: event_source
value: '{EVENT.SOURCE}'
- name: event_update_status
value: '{EVENT.UPDATE.STATUS}'
- name: event_value
value: '{EVENT.VALUE}'
- name: servicenow_password
value: '<PLACE PASSWORD HERE>'
- name: servicenow_sys_id
value: '{EVENT.TAGS.__zbx_servicenow_sys_id}'
- name: servicenow_url
value: '{ALERT.SENDTO}'
- name: servicenow_user
value: '<PLACE USERNAME HERE>'
- name: urgency_for_average
value: '2'
- name: urgency_for_disaster
value: '1'
- name: urgency_for_high
value: '2'
- name: urgency_for_information
value: '3'
- name: urgency_for_not_classified
value: '3'
- name: urgency_for_warning
value: '3'
status: DISABLED
script: |
var ServiceNow = {
params: {},
setParams: function (params) {
if (typeof params !== 'object') {
return;
}
ServiceNow.params = params;
if (typeof ServiceNow.params.url === 'string') {
if (!ServiceNow.params.url.endsWith('/')) {
ServiceNow.params.url += '/';
}
ServiceNow.params.url += 'api/now/table/incident';
}
},
setProxy: function (HTTPProxy) {
ServiceNow.HTTPProxy = HTTPProxy;
},
setFields: function (data, fields) {
if (typeof fields === 'object' && Object.keys(fields).length) {
Object.keys(fields)
.forEach(function(field) {
data[field] = (fields[field].match(/^\d{4}\.\d{2}\.\d{2}$/) !== null)
? fields[field].replace(/\./g, '-')
: fields[field];
});
}
},
request: function (method, data) {
['url', 'user', 'password'].forEach(function (field) {
if (typeof ServiceNow.params !== 'object' || typeof ServiceNow.params[field] === 'undefined'
|| ServiceNow.params[field] === '' ) {
throw 'Required ServiceNow param is not set: "' + field + '".';
}
});
var response,
url = ServiceNow.params.url,
request = new HttpRequest();
request.addHeader('Content-Type: application/json');
request.addHeader('Authorization: Basic ' + btoa(ServiceNow.params.user + ':' + ServiceNow.params.password));
if (typeof ServiceNow.HTTPProxy !== 'undefined' && ServiceNow.HTTPProxy !== '') {