Source
Please refer to https://v2.developer.pagerduty.com/docs/send-an-event-events-api-v2 and https://www.zabbix.com/documentation/7.0/manual/config/notifications/media/webhook#example_scripts.
zabbix_export
version'7.0'
media_types
name PagerDuty
type WEBHOOK
parameters
name alert_message
value'{ALERT.MESSAGE}'
name eventack
value'{EVENT.ACK.STATUS}'
name eventdate
value'{EVENT.DATE}'
name eventid
value'{EVENT.ID}'
name eventname
value'{ALERT.SUBJECT}'
name eventtags
value'{EVENT.TAGS}'
name eventtime
value'{EVENT.TIME}'
name eventupdate
value'{EVENT.UPDATE.STATUS}'
name eventvalue
value'{EVENT.VALUE}'
name event_source
value'{EVENT.SOURCE}'
name hostip
value'{HOST.IP}'
name hostname
value'{HOST.NAME}'
name severity
value'{EVENT.NSEVERITY}'
name token
value'<put your key>'
name triggerdesc
value'{TRIGGER.DESCRIPTION}'
name triggerid
value'{TRIGGER.ID}'
name triggeropdata
value'{EVENT.OPDATA}'
name url
value'{$ZABBIX.URL}'
status DISABLED
script
try {
var params = JSON.parse(value),
req = new HttpRequest(),
fields = {},
resp = '';
// Correspondence between the PagerDuty and Zabbix severity level
var severityMapping = [
'info', // Not classified
'info', // Information
'warning', // Warning
'warning', // Average
'error', // High
'critical' // Disaster
];
if (!severityMapping[params.severity]) {
params.severity = '0';
}
if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') {
req.setProxy(params.HTTPProxy);
}
if (isNaN(parseInt(params.eventid)) || params.eventid < 1) {
throw 'incorrect value for variable "eventid". The value must be a positive number.';
}
if (params.eventname.length < 1) {
throw 'incorrect value for variable "eventname". The value must be a non-empty string.';
}
if (isNaN(parseInt(params.severity)) || (params.severity < 0 && params.severity > 5)) {
throw 'incorrect value for variable "severity". The value must be a number 0..5.';
}
if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {
throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.';
}
// Check {EVENT.VALUE} for trigger-based and internal events.
if (params.eventvalue !== '0' && params.eventvalue !== '1'
&& (params.event_source === '0' || params.event_source === '3')) {
throw 'Incorrect "eventvalue" parameter given: "' + params.eventvalue + '".\nMust be 0 or 1.';
}
if (params.event_source === '0') {
if (params.hostname.length < 1) {
throw 'incorrect value for variable "hostname". The value must be a non-empty string.';
}