Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'create/src/data.tmpl')
-rw-r--r--create/src/data.tmpl334
1 files changed, 171 insertions, 163 deletions
diff --git a/create/src/data.tmpl b/create/src/data.tmpl
index 57d338014ca..b55c4b20604 100644
--- a/create/src/data.tmpl
+++ b/create/src/data.tmpl
@@ -66,15 +66,15 @@ ROW |1 |0 |Email |mail.example.com|example.com|za
ROW |3 |2 |SMS | | | | |/dev/ttyS0| | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 | |30s |0 |0 | | | |
ROW |4 |0 |Email (HTML) |mail.example.com|example.com|zabbix@example.com| | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 | |30s |0 |0 | | | |
ROW |5 |4 |Mattermost | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |1 |10s |1 |var SEVERITY_COLORS = [&eol; '#97AAB3', '#7499FF', '#FFC859',&eol; '#FFA059', '#E97659', '#E45959'&eol;];&eol;&eol;var RESOLVE_COLOR = '#009900';&eol;&eol;var SEND_MODE_HANDLERS = {&eol; alarm: handlerAlarm,&eol; event: handlerEvent&eol;};&eol;&eol;if (!String.prototype.format) {&eol; String.prototype.format = function() {&eol; var args = arguments;&eol;&eol; return this.replace(/{(\d+)}/g, function(match, number) {&eol; return number in args&eol; ? args[number]&eol; : match&eol; ;&eol; });&eol; };&eol;}&eol;&eol;function isEventProblem(params) {&eol; return params.event_value == 1&eol; && params.event_update_status == 0&eol; ;&eol;}&eol;&eol;function isEventUpdate(params) {&eol; return params.event_value == 1&eol; && params.event_update_status == 1&eol; ;&eol;}&eol;&eol;function isEventResolve(params) {&eol; return params.event_value == 0;&eol;}&eol;&eol;function getPermalink(mattermost_url, team_name, postid) {&eol; return '{0}/{1}/pl/{2}'.format(&eol; mattermost_url.replace(/\/+$/, ''),&eol; team_name,&eol; postid&eol; );&eol;}&eol;&eol;function getChannel(send_to) {&eol; switch (true) {&eol; case /.+\/#.+/.test(send_to):&eol; return getChannelByName(send_to);&eol;&eol; case /@.+/.test(send_to):&eol; return getDirectChannel(send_to);&eol;&eol; default:&eol; return getChannelByID(send_to);&eol; }&eol;}&eol;&eol;function getChannelByName(send_to) {&eol; var team_chan = send_to&eol; .trim()&eol; .split('/#');&eol;&eol; var resp = JSON.parse(req.get(&eol; Mattermost.channel_byname.format(team_chan[0], team_chan[1]),&eol; JSON.stringify(fields)&eol; )&eol; );&eol;&eol; if (req.getStatus() != 200) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol;&eol; return resp;&eol;}&eol;&eol;function getDirectChannel(send_to) {&eol; Zabbix.log(5, '[ Mattermost Webhook ] Call {0}({1})'.format(&eol; arguments.callee.name,&eol; JSON.stringify(arguments)&eol; ));&eol;&eol; var teamUser = send_to&eol; .trim()&eol; .split('/@'),&eol; bot = getBotUser(),&eol; user = getUserByName(teamUser[1]);&eol;&eol; var resp = JSON.parse(req.post(&eol; Mattermost.direct_channel,&eol; JSON.stringify([bot.id, user.id])&eol; )&eol; );&eol;&eol; Zabbix.log(5, '[ Mattermost Webhook ] Result {0}: {1}'.format(&eol; arguments.callee.name,&eol; JSON.stringify(resp)&eol; ));&eol;&eol; if (req.getStatus() != 201) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol;&eol; resp.team_name = teamUser[0];&eol;&eol; return resp;&eol;}&eol;&eol;function getChannelByID(channelID) {&eol; Zabbix.log(5, '[ Mattermost Webhook ] Call {0}({1})'.format(&eol; arguments.callee.name,&eol; JSON.stringify(arguments)&eol; ));&eol;&eol; var resp = JSON.parse(req.get(&eol; Mattermost.get_channel.format(channelID),&eol; JSON.stringify(fields)&eol; )&eol; );&eol;&eol; Zabbix.log(5, '[ Mattermost Webhook ] Result {0}: {1}'.format(&eol; arguments.callee.name,&eol; JSON.stringify(resp)&eol; ));&eol;&eol; if (req.getStatus() != 200) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol;&eol; return resp;&eol;}&eol;&eol;function getBotUser() {&eol; Zabbix.log(5, '[ Mattermost Webhook ] Call {0}({1})'.format(&eol; arguments.callee.name,&eol; JSON.stringify(arguments)&eol; ));&eol;&eol; var resp = JSON.parse(req.get(&eol; Mattermost.bot_user,&eol; JSON.stringify(fields)&eol; )&eol; );&eol;&eol; Zabbix.log(5, '[ Mattermost Webhook ] Result {0}: {1}'.format(&eol; arguments.callee.name,&eol; JSON.stringify(resp)&eol; ));&eol;&eol; if (req.getStatus() != 200) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol;&eol; return resp;&eol;}&eol;&eol;function getUserByName(userName) {&eol; Zabbix.log(5, '[ Mattermost Webhook ] Call {0}({1})'.format(&eol; arguments.callee.name,&eol; JSON.stringify(arguments)&eol; ));&eol;&eol; var resp = JSON.parse(req.get(&eol; Mattermost.user_byname.format(userName),&eol; JSON.stringify(fields)&eol; )&eol; );&eol;&eol; Zabbix.log(5, '[ Mattermost Webhook ] Result {0}: {1}'.format(&eol; arguments.callee.name,&eol; JSON.stringify(resp)&eol; ));&eol;&eol; if (req.getStatus() != 200) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol;&eol; return resp;&eol;}&eol;&eol;function getTeamByID(teamID) {&eol; Zabbix.log(5, '[ Mattermost Webhook ] Call {0}({1})'.format(&eol; arguments.callee.name,&eol; JSON.stringify(arguments)&eol; ));&eol;&eol; var resp = JSON.parse(req.get(&eol; Mattermost.get_team.format(teamID),&eol; JSON.stringify(fields)&eol; )&eol; );&eol;&eol; Zabbix.log(5, '[ Mattermost Webhook ] Result {0}: {1}'.format(&eol; arguments.callee.name,&eol; JSON.stringify(resp)&eol; ));&eol;&eol; if (req.getStatus() != 200) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol;&eol; return resp;&eol;}&eol;&eol;function createProblemURL(zabbix_url, triggerid, eventid, event_source) {&eol; var problem_url = '';&eol; if (event_source === '0') {&eol; problem_url = '{0}/tr_events.php?triggerid={1}&eventid={2}'&eol; .format(&eol; zabbix_url,&eol; triggerid,&eol; eventid&eol; );&eol; }&eol; else {&eol; problem_url = zabbix_url;&eol; }&eol;&eol; return problem_url;&eol;}&eol;&eol;function getTagValue(event_tags, key) {&eol; var pattern = new RegExp('(' + key + ':.+)');&eol; var tagValue = event_tags&eol; .split(',')&eol; .filter(function (v) {&eol; return v.match(pattern);&eol; })&eol; .map(function (v) {&eol; return v.split(':')[1];&eol; })[0]&eol; &pipe;&pipe; 0;&eol;&eol; return tagValue;&eol;}&eol;&eol;function handlerAlarm(req, params) {&eol; var channel = getChannel(params.send_to);&eol; var fields = {&eol; channel_id: channel.id,&eol; props: {}&eol; };&eol;&eol; if (isEventProblem(params)) {&eol; var team_name = channel.team_name&eol; ? channel.team_name&eol; : getTeamByID(channel.team_id).name;&eol;&eol; fields.props.attachments = [&eol; createMessage(&eol; SEVERITY_COLORS[params.event_nseverity] &pipe;&pipe; 0,&eol; params.event_date,&eol; params.event_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source)&eol; )&eol; ];&eol;&eol; var resp = JSON.parse(req.post(&eol; Mattermost.post_message,&eol; JSON.stringify(fields)&eol; )&eol; );&eol;&eol; if (req.getStatus() != 201) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol;&eol; result.tags.__mattermost_post_id = resp.id;&eol; result.tags.__mattermost_channel_id = channel.id;&eol; result.tags.__mattermost_channel_name = channel.name;&eol; result.tags.__mattermost_message_link = getPermalink(&eol; params.mattermost_url,&eol; team_name,&eol; resp.id&eol; );&eol;&eol; }&eol; else if (isEventUpdate(params)) {&eol; fields.root_id = getTagValue(params.event_tags, 'mattermost_post_id');&eol;&eol; if (params.event_source === '0') {}&eol; fields.props.attachments = [&eol; createMessage(&eol; SEVERITY_COLORS[params.event_nseverity] &pipe;&pipe; 0,&eol; params.event_update_date,&eol; params.event_update_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source),&eol; true&eol; )&eol; ];&eol;&eol; resp = JSON.parse(req.post(&eol; Mattermost.post_message, JSON.stringify(fields)&eol; )&eol; );&eol;&eol; if (req.getStatus() != 201) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol;&eol; }&eol; else if (isEventResolve(params)) {&eol; fields.channel_id = getTagValue(params.event_tags, 'mattermost_channel_id');&eol; fields.id = getTagValue(params.event_tags, 'mattermost_post_id');&eol; fields.props.attachments = [&eol; createMessage(&eol; RESOLVE_COLOR,&eol; params.event_date,&eol; params.event_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source)&eol; )&eol; ];&eol;&eol; var post_id = getTagValue(params.event_tags, 'mattermost_post_id');&eol;&eol; resp = JSON.parse(req.put(&eol; Mattermost.chat_update.format(post_id),&eol; JSON.stringify(fields)&eol; )&eol; );&eol;&eol; if (req.getStatus() != 200) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol; }&eol;}&eol;&eol;function handlerEvent(req, params) {&eol; var channel = getChannel(params.send_to);&eol; var fields = {&eol; channel_id: channel.id,&eol; props: {}&eol; };&eol;&eol; if (isEventProblem(params)) {&eol; var team_name = channel.team_name&eol; ? channel.team_name&eol; : getTeamByID(channel.team_id).name;&eol;&eol; fields.props.attachments = [&eol; createMessage(&eol; SEVERITY_COLORS[params.event_nseverity] &pipe;&pipe; 0,&eol; params.event_date,&eol; params.event_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source)&eol; )&eol; ];&eol;&eol; var resp = JSON.parse(req.post(Mattermost.post_message, JSON.stringify(fields)));&eol;&eol; if (req.getStatus() != 201) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol;&eol; result.tags.__mattermost_channel_name = channel.name;&eol; result.tags.__mattermost_message_link = getPermalink(&eol; params.mattermost_url,&eol; team_name,&eol; resp.id&eol; );&eol;&eol; }&eol; else if (isEventUpdate(params)) {&eol; fields.props.attachments = [&eol; createMessage(&eol; SEVERITY_COLORS[params.event_nseverity] &pipe;&pipe; 0,&eol; params.event_update_date,&eol; params.event_update_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source),&eol; false&eol; )&eol; ];&eol;&eol; resp = JSON.parse(req.post(Mattermost.post_message, JSON.stringify(fields)));&eol;&eol; if (req.getStatus() != 201) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol;&eol; }&eol; else if (isEventResolve(params)) {&eol; fields.props.attachments = [&eol; createMessage(&eol; RESOLVE_COLOR,&eol; params.event_recovery_date,&eol; params.event_recovery_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source)&eol; )&eol; ];&eol;&eol; resp = JSON.parse(req.post(Mattermost.post_message, JSON.stringify(fields)));&eol;&eol; if (req.getStatus() != 201) {&eol; throw '[{0}] {1}'.format(resp.status_code, resp.message);&eol; }&eol; }&eol;}&eol;&eol;function createMessage(&eol; event_severity_color,&eol; event_date,&eol; event_time,&eol; problem_url,&eol; isShort&eol;) {&eol; var message = {&eol; fallbac: params.alert_subject,&eol; title: params.alert_subject,&eol; color: event_severity_color,&eol; title_link: problem_url,&eol; footer: problem_url,&eol;&eol; fields: [&eol; {&eol; title: 'Host',&eol; value: '{0} [{1}]'.format(params.host_name, params.host_ip),&eol; short: true&eol; },&eol; {&eol; title: 'Event time',&eol; value: '{0} {1}'.format(event_date, event_time),&eol; short: true&eol; }&eol; ],&eol; };&eol;&eol; &eol; if (params.event_source === '0') {&eol; message.fields.push(&eol; {&eol; title: 'Severity',&eol; value: params.event_severity,&eol; short: true&eol; },&eol; {&eol; title: 'Opdata',&eol; value: params.event_opdata,&eol; short: true&eol; }&eol; );&eol; }&eol;&eol; if (!isShort && params.event_source === '0') {&eol; message.fields.push(&eol; {&eol; title: 'Event tags',&eol; value: '`{0}`'.format(params.event_tags.replace(/__.+?:(.+?,&pipe;.+)/g, '') &pipe;&pipe; 'None'),&eol; short: true&eol; },&eol; {&eol; title: 'Trigger description',&eol; value: params.trigger_description,&eol; short: true&eol; }&eol; );&eol; }&eol;&eol; if (params.event_source !== '0' &pipe;&pipe; params.event_update_status === '1') {&eol; message.fields.push(&eol; {&eol; title: 'Details',&eol; value: params.alert_message,&eol; short: false&eol; }&eol; );&eol; }&eol;&eol; return message;&eol;}&eol;&eol;function validateParams(params) {&eol; if (typeof params.bot_token !== 'string' &pipe;&pipe; params.bot_token.trim() === '') {&eol; throw 'Field "bot_token" cannot be empty';&eol; }&eol;&eol; if (isNaN(params.event_id)) {&eol; throw 'Field "event_id" is not a number';&eol; }&eol;&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.';&eol; }&eol;&eol; if (params.event_source !== '0') {&eol; params.event_nseverity = '0';&eol; params.event_severity = 'Not classified';&eol; params.event_update_status = '0';&eol; params.send_mode = 'event';&eol; }&eol;&eol; if (params.event_source === '1' &pipe;&pipe; params.event_source === '2') {&eol; params.event_value = '1';&eol; }&eol;&eol; if (params.event_source === '1') {&eol; params.host_name = params.discovery_host_dns;&eol; params.host_ip = params.discovery_host_ip;&eol; }&eol;&eol; if ([0, 1, 2, 3, 4, 5].indexOf(parseInt(params.event_nseverity)) === -1) {&eol; throw 'Incorrect "event_nseverity" parameter given: ' + params.event_nseverity + '\nMust be 0-5.';&eol; }&eol;&eol; if (typeof params.event_severity !== 'string' &pipe;&pipe; params.event_severity.trim() === '') {&eol; throw 'Field "event_severity" cannot be empty';&eol; }&eol;&eol; if (params.event_update_status !== '0' && params.event_update_status !== '1') {&eol; throw 'Incorrect "event_update_status" parameter given: ' + params.event_update_status + '\nMust be 0 or 1.';&eol; }&eol;&eol; if (params.event_value !== '0' && params.event_value !== '1') {&eol; throw 'Incorrect "event_value" parameter given: ' + params.event_value + '\nMust be 0 or 1.';&eol; }&eol;&eol; if (typeof params.host_ip !== 'string' &pipe;&pipe; params.host_ip.trim() === '') {&eol; throw 'Field "host_ip" cannot be empty';&eol; }&eol;&eol; if (typeof params.host_name !== 'string' &pipe;&pipe; params.host_name.trim() === '') {&eol; throw 'Field "host_name" cannot be empty';&eol; }&eol;&eol; if (typeof params.mattermost_url !== 'string' &pipe;&pipe; params.mattermost_url.trim() === '') {&eol; throw 'Field "mattermost_url" cannot be empty';&eol; }&eol;&eol; if (!/^(http&pipe;https):\/\/.+/.test(params.mattermost_url)) {&eol; throw 'Field "mattermost_url" must contain a schema';&eol; }&eol;&eol; if (['alarm', 'event'].indexOf(params.send_mode) === -1) {&eol; throw 'Incorrect "send_mode" parameter given: ' + params.send_mode + '\nMust be "alarm" or "event".';&eol; }&eol;&eol; if (typeof params.send_to !== 'string' &pipe;&pipe; params.send_to.trim() === '') {&eol; throw 'Field "send_to" cannot be empty';&eol; }&eol;&eol; if (isNaN(params.trigger_id) && params.event_source === '0') {&eol; throw 'field "trigger_id" is not a number';&eol; }&eol;&eol; if (typeof params.zabbix_url !== 'string' &pipe;&pipe; params.zabbix_url.trim() === '') {&eol; throw 'Field "zabbix_url" cannot be empty';&eol; }&eol;&eol; if (!/^(http&pipe;https):\/\/.+/.test(params.zabbix_url)) {&eol; throw 'Field "zabbix_url" must contain a schema';&eol; }&eol;&eol;}&eol;&eol;try {&eol; var params = JSON.parse(value);&eol;&eol; validateParams(params);&eol;&eol; var req = new HttpRequest(),&eol; fields = {},&eol; result = {tags: {}};&eol;&eol; if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') {&eol; req.setProxy(params.HTTPProxy);&eol; }&eol;&eol; req.addHeader('Content-Type: application/json; charset=utf-8');&eol; req.addHeader('Authorization: Bearer ' + params.bot_token);&eol;&eol; params.mattermost_url = params.mattermost_url.replace(/\/+$/, '');&eol; params.zabbix_url = params.zabbix_url.replace(/\/+$/, '');&eol;&eol; var APIEndpoint = params.mattermost_url + '/api/v4/';&eol;&eol; var Mattermost = {&eol; post_message: APIEndpoint + 'posts',&eol; get_channel: APIEndpoint + 'channels/{0}',&eol; get_team: APIEndpoint + 'teams/{0}',&eol; chat_update: APIEndpoint + 'posts/{0}',&eol; direct_channel: APIEndpoint + 'channels/direct',&eol; channel_byname: APIEndpoint + 'teams/name/{0}/channels/name/{1}',&eol; user_byname: APIEndpoint + 'users/username/{0}',&eol; bot_user: APIEndpoint + 'users/me'&eol;&eol; };&eol;&eol; params.send_mode = params.send_mode.toLowerCase();&eol; params.send_mode = params.send_mode in SEND_MODE_HANDLERS&eol; ? params.send_mode&eol; : 'alarm';&eol;&eol; SEND_MODE_HANDLERS[params.send_mode](req, params);&eol;&eol; if (params.event_source === '0') {&eol; return JSON.stringify(result);&eol; }&eol; else {&eol; return 'OK';&eol; }&eol;}&eol;catch (error) {&eol; Zabbix.log(4, '[ Mattermost Webhook ] Mattermost notification failed: ' + error);&eol; throw 'Mattermost notification failed: ' + error;&eol;}|30s |1 |1 |{EVENT.TAGS.__mattermost_message_link}|Open in Mattermost: {EVENT.TAGS.__mattermost_channel_name} | |
-ROW |6 |4 |Opsgenie | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var Media = {&eol; params: {},&eol; name: '',&eol; labels: [],&eol; HTTPProxy: '',&eol;&eol; setParams: function (params) {&eol; if (typeof params !== 'object') {&eol; return;&eol; }&eol;&eol; Media.params = params;&eol; Media.params.api += Media.params.api.endsWith('/') ? '' : '/';&eol; Media.params.web += Media.params.web.endsWith('/') ? '' : '/';&eol; },&eol;&eol; setProxy: function (HTTPProxy) {&eol; if (typeof HTTPProxy !== 'undefined' && HTTPProxy.trim() !== '') {&eol; Media.HTTPProxy = HTTPProxy;&eol; }&eol; },&eol;&eol; setTags: function(event_tags_json) {&eol; if (typeof event_tags_json !== 'undefined' && event_tags_json !== ''&eol; && event_tags_json !== '{EVENT.TAGSJSON}') {&eol;&eol; try {&eol; var tags = JSON.parse(event_tags_json),&eol; label;&eol;&eol; tags.forEach(function (tag) {&eol; if (typeof tag.tag === 'string') {&eol; label = (tag.tag + (typeof tag.value !== 'undefined'&eol; && tag.value !== '' ? (':' + tag.value) : '')).replace(/\s/g, '_');&eol; Media.labels.push(label);&eol; }&eol; });&eol; }&eol; catch (error) {&eol; Zabbix.log(4, '[ ' + Media.name + ' Webhook ] Failed to parse "event_tags_json" param');&eol; }&eol; }&eol; },&eol;&eol; request: function (method, query, data, allow_404) {&eol; if (typeof(allow_404) === 'undefined') {&eol; allow_404 = false;&eol; }&eol;&eol; ['api', 'token'].forEach(function (field) {&eol; if (typeof Media.params !== 'object' &pipe;&pipe; typeof Media.params[field] === 'undefined'&eol; &pipe;&pipe; Media.params[field] === '') {&eol; throw 'Required ' + Media.name + ' param is not set: "' + field + '".';&eol; }&eol; });&eol;&eol; var response,&eol; url = Media.params.api + query,&eol; request = new HttpRequest();&eol;&eol; request.addHeader('Content-Type: application/json');&eol; request.addHeader('Authorization: ' + Media.params.token);&eol; request.setProxy(Media.HTTPProxy);&eol;&eol; if (typeof data !== 'undefined') {&eol; data = JSON.stringify(data);&eol; }&eol;&eol; Zabbix.log(4, '[ ' + Media.name + ' Webhook ] Sending request: ' +&eol; url + ((typeof data === 'string') ? ('\n' + data) : ''));&eol;&eol; switch (method) {&eol; case 'get':&eol; response = request.get(url, data);&eol; break;&eol;&eol; case 'post':&eol; response = request.post(url, data);&eol; break;&eol;&eol; case 'put':&eol; response = request.put(url, data);&eol; break;&eol;&eol; default:&eol; throw 'Unsupported HTTP request method: ' + method;&eol; }&eol;&eol; Zabbix.log(4, '[ ' + Media.name + ' Webhook ] Received response with status code ' +&eol; request.getStatus() + '\n' + response);&eol;&eol; if (response !== null) {&eol; try {&eol; response = JSON.parse(response);&eol; }&eol; catch (error) {&eol; Zabbix.log(4, '[ ' + Media.name + ' Webhook ] Failed to parse response.');&eol; response = null;&eol; }&eol; }&eol;&eol; if ((request.getStatus() < 200 &pipe;&pipe; request.getStatus() >= 300)&eol; && (!allow_404 &pipe;&pipe; request.getStatus() !== 404)) {&eol; var message = 'Request failed with status code ' + request.getStatus();&eol;&eol; if (response !== null) {&eol; if (typeof response.errors === 'object' && Object.keys(response.errors).length > 0) {&eol; message += ': ' + JSON.stringify(response.errors);&eol; }&eol; else if (typeof response.errorMessages === 'object' && Object.keys(response.errorMessages).length > 0) {&eol; message += ': ' + JSON.stringify(response.errorMessages);&eol; }&eol; else if (typeof response.message === 'string') {&eol; message += ': ' + response.message;&eol; }&eol; }&eol;&eol; throw message + ' Check debug log for more information.';&eol; }&eol;&eol; return {&eol; status: request.getStatus(),&eol; response: response&eol; };&eol; },&eol;&eol; getAlertId: function (requestId) {&eol; do {&eol; resp = Media.request('get', 'requests/' + requestId, undefined, true);&eol; }&eol; while (typeof resp.response !== 'object' &pipe;&pipe; typeof resp.response.data === 'undefined'&eol; &pipe;&pipe; resp.response.data.success === false);&eol;&eol; if (typeof resp.response !== 'object' &pipe;&pipe; typeof resp.response.data === 'undefined') {&eol; throw 'Cannot get ' + Media.name + ' issue ID. Check debug log for more information.';&eol; }&eol;&eol; return resp;&eol; }&eol;};&eol;&eol;try {&eol; var result = {tags: {}},&eol; params = JSON.parse(value),&eol; media = {},&eol; fields = {},&eol; resp = {},&eol; responders = [],&eol; tags = [],&eol; required_params = [&eol; 'alert_subject',&eol; 'alert_message',&eol; 'event_id',&eol; 'event_source',&eol; 'event_value',&eol; 'event_update_status',&eol; 'opsgenie_api',&eol; 'opsgenie_web',&eol; 'opsgenie_token'&eol; ],&eol; severities = [&eol; 'not_classified',&eol; 'information',&eol; 'warning',&eol; 'average',&eol; 'high',&eol; 'disaster',&eol; 'resolved',&eol; 'default'&eol; ],&eol; priority;&eol;&eol; Object.keys(params)&eol; .forEach(function (key) {&eol; if (required_params.indexOf(key) !== -1 && params[key].trim() === '') {&eol; throw 'Parameter "' + key + '" cannot be empty.';&eol; }&eol; if (key.startsWith('opsgenie_')) {&eol; media[key.substring(9)] = params[key];&eol; }&eol; });&eol;&eol; // Possible values of event_source:&eol; // 0 - Trigger, 1 - Discovery, 2 - Autoregistration, 3 - Internal.&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.';&eol; }&eol;&eol; // Check event_value for trigger-based and internal events.&eol; // Possible values: 1 for problem, 0 for recovering&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: ' + params.event_value + '\nMust be 0 or 1.';&eol; }&eol;&eol; // Check event_update_status only for trigger-based events.&eol; // Possible values: 0 - Webhook was called because of problem/recovery event, 1 - Update operation.&eol; if (params.event_source === '0' && params.event_update_status !== '0' && params.event_update_status !== '1') {&eol; throw 'Incorrect "event_update_status" parameter given: ' + params.event_update_status + '\nMust be 0 or 1.';&eol; }&eol;&eol; // Check event_id for a numeric value.&eol; if (isNaN(parseInt(params.event_id)) &pipe;&pipe; params.event_id < 1) {&eol; throw 'Incorrect "event_id" parameter given: ' + params.event_id + '\nMust be a positive number.';&eol; }&eol;&eol; if ((params.event_source === '1' &pipe;&pipe; params.event_source === '2') && params.event_value === '0') {&eol; throw 'Recovery operations are supported only for Trigger and Internal actions.';&eol; }&eol;&eol; if ([0, 1, 2, 3, 4, 5].indexOf(parseInt(params.event_nseverity)) === -1) {&eol; params.event_nseverity = '7';&eol; }&eol;&eol; if (params.event_value === '0') {&eol; params.event_nseverity = '6';&eol; }&eol;&eol; priority = params['severity_' + severities[params.event_nseverity]];&eol; params.zbxurl = params.zbxurl + (params.zbxurl.endsWith('/') ? '' : '/');&eol;&eol; Media.name = 'Opsgenie';&eol; Media.setParams(media);&eol; Media.params.token = 'GenieKey ' + Media.params.token;&eol; Media.setProxy(params.HTTPProxy);&eol; Media.setTags(params.event_tags_json); // Set Media.labels&eol;&eol; // Create an issue.&eol; // Numeric value of the event that triggered an action (1 for problem, 0 for recovering).&eol; // Numeric value of the problem update status. Possible values:&eol; // 0 - Webhook was called because of problem/recovery event, 1 - Update operation.&eol; if ((params.event_source == 0 && params.event_value == 1 && params.event_update_status == 0)&eol; &pipe;&pipe; (params.event_source == 3 && params.event_value == 1)&eol; &pipe;&pipe; params.event_source == 1 &pipe;&pipe; params.event_source == 2) {&eol; fields.message = params.alert_subject;&eol; fields.alias = params.event_id;&eol; fields.description = params.alert_message;&eol; fields.priority = priority;&eol; fields.source = 'Zabbix';&eol;&eol; if (params.event_source === '0') {&eol; fields.details = {&eol; 'Zabbix server': params.zbxurl,&eol; Problem: params.zbxurl + 'tr_events.php?triggerid=' + params.trigger_id + '&eventid=' + params.event_id&eol; };&eol; }&eol; else {&eol; fields.details = {'Zabbix server': params.zbxurl};&eol; }&eol;&eol; if (typeof params.opsgenie_teams === 'string') {&eol; responders = params.opsgenie_teams.split(',');&eol; fields.responders = responders.map(function(team) {&eol; return {type: 'team', name: team.trim()};&eol; });&eol; }&eol;&eol; fields.tags = Media.labels;&eol; if (typeof params.opsgenie_tags === 'string') {&eol; tags = params.opsgenie_tags.split(',');&eol; tags.forEach(function(item) {&eol; fields.tags.push(item.trim());&eol; });&eol; }&eol;&eol; resp = Media.request('post', '', fields);&eol; if (typeof resp.response !== 'object' &pipe;&pipe; typeof resp.response.result === 'undefined') {&eol; throw 'Cannot create ' + Media.name + ' issue. Check debug log for more information.';&eol; }&eol;&eol; if (resp.status === 202) {&eol; resp = Media.getAlertId(resp.response.requestId);&eol; if (params.event_source == 0 && params.event_value == 1 && params.event_update_status == 0) {&eol; result.tags.__zbx_ops_issuekey = resp.response.data.alertId;&eol; result.tags.__zbx_ops_issuelink = Media.params.web + 'alert/detail/' + resp.response.data.alertId;&eol; }&eol; }&eol; else {&eol; throw Media.name + ' response code is unexpected. Check debug log for more information.';&eol; }&eol; }&eol; // Update a created issue.&eol; else {&eol; fields.user = (params.event_value != 0) ? params.zbxuser : '';&eol; fields.note = params.alert_message;&eol;&eol; resp = Media.request('post', params.event_id + '/notes?identifierType=alias', fields);&eol; if (typeof resp.response !== 'object' &pipe;&pipe; typeof resp.response.result === 'undefined') {&eol; throw 'Cannot update ' + Media.name + ' issue. Check debug log for more information.';&eol; }&eol;&eol; if (resp.status === 202) {&eol; resp = Media.getAlertId(resp.response.requestId);&eol; }&eol; else {&eol; throw Media.name + ' response code is unexpected. Check debug log for more information.';&eol; }&eol; }&eol;&eol; return JSON.stringify(result);&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[ ' + Media.name + ' Webhook ] ERROR: ' + error);&eol; throw 'Sending failed: ' + error;&eol;}|30s |1 |1 |{EVENT.TAGS.__zbx_ops_issuelink} |Opsgenie: {EVENT.TAGS.__zbx_ops_issuekey} |Please refer to https://docs.opsgenie.com/docs/alert-api and https://www.zabbix.com/documentation/6.2/manual/config/notifications/media/webhook#example_scripts.&eol; &eol;Set global macro {$ZABBIX.URL} with your Zabbix server URL.&eol;Add dedicated user with media type "Opsgenie".&eol;Change the values of the variables opsgenie_api (https://api.opsgenie.com/v2/alerts or https://api.eu.opsgenie.com/v2/alerts),&eol;opsgenie_web (for example, https://myzabbix.app.opsgenie.com), opsgenie_token. |
+ROW |6 |4 |Opsgenie | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var method,&eol; Media = {&eol; params: {},&eol; name: '',&eol; labels: [],&eol; HTTPProxy: '',&eol;&eol; setParams: function (params) {&eol; if (typeof params !== 'object') {&eol; return;&eol; }&eol;&eol; Media.params = params;&eol; Media.params.api += Media.params.api.endsWith('/') ? '' : '/';&eol; Media.params.web += Media.params.web.endsWith('/') ? '' : '/';&eol; },&eol;&eol; setProxy: function (HTTPProxy) {&eol; if (typeof HTTPProxy !== 'undefined' && HTTPProxy.trim() !== '') {&eol; Media.HTTPProxy = HTTPProxy;&eol; }&eol; },&eol;&eol; setTags: function(event_tags_json) {&eol; if (typeof event_tags_json !== 'undefined' && event_tags_json !== ''&eol; && event_tags_json !== '{EVENT.TAGSJSON}') {&eol;&eol; try {&eol; var tags = JSON.parse(event_tags_json),&eol; label;&eol;&eol; tags.forEach(function (tag) {&eol; if (typeof tag.tag === 'string') {&eol; label = (tag.tag + (typeof tag.value !== 'undefined'&eol; && tag.value !== '' ? (':' + tag.value) : '')).replace(/\s/g, '_');&eol; Media.labels.push(label);&eol; }&eol; });&eol; }&eol; catch (error) {&eol; Zabbix.log(4, '[ ' + Media.name + ' Webhook ] Failed to parse "event_tags_json" param');&eol; }&eol; }&eol; },&eol;&eol; request: function (method, query, data, allow_404) {&eol; if (typeof(allow_404) === 'undefined') {&eol; allow_404 = false;&eol; }&eol;&eol; ['api', 'token'].forEach(function (field) {&eol; if (typeof Media.params !== 'object' &pipe;&pipe; typeof Media.params[field] === 'undefined'&eol; &pipe;&pipe; Media.params[field] === '') {&eol; throw 'Required ' + Media.name + ' param is not set: "' + field + '".';&eol; }&eol; });&eol;&eol; var response,&eol; url = Media.params.api + query,&eol; request = new HttpRequest();&eol;&eol; request.addHeader('Content-Type: application/json');&eol; request.addHeader('Authorization: ' + Media.params.token);&eol; request.setProxy(Media.HTTPProxy);&eol;&eol; if (typeof data !== 'undefined') {&eol; data = JSON.stringify(data);&eol; }&eol;&eol; Zabbix.log(4, '[ ' + Media.name + ' Webhook ] Sending request: ' +&eol; url + ((typeof data === 'string') ? ('\n' + data) : ''));&eol;&eol; switch (method) {&eol; case 'get':&eol; response = request.get(url, data);&eol; break;&eol;&eol; case 'post':&eol; response = request.post(url, data);&eol; break;&eol;&eol; case 'put':&eol; response = request.put(url, data);&eol; break;&eol;&eol; default:&eol; throw 'Unsupported HTTP request method: ' + method;&eol; }&eol;&eol; Zabbix.log(4, '[ ' + Media.name + ' Webhook ] Received response with status code ' +&eol; request.getStatus() + '\n' + response);&eol;&eol; if (response !== null) {&eol; try {&eol; response = JSON.parse(response);&eol; }&eol; catch (error) {&eol; Zabbix.log(4, '[ ' + Media.name + ' Webhook ] Failed to parse response.');&eol; response = null;&eol; }&eol; }&eol;&eol; if ((request.getStatus() < 200 &pipe;&pipe; request.getStatus() >= 300)&eol; && (!allow_404 &pipe;&pipe; request.getStatus() !== 404)) {&eol; var message = 'Request failed with status code ' + request.getStatus();&eol;&eol; if (response !== null) {&eol; if (typeof response.errors === 'object' && Object.keys(response.errors).length > 0) {&eol; message += ': ' + JSON.stringify(response.errors);&eol; }&eol; else if (typeof response.errorMessages === 'object' && Object.keys(response.errorMessages).length > 0) {&eol; message += ': ' + JSON.stringify(response.errorMessages);&eol; }&eol; else if (typeof response.message === 'string') {&eol; message += ': ' + response.message;&eol; }&eol; }&eol;&eol; throw message + ' Check debug log for more information.';&eol; }&eol;&eol; return {&eol; status: request.getStatus(),&eol; response: response&eol; };&eol; },&eol;&eol; getAlertId: function (requestId) {&eol; status_counter = params.status_counter &pipe;&pipe; 25; &eol; do {&eol; resp = Media.request('get', 'requests/' + requestId, undefined, true);&eol; status_counter -= 1; &eol; }&eol; while ( status_counter > 0 && &eol; ( &eol; typeof resp.response !== 'object' &pipe;&pipe; &eol; typeof resp.response.data === 'undefined' &pipe;&pipe;&eol; resp.response.data.success === false &&&eol; !resp.response.data.status.includes("There is no open alert") &&&eol; !resp.response.data.status.includes("Alert is already")&eol; ) &eol; );&eol;&eol; if (typeof resp.response !== 'object' &pipe;&pipe; typeof resp.response.data === 'undefined') {&eol; throw 'Cannot get ' + Media.name + ' issue ID. Check debug log for more information.';&eol; }&eol; else if (resp.response.data.success === false ) {&eol; throw Media.name + ': Operation status (' + resp.response.data.status + ')';&eol; }&eol;&eol; return resp;&eol; }&eol;};&eol;&eol;try {&eol; var result = {tags: {}},&eol; params = JSON.parse(value),&eol; media = {},&eol; fields = {},&eol; resp = {},&eol; responders = [],&eol; tags = [],&eol; required_params = [&eol; 'alert_subject',&eol; 'alert_message',&eol; 'event_id',&eol; 'event_source',&eol; 'event_value',&eol; 'event_update_status',&eol; 'opsgenie_api',&eol; 'opsgenie_web',&eol; 'opsgenie_token'&eol; ],&eol; severities = [&eol; 'not_classified',&eol; 'information',&eol; 'warning',&eol; 'average',&eol; 'high',&eol; 'disaster',&eol; 'resolved',&eol; 'default'&eol; ],&eol; priority;&eol;&eol; Object.keys(params)&eol; .forEach(function (key) {&eol; if (required_params.indexOf(key) !== -1 && params[key].trim() === '') {&eol; throw 'Parameter "' + key + '" cannot be empty.';&eol; }&eol; if (key.startsWith('opsgenie_')) {&eol; media[key.substring(9)] = params[key];&eol; }&eol; });&eol;&eol; // Possible values of event_source:&eol; // 0 - Trigger, 1 - Discovery, 2 - Autoregistration, 3 - Internal.&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.';&eol; }&eol;&eol; // Check event_value for trigger-based and internal events.&eol; // Possible values: 1 for problem, 0 for recovering&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: ' + params.event_value + '\nMust be 0 or 1.';&eol; }&eol;&eol; // Check event_update_status only for trigger-based events.&eol; // Possible values: 0 - Webhook was called because of problem/recovery event, 1 - Update operation.&eol; if (params.event_source === '0' && params.event_update_status !== '0' && params.event_update_status !== '1') {&eol; throw 'Incorrect "event_update_status" parameter given: ' + params.event_update_status + '\nMust be 0 or 1.';&eol; }&eol;&eol; // Check event_id for a numeric value.&eol; if (isNaN(parseInt(params.event_id)) &pipe;&pipe; params.event_id < 1) {&eol; throw 'Incorrect "event_id" parameter given: ' + params.event_id + '\nMust be a positive number.';&eol; }&eol;&eol; if ((params.event_source === '1' &pipe;&pipe; params.event_source === '2') && params.event_value === '0') {&eol; throw 'Recovery operations are supported only for Trigger and Internal actions.';&eol; }&eol;&eol; if ([0, 1, 2, 3, 4, 5].indexOf(parseInt(params.event_nseverity)) === -1) {&eol; params.event_nseverity = '7';&eol; }&eol;&eol; if (params.event_value === '0') {&eol; params.event_nseverity = '6';&eol; }&eol;&eol; priority = params['severity_' + severities[params.event_nseverity]];&eol; params.zbxurl = params.zbxurl + (params.zbxurl.endsWith('/') ? '' : '/');&eol;&eol; Media.name = 'Opsgenie';&eol; Media.setParams(media);&eol; Media.params.token = 'GenieKey ' + Media.params.token;&eol; Media.setProxy(params.HTTPProxy);&eol; Media.setTags(params.event_tags_json); // Set Media.labels&eol;&eol; // Create an issue.&eol; // Numeric value of the event that triggered an action (1 for problem, 0 for recovering).&eol; // Numeric value of the problem update status. Possible values:&eol; // 0 - Webhook was called because of problem/recovery event, 1 - Update operation.&eol; if ((params.event_source == 0 && params.event_value == 1 && params.event_update_status == 0)&eol; &pipe;&pipe; (params.event_source == 3 && params.event_value == 1)&eol; &pipe;&pipe; params.event_source == 1 &pipe;&pipe; params.event_source == 2) {&eol; fields.message = params.alert_subject;&eol; fields.alias = params.event_id;&eol; fields.description = params.alert_message;&eol; fields.priority = priority;&eol; fields.source = 'Zabbix';&eol;&eol; if (params.event_source === '0') {&eol; fields.details = {&eol; 'Zabbix server': params.zbxurl,&eol; Problem: params.zbxurl + 'tr_events.php?triggerid=' + params.trigger_id + '&eventid=' + params.event_id&eol; };&eol; }&eol; else {&eol; fields.details = {'Zabbix server': params.zbxurl};&eol; }&eol;&eol; if (typeof params.opsgenie_teams === 'string') {&eol; responders = params.opsgenie_teams.split(',');&eol; fields.responders = responders.map(function(team) {&eol; return {type: 'team', name: team.trim()};&eol; });&eol; }&eol;&eol; fields.tags = Media.labels;&eol; if (typeof params.opsgenie_tags === 'string') {&eol; tags = params.opsgenie_tags.split(',');&eol; tags.forEach(function(item) {&eol; fields.tags.push(item.trim());&eol; });&eol; }&eol;&eol; resp = Media.request('post', '', fields);&eol; if (typeof resp.response !== 'object' &pipe;&pipe; typeof resp.response.result === 'undefined') {&eol; throw 'Cannot create ' + Media.name + ' issue. Check debug log for more information.';&eol; }&eol;&eol; if (resp.status === 202) {&eol; resp = Media.getAlertId(resp.response.requestId);&eol; if (params.event_source == 0 && params.event_value == 1 && params.event_update_status == 0) {&eol; result.tags.__zbx_ops_issuekey = resp.response.data.alertId;&eol; result.tags.__zbx_ops_issuelink = Media.params.web + 'alert/detail/' + resp.response.data.alertId;&eol; }&eol; }&eol; else {&eol; throw Media.name + ' response code is unexpected. Check debug log for more information.';&eol; }&eol; }&eol; // Update or close the created issue.&eol; else {&eol; fields.user = (params.event_value != 0) ? params.zbxuser : '';&eol; fields.note = params.alert_message;&eol; if ( [0, 3].indexOf(parseInt(params.event_source)) > -1 && params.event_value == 0 ) {&eol; // skip sending of close request from update operation(mandatory when both update & recovery operations are defined in action) &eol; method = params.event_update_status == 0 ? "close" : "skip";&eol; }&eol; else if ( params.event_source == 0 && params.event_value == 1 && params.event_update_status == 1 && params.event_update_action.includes('acknowledged')) {&eol; method = params.event_update_action.includes('unacknowledged') ? "unacknowledge" : "acknowledge";&eol; }&eol; else {&eol; method = "notes";&eol; }&eol;&eol; if (method !== "skip") {&eol; resp = Media.request('post', params.event_id + '/' + method +'?identifierType=alias', fields);&eol;&eol; if (typeof resp.response !== 'object' &pipe;&pipe; typeof resp.response.result === 'undefined') {&eol; throw 'Cannot update ' + Media.name + ' issue. Check debug log for more information.';&eol; }&eol;&eol; if (resp.status === 202) {&eol; resp = Media.getAlertId(resp.response.requestId);&eol; }&eol; else {&eol; throw Media.name + ' response code is unexpected. Check debug log for more information.';&eol; }&eol; }&eol; }&eol; return JSON.stringify(result);&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[ ' + Media.name + ' Webhook ] ERROR: ' + error);&eol; throw 'Sending failed: ' + error;&eol;}|30s |1 |1 |{EVENT.TAGS.__zbx_ops_issuelink} |Opsgenie: {EVENT.TAGS.__zbx_ops_issuekey} |Please refer to https://docs.opsgenie.com/docs/alert-api and https://www.zabbix.com/documentation/6.2/manual/config/notifications/media/webhook#example_scripts.&eol; &eol;Set global macro {$ZABBIX.URL} with your Zabbix server URL.&eol;Add dedicated user with media type "Opsgenie".&eol;Change the values of the variables opsgenie_api (https://api.opsgenie.com/v2/alerts or https://api.eu.opsgenie.com/v2/alerts),&eol;opsgenie_web (for example, https://myzabbix.app.opsgenie.com), opsgenie_token. |
ROW |7 |4 |PagerDuty | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |try {&eol;&eol; var params = JSON.parse(value),&eol; req = new HttpRequest(),&eol; fields = {},&eol; resp = '';&eol;&eol; // Correspondence between the PagerDuty and Zabbix severity level&eol; var severityMapping = [&eol; 'info', // Not classified&eol; 'info', // Information&eol; 'warning', // Warning&eol; 'warning', // Average&eol; 'error', // High&eol; 'critical' // Disaster&eol; ];&eol;&eol; if (!severityMapping[params.severity]) {&eol; params.severity = '0';&eol; }&eol;&eol; if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') {&eol; req.setProxy(params.HTTPProxy);&eol; }&eol;&eol; if (isNaN(parseInt(params.eventid)) &pipe;&pipe; params.eventid < 1) {&eol; throw 'incorrect value for variable "eventid". The value must be a positive number.';&eol; }&eol; if (params.eventname.length < 1) {&eol; throw 'incorrect value for variable "eventname". The value must be a non-empty string.';&eol; }&eol; if (isNaN(parseInt(params.severity)) &pipe;&pipe; (params.severity < 0 && params.severity > 5)) {&eol; throw 'incorrect value for variable "severity". The value must be a number 0..5.';&eol; }&eol;&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.';&eol; }&eol; // Check {EVENT.VALUE} for trigger-based and internal events.&eol; if (params.eventvalue !== '0' && params.eventvalue !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "eventvalue" parameter given: "' + params.eventvalue + '".\nMust be 0 or 1.';&eol; }&eol;&eol; if (params.event_source === '0') {&eol; if (params.hostname.length < 1) {&eol; throw 'incorrect value for variable "hostname". The value must be a non-empty string.';&eol; }&eol; if (isNaN(parseInt(params.triggerid)) &pipe;&pipe; params.triggerid < 1) {&eol; throw 'incorrect value for variable "triggerid". The value must be a positive number.';&eol; }&eol; if (params.eventack != 'Yes' && params.eventack != 'No') {&eol; throw 'incorrect value for variable "eventack". The value must be Yes or No.';&eol; }&eol; if (isNaN(parseInt(params.eventupdate)) &pipe;&pipe; (params.eventupdate < 0 &pipe;&pipe; params.eventupdate > 1)) {&eol; throw 'incorrect value for variable "eventupdate". The value must be 0 or 1.';&eol; }&eol; }&eol;&eol;&eol;&eol; req.addHeader('Content-Type: application/json');&eol;&eol; fields.routing_key = params.token;&eol; fields.dedup_key = params.eventid;&eol;&eol; if (((params.eventvalue == 1) && (params.eventupdate == 0)) &pipe;&pipe; params.event_source !== '0') {&eol; fields.event_action = 'trigger';&eol; fields.payload = {&eol; summary: params.eventname,&eol; source: (params.event_source === '1') ? 'Discovery' : params.hostname + ' : ' + params.hostip,&eol; severity: severityMapping[params.severity],&eol; };&eol; &eol; if (params.event_source === '0') {&eol; fields.payload.custom_details = {&eol; 'Event date': params.eventdate,&eol; 'Event time': params.eventtime,&eol; 'Trigger description': params.triggerdesc,&eol; 'Trigger opdata': params.triggeropdata,&eol; 'Event tags': params.eventtags,&eol; 'Event host': params.hostname,&eol; 'Event host ip': params.hostip&eol; };&eol; fields.links = [{&eol; href: params.url + '/tr_events.php?triggerid=' + params.triggerid + '&eventid=' + params.eventid,&eol; text: 'Event link'&eol; }];&eol; }&eol; else {&eol; fields.payload.custom_details = {&eol; 'Alert message': params.alert_message&eol; };&eol; }&eol;&eol; fields.client = 'Zabbix';&eol; fields.client_url = params.url;&eol; }&eol; else if ((params.eventvalue == 1) && (params.eventupdate == 1) && (params.eventack == 'Yes'))&eol; fields.event_action = 'acknowledge';&eol; else if (params.eventvalue == 0)&eol; fields.event_action = 'resolve';&eol; else&eol; throw 'incorrect values. Update message without ack will not be sent.';&eol;&eol; Zabbix.log(4, '[PagerDuty Webhook] Sending request:' + JSON.stringify(fields));&eol; resp = req.post('https://events.pagerduty.com/v2/enqueue',&eol; JSON.stringify(fields)&eol; );&eol; Zabbix.log(4, '[PagerDuty Webhook] Receiving response:' + resp);&eol;&eol; try {&eol; resp = JSON.parse(resp);&eol; }&eol; catch (error) {&eol; throw 'incorrect response. PagerDuty returned a non-JSON object.';&eol; }&eol;&eol; if (req.getStatus() != 202) {&eol; if (typeof resp === 'object' && typeof resp.errors === 'object' && typeof resp.errors[0] === 'string') {&eol; throw resp.errors[0];&eol; }&eol; else {&eol; throw 'Unknown error.';&eol; }&eol; }&eol;&eol; if (resp.status != 'success') {&eol; throw 'Unknown error.';&eol; }&eol;&eol; return 'OK';&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[PagerDuty Webhook] Notification failed : ' + error);&eol; throw 'PagerDuty notification failed : ' + error;&eol;}|30s |0 |0 | | |Please refer to https://v2.developer.pagerduty.com/docs/send-an-event-events-api-v2 and https://www.zabbix.com/documentation/6.2/manual/config/notifications/media/webhook#example_scripts.&eol; &eol;Set global macro {$ZABBIX.URL} with your Zabbix server URL.&eol;Add a dedicated user with the media type "PagerDuty" and place the integration key in the "token" parameter to integrate into the service. |
ROW |8 |4 |Pushover | | | | | | | |0 |25 |0 |0 |0 |0 | |0 |3 |10s |1 |try {&eol; var params = JSON.parse(value),&eol; request = new HttpRequest(),&eol; data,&eol; response,&eol; severities = [&eol; {name: 'not_classified', color: '#97AAB3'},&eol; {name: 'information', color: '#7499FF'},&eol; {name: 'warning', color: '#FFC859'},&eol; {name: 'average', color: '#FFA059'},&eol; {name: 'high', color: '#E97659'},&eol; {name: 'disaster', color: '#E45959'},&eol; {name: 'resolved', color: '#009900'},&eol; {name: 'default', color: '#000000'}&eol; ],&eol; priority;&eol;&eol; if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') {&eol; request.setProxy(params.HTTPProxy);&eol; }&eol;&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.';&eol; }&eol;&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: ' + params.event_value + '\nMust be 0 or 1.';&eol; }&eol;&eol; if ([0, 1, 2, 3, 4, 5].indexOf(parseInt(params.event_nseverity)) === -1) {&eol; params.event_nseverity = '7';&eol; }&eol;&eol; if (params.event_value === '0') {&eol; params.event_nseverity = '6';&eol; }&eol;&eol; priority = params['priority_' + severities[params.event_nseverity].name] &pipe;&pipe; params.priority_default;&eol;&eol; if (isNaN(priority) &pipe;&pipe; priority < -2 &pipe;&pipe; priority > 2) {&eol; throw '"priority" should be -2..2';&eol; }&eol;&eol; if (params.event_source === '0' && isNaN(params.triggerid)) {&eol; throw 'field "triggerid" is not a number';&eol; }&eol;&eol; if (isNaN(params.eventid)) {&eol; throw 'field "eventid" is not a number';&eol; }&eol;&eol; if (typeof params.message !== 'string' &pipe;&pipe; params.message.trim() === '') {&eol; throw 'field "message" cannot be empty';&eol; }&eol;&eol; data = {&eol; token: params.token,&eol; user: params.user,&eol; title: params.title,&eol; message: params.message,&eol; url: (params.event_source === '0') &eol; ? params.url + '/tr_events.php?triggerid=' + params.triggerid + '&eventid=' + params.eventid&eol; : params.url,&eol; url_title: params.url_title,&eol; priority: priority&eol; };&eol;&eol; if (priority == 2) {&eol; if (isNaN(params.retry) &pipe;&pipe; params.retry < 30) {&eol; throw 'field "retry" should be a number with value of at least 30 if "priority" is set to 2';&eol; }&eol;&eol; if (isNaN(params.expire) &pipe;&pipe; params.expire > 10800) {&eol; throw 'field "expire" should be a number with value of at most 10800 if "priority" is set to 2';&eol; }&eol;&eol; data.retry = params.retry;&eol; data.expire = params.expire;&eol; }&eol;&eol; data = JSON.stringify(data);&eol; Zabbix.log(4, '[ Pushover Webhook ] Sending request: ' + params.endpoint + '\n' + data);&eol;&eol; request.addHeader('Content-Type: application/json');&eol; response = request.post(params.endpoint, data);&eol;&eol; Zabbix.log(4, '[ Pushover Webhook ] Received response with status code ' + request.getStatus() + '\n' + response);&eol;&eol; if (response !== null) {&eol; try {&eol; response = JSON.parse(response);&eol; }&eol; catch (error) {&eol; Zabbix.log(4, '[ Pushover Webhook ] Failed to parse response received from Pushover');&eol; response = null;&eol; }&eol; }&eol;&eol; if (request.getStatus() != 200 &pipe;&pipe; response === null &pipe;&pipe; typeof response !== 'object' &pipe;&pipe; response.status !== 1) {&eol; if (response !== null && typeof response === 'object' && typeof response.errors === 'object'&eol; && typeof response.errors[0] === 'string') {&eol; throw response.errors[0];&eol; }&eol; else {&eol; throw 'Unknown error. Check debug log for more information.';&eol; }&eol; }&eol;&eol; return 'OK';&eol;}&eol;catch (error) {&eol; Zabbix.log(4, '[ Pushover Webhook ] Pushover notification failed: ' + error);&eol; throw 'Pushover notification failed: ' + error;&eol;}|30s |0 |0 | | |Please refer to setup guide here: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pushover&eol;&eol;Set token parameter with to your Pushover application key.&eol;When assigning Pushover media to the Zabbix user - add user key into send to field. |
ROW |9 |4 |Slack | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var SEVERITY_COLORS = [&eol; '#97AAB3', '#7499FF', '#FFC859',&eol; '#FFA059', '#E97659', '#E45959'&eol;];&eol;&eol;var RESOLVE_COLOR = '#009900';&eol;&eol;var SLACK_MODE_HANDLERS = {&eol; alarm: handlerAlarm,&eol; event: handlerEvent&eol;};&eol;&eol;&eol;if (!String.prototype.format) {&eol; String.prototype.format = function() {&eol; var args = arguments;&eol;&eol; return this.replace(/{(\d+)}/g, function(match, number) {&eol; return number in args&eol; ? args[number]&eol; : match&eol; ;&eol; });&eol; };&eol;}&eol;&eol;function isEventProblem(params) {&eol; return params.event_value == 1&eol; && params.event_update_status == 0&eol; ;&eol;}&eol;&eol;function isEventUpdate(params) {&eol; return params.event_value == 1&eol; && params.event_update_status == 1&eol; ;&eol;}&eol;&eol;function isEventResolve(params) {&eol; return params.event_value == 0;&eol;}&eol;&eol;function getPermalink(channelId, messageTimestamp) {&eol; var req = new HttpRequest();&eol;&eol; if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') {&eol; req.setProxy(params.HTTPProxy);&eol; }&eol;&eol; req.addHeader('Content-Type: application/x-www-form-urlencoded; charset=utf-8');&eol; req.addHeader('Authorization: Bearer ' + params.bot_token);&eol;&eol; var query = '{0}?channel={1}&message_ts={2}'.format(&eol; Slack.getPermalink,&eol; encodeURIComponent(channelId),&eol; encodeURIComponent(messageTimestamp)),&eol; resp = JSON.parse(req.get(query));&eol;&eol; if (req.getStatus() != 200 &pipe;&pipe; !resp.ok &pipe;&pipe; resp.ok === 'false') {&eol; throw 'message was created, but getting message link was failed with reason "' + resp.error + '"';&eol; }&eol;&eol; return resp.permalink;&eol;}&eol;&eol;function createProblemURL(zabbix_url, triggerid, eventid, event_source) {&eol; var problem_url = '';&eol; if (event_source === '0') {&eol; problem_url = '{0}/tr_events.php?triggerid={1}&eventid={2}'&eol; .format(&eol; zabbix_url,&eol; triggerid,&eol; eventid&eol; );&eol; }&eol; else {&eol; problem_url = zabbix_url;&eol; }&eol;&eol; return problem_url;&eol;}&eol;&eol;function handlerAlarm(params) {&eol; var fields = {&eol; channel: params.channel,&eol; as_user: params.slack_as_user,&eol; };&eol;&eol; if (isEventProblem(params)) {&eol; fields.attachments = [&eol; createMessage(&eol; SEVERITY_COLORS[params.event_nseverity] &pipe;&pipe; 0,&eol; params.event_date,&eol; params.event_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source)&eol; )&eol; ];&eol;&eol; var resp = JSON.parse(req.post(Slack.postMessage, JSON.stringify(fields)));&eol;&eol; if (req.getStatus() != 200 &pipe;&pipe; !resp.ok &pipe;&pipe; resp.ok === 'false') {&eol; throw resp.error;&eol; }&eol;&eol; result.tags = {&eol; ['__message_ts_' + params.channel]: resp.ts,&eol; ['__channel_id_' + params.channel]: resp.channel,&eol; ['__message_link_' + params.channel]: getPermalink(resp.channel, resp.ts),&eol; };&eol;&eol; }&eol; else if (isEventUpdate(params)) {&eol; try {&eol; var channel_event_tags = JSON.parse(params.event_tags);&eol; } catch (error) {&eol; throw 'Cannot process event tags: ' + error;&eol; }&eol;&eol; if (Array.isArray(channel_event_tags)) {&eol; for (i in channel_event_tags) {&eol; if (channel_event_tags[i].tag.includes('__message_ts_' + params.channel)) {&eol; fields.thread_ts = channel_event_tags[i].value;&eol; break;&eol; }&eol; }&eol; }&eol;&eol; fields.attachments = [&eol; createMessage(&eol; SEVERITY_COLORS[params.event_nseverity] &pipe;&pipe; 0,&eol; params.event_update_date,&eol; params.event_update_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source),&eol; true&eol; )&eol; ];&eol;&eol; resp = JSON.parse(req.post(Slack.postMessage, JSON.stringify(fields)));&eol;&eol; if (req.getStatus() != 200 &pipe;&pipe; !resp.ok &pipe;&pipe; resp.ok === 'false') {&eol; throw resp.error;&eol; }&eol;&eol; }&eol; else if (isEventResolve(params)) {&eol;&eol; fields.text = '';&eol;&eol; try {&eol; var channel_event_tags = JSON.parse(params.event_tags);&eol; } catch (error) {&eol; throw 'Cannot process event tags: ' + error;&eol; }&eol;&eol; if (Array.isArray(channel_event_tags)) {&eol; for (i in channel_event_tags) {&eol; if (channel_event_tags[i].tag.includes('__channel_id_' + params.channel)) {&eol; fields.channel = channel_event_tags[i].value;&eol; continue;&eol; }&eol; if (channel_event_tags[i].tag.includes('__message_ts_' + params.channel)) {&eol; fields.ts = channel_event_tags[i].value;&eol; }&eol; }&eol; }&eol;&eol; fields.attachments = [&eol; createMessage(&eol; RESOLVE_COLOR,&eol; params.event_date,&eol; params.event_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source)&eol; )&eol; ];&eol;&eol; resp = JSON.parse(req.post(Slack.chatUpdate, JSON.stringify(fields)));&eol; if (req.getStatus() != 200 &pipe;&pipe; !resp.ok &pipe;&pipe; resp.ok === 'false') {&eol; throw resp.error;&eol; }&eol; }&eol;}&eol;&eol;function handlerEvent(params) {&eol; var fields = {&eol; channel: params.channel,&eol; as_user: params.slack_as_user&eol; };&eol;&eol; if (isEventProblem(params)) {&eol; fields.attachments = [&eol; createMessage(&eol; SEVERITY_COLORS[params.event_nseverity] &pipe;&pipe; 0,&eol; params.event_date,&eol; params.event_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source)&eol; )&eol; ];&eol;&eol; var resp = JSON.parse(req.post(Slack.postMessage, JSON.stringify(fields)));&eol;&eol; if (req.getStatus() != 200 &pipe;&pipe; !resp.ok &pipe;&pipe; resp.ok === 'false') {&eol; throw resp.error;&eol; }&eol;&eol; result.tags = {&eol; ['__message_link_' + params.channel]: getPermalink(resp.channel, resp.ts)&eol; }&eol;&eol; }&eol; else if (isEventUpdate(params)) {&eol; fields.attachments = [&eol; createMessage(&eol; SEVERITY_COLORS[params.event_nseverity] &pipe;&pipe; 0,&eol; params.event_update_date,&eol; params.event_update_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source),&eol; false&eol; )&eol; ];&eol;&eol; resp = JSON.parse(req.post(Slack.postMessage, JSON.stringify(fields)));&eol;&eol; if (req.getStatus() != 200 &pipe;&pipe; !resp.ok &pipe;&pipe; resp.ok === 'false') {&eol; throw resp.error;&eol; }&eol;&eol; }&eol; else if (isEventResolve(params)) {&eol; fields.attachments = [&eol; createMessage(&eol; RESOLVE_COLOR,&eol; params.event_recovery_date,&eol; params.event_recovery_time,&eol; createProblemURL(params.zabbix_url, params.trigger_id, params.event_id, params.event_source)&eol; )&eol; ];&eol;&eol; resp = JSON.parse(req.post(Slack.postMessage, JSON.stringify(fields)));&eol;&eol; if (req.getStatus() != 200 &pipe;&pipe; !resp.ok &pipe;&pipe; resp.ok === 'false') {&eol; throw resp.error;&eol; }&eol; }&eol;}&eol;&eol;function createMessage(&eol; event_severity_color,&eol; event_date,&eol; event_time,&eol; problem_url,&eol; isShort,&eol; messageText&eol;) {&eol; var message = {&eol; fallback: params.alert_subject,&eol; title: params.alert_subject,&eol; color: event_severity_color,&eol; title_link: problem_url,&eol; pretext: messageText &pipe;&pipe; '',&eol;&eol; fields: [&eol; {&eol; title: 'Host',&eol; value: '{0} [{1}]'.format(params.host_name, params.host_conn),&eol; short: true&eol; },&eol; {&eol; title: 'Event time',&eol; value: '{0} {1}'.format(event_date, event_time),&eol; short: true&eol; }&eol; ],&eol; };&eol;&eol; if (params.event_source === '0') {&eol; message.fields.push(&eol; {&eol; title: 'Severity',&eol; value: params.event_severity,&eol; short: true&eol; },&eol; {&eol; title: 'Opdata',&eol; value: params.event_opdata,&eol; short: true&eol; }&eol; );&eol; }&eol;&eol; if (!isShort && params.event_source === '0') {&eol; message['actions'] = [&eol; {&eol; type: 'button',&eol; text: 'Open in Zabbix',&eol; url: problem_url&eol; }&eol; ];&eol;&eol; message.fields.push(&eol; {&eol; title: 'Event tags',&eol; value: JSON.parse(params.event_tags).filter(function (e) { return !e.tag.includes('__') }).map(function (e) { return e.tag + ': ' + e.value }).join('\n') &pipe;&pipe; 'None',&eol; short: true&eol; },&eol; {&eol; title: 'Trigger description',&eol; value: params.trigger_description,&eol; short: true&eol; }&eol; );&eol; }&eol;&eol; if (params.event_source !== '0' &pipe;&pipe; params.event_update_status === '1') {&eol; message.fields.push(&eol; {&eol; title: 'Details',&eol; value: params.alert_message,&eol; short: false&eol; }&eol; );&eol; }&eol;&eol; return message;&eol;}&eol;&eol;function validateParams(params) {&eol; if (typeof params.bot_token !== 'string' &pipe;&pipe; params.bot_token.trim() === '') {&eol; throw 'Field "bot_token" cannot be empty';&eol; }&eol;&eol; if (typeof params.channel !== 'string' &pipe;&pipe; params.channel.trim() === '') {&eol; throw 'Field "channel" cannot be empty';&eol; }&eol;&eol; if (isNaN(params.event_id)) {&eol; throw 'Field "event_id" is not a number';&eol; }&eol;&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.';&eol; }&eol;&eol; if (params.event_source !== '0') {&eol; params.event_nseverity = '0';&eol; params.event_severity = 'Not classified';&eol; params.event_update_status = '0';&eol; params.slack_mode = 'event';&eol; }&eol;&eol; if (params.event_source === '1' &pipe;&pipe; params.event_source === '2') {&eol; params.event_value = '1';&eol; }&eol;&eol; if (params.event_source === '1') {&eol; params.host_name = params.discovery_host_dns;&eol; params.host_ip = params.discovery_host_ip;&eol; }&eol;&eol; if (!~[0, 1, 2, 3, 4, 5].indexOf(parseInt(params.event_nseverity))) {&eol; throw 'Incorrect "event_nseverity" parameter given: ' + params.event_nseverity + '\nMust be 0-5.';&eol; }&eol;&eol; if (typeof params.event_severity !== 'string' &pipe;&pipe; params.event_severity.trim() === '') {&eol; throw 'Field "event_severity" cannot be empty';&eol; }&eol;&eol; if (params.event_update_status !== '0' && params.event_update_status !== '1') {&eol; throw 'Incorrect "event_update_status" parameter given: ' + params.event_update_status + '\nMust be 0 or 1.';&eol; }&eol;&eol; if (params.event_value !== '0' && params.event_value !== '1') {&eol; throw 'Incorrect "event_value" parameter given: ' + params.event_value + '\nMust be 0 or 1.';&eol; }&eol;&eol; if (typeof params.host_conn !== 'string' &pipe;&pipe; params.host_conn.trim() === '') {&eol; throw 'Field "host_conn" cannot be empty';&eol; }&eol;&eol; if (typeof params.host_name !== 'string' &pipe;&pipe; params.host_name.trim() === '') {&eol; throw 'Field "host_name" cannot be empty';&eol; }&eol;&eol; if (!~['true', 'false'].indexOf(params.slack_as_user.toLowerCase())) {&eol; throw 'Incorrect "slack_as_user" parameter given: ' + params.slack_as_user + '\nMust be "true" or "false".';&eol; }&eol;&eol; if (!~['alarm', 'event'].indexOf(params.slack_mode)) {&eol; throw 'Incorrect "slack_mode" parameter given: ' + params.slack_mode + '\nMust be "alarm" or "event".';&eol; }&eol;&eol; if (isNaN(params.trigger_id) && params.event_source === '0') {&eol; throw 'field "trigger_id" is not a number';&eol; }&eol;&eol; if (typeof params.zabbix_url !== 'string' &pipe;&pipe; params.zabbix_url.trim() === '') {&eol; throw 'Field "zabbix_url" cannot be empty';&eol; }&eol;&eol; if (!/^(http&pipe;https):\/\/.+/.test(params.zabbix_url)) {&eol; throw 'Field "zabbix_url" must contain a schema';&eol; }&eol;}&eol;&eol;try {&eol; var params = JSON.parse(value);&eol;&eol; validateParams(params);&eol;&eol; var req = new HttpRequest(),&eol; result = {tags: {}};&eol;&eol; if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') {&eol; req.setProxy(params.HTTPProxy);&eol; }&eol;&eol; req.addHeader('Content-Type: application/json; charset=utf-8');&eol; req.addHeader('Authorization: Bearer ' + params.bot_token);&eol;&eol; var slack_endpoint = 'https://slack.com/api/';&eol;&eol; var Slack = {&eol; postMessage: slack_endpoint + 'chat.postMessage',&eol; getPermalink: slack_endpoint + 'chat.getPermalink',&eol; chatUpdate: slack_endpoint + 'chat.update'&eol; };&eol;&eol; params.slack_mode = params.slack_mode.toLowerCase();&eol; params.slack_mode = params.slack_mode in SLACK_MODE_HANDLERS&eol; ? params.slack_mode&eol; : 'alarm';&eol;&eol; SLACK_MODE_HANDLERS[params.slack_mode](params);&eol;&eol; if (params.event_source === '0') {&eol; return JSON.stringify(result);&eol; }&eol; else {&eol; return 'OK';&eol; }&eol;}&eol;catch (error) {&eol; Zabbix.log(4, '[ Slack Webhook ] Slack notification failed : ' + error);&eol; throw 'Slack notification failed : ' + error;&eol;}|30s |1 |0 | | | |
-ROW |10 |4 |Discord | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var SEVERITY_COLORS = [&eol; '#97AAB3', // Not classified.&eol; '#7499FF', // Information.&eol; '#FFC859', // Warning.&eol; '#FFA059', // Average.&eol; '#E97659', // High.&eol; '#E45959', // Disaster.&eol; '#009900' // Resolved.&eol;];&eol;&eol;function stringTruncate(str, len) {&eol; return str.length > len ? str.substring(0, len - 3) + '...' : str;&eol;}&eol;&eol;try {&eol; Zabbix.log(4, '[ Discord Webhook ] Executed with params: ' + value);&eol;&eol; var params = JSON.parse(value);&eol;&eol; if (!params.discord_endpoint) {&eol; throw 'Cannot get discord_endpoint';&eol; }&eol; else {&eol; params.discord_endpoint = params.discord_endpoint.replace('/api/', '/api/v7/') + '?wait=True';&eol; }&eol;&eol; params.zabbix_url = (params.zabbix_url.endsWith('/'))&eol; ? params.zabbix_url.slice(0, -1) : params.zabbix_url;&eol;&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.';&eol; }&eol;&eol; // Set params to true for non trigger-based events.&eol; if (params.event_source !== '0') {&eol; params.use_default_message = 'true';&eol; params.event_nseverity = '0';&eol; }&eol;&eol; // Check {EVENT.VALUE} for trigger-based and internal events.&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: "' + params.event_value + '".\nMust be 0 or 1.';&eol; }&eol;&eol; // Check {EVENT.UPDATE.STATUS} only for trigger-based events.&eol; if (params.event_update_status !== '0' && params.event_update_status !== '1' && params.event_source === '0') {&eol; throw 'Incorrect "event_update_status" parameter given: "' + params.event_update_status + '".\nMust be 0 or 1.';&eol; }&eol;&eol; if (params.event_value == 0) {&eol; params.event_nseverity = '6';&eol; }&eol;&eol; if (!SEVERITY_COLORS[params.event_nseverity]) {&eol; throw 'Incorrect "event_nseverity" parameter given: ' + params.event_nseverity + '\nMust be 0-5.';&eol; }&eol;&eol; var color = parseInt(SEVERITY_COLORS[params.event_nseverity].replace('#', ''), 16),&eol; fields = [],&eol; body = {&eol; embeds: [&eol; {&eol; color: color &pipe;&pipe; 0,&eol; url: (params.event_source === '0')&eol; ? params.zabbix_url + '/tr_events.php?triggerid=' + params.trigger_id +&eol; '&eventid=' + params.event_id&eol; : params.zabbix_url&eol; }&eol; ]&eol; };&eol;&eol; // Default message from {ALERT.MESSAGE}.&eol; if (params.use_default_message.toLowerCase() == 'true') {&eol; body.embeds[0].title = stringTruncate(params.alert_subject, 256);&eol; body.embeds[0].description = stringTruncate(params.alert_message, 2048);&eol; }&eol; else {&eol; fields.push(&eol; {&eol; name: 'Host',&eol; value: params.host_name + ' [' + params.host_ip + ']'&eol; }&eol; );&eol;&eol; // Resolved message.&eol; if (params.event_value == 0 && params.event_update_status == 0) {&eol; body.embeds[0].title = stringTruncate('OK: ' + params.event_name, 256);&eol; fields.push(&eol; {&eol; name: 'Recovery time',&eol; value: params.event_recovery_time + ' ' + params.event_recovery_date,&eol; inline: 'True'&eol; }&eol; );&eol; }&eol;&eol; // Problem message.&eol; else if (params.event_value == 1 && params.event_update_status == 0) {&eol; body.embeds[0].title = stringTruncate('PROBLEM: ' + params.event_name, 256);&eol; fields.push(&eol; {&eol; name: 'Event time',&eol; value: params.event_time + ' ' + params.event_date,&eol; inline: 'True'&eol; }&eol; );&eol; }&eol;&eol; // Update message.&eol; else if (params.event_update_status == 1) {&eol; body.embeds[0].title = stringTruncate('UPDATE: ' + params.event_name, 256);&eol; body.embeds[0].description = params.event_update_user + ' ' + params.event_update_action + '.';&eol;&eol; if (params.event_update_message) {&eol; body.embeds[0].description += ' Comment:\n>>> ' + params.event_update_message;&eol; }&eol;&eol; body.embeds[0].description = stringTruncate(body.embeds[0].description, 2048);&eol;&eol; fields.push(&eol; {&eol; name: 'Event update time',&eol; value: params.event_update_time + ' ' + params.event_update_date,&eol; inline: 'True'&eol; }&eol; );&eol; }&eol;&eol; fields.push(&eol; {&eol; name: 'Severity',&eol; value: params.event_severity,&eol; inline: 'True'&eol; }&eol; );&eol;&eol; if (params.event_opdata) {&eol; fields.push(&eol; {&eol; name: 'Operational data',&eol; value: stringTruncate(params.event_opdata, 1024),&eol; inline: 'True'&eol; }&eol; );&eol; }&eol;&eol; if (params.event_value == 1 && params.event_update_status == 0 && params.trigger_description) {&eol; fields.push(&eol; {&eol; name: 'Trigger description',&eol; value: stringTruncate(params.trigger_description, 1024)&eol; }&eol; );&eol; }&eol;&eol; body.embeds[0].footer = {&eol; text: 'Event ID: ' + params.event_id&eol; };&eol;&eol; if (params.event_tags) {&eol; body.embeds[0].footer.text += '\nEvent tags: ' + params.event_tags;&eol; }&eol; body.embeds[0].footer.text = stringTruncate(body.embeds[0].footer.text, 2048);&eol; }&eol;&eol; if (fields.length > 0) {&eol; body.embeds[0].fields = fields;&eol; }&eol;&eol; var req = new HttpRequest();&eol;&eol; if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') {&eol; req.setProxy(params.HTTPProxy);&eol; }&eol;&eol; req.addHeader('Content-Type: application/json');&eol;&eol; var resp = req.post(params.discord_endpoint, JSON.stringify(body)),&eol; data = JSON.parse(resp);&eol;&eol; Zabbix.log(4, '[ Discord Webhook ] JSON: ' + JSON.stringify(body));&eol; Zabbix.log(4, '[ Discord Webhook ] Response: ' + resp);&eol;&eol; if (data.id) {&eol; return resp;&eol; }&eol; else {&eol; var message = ((typeof data.message === 'string') ? data.message : 'Unknown error');&eol;&eol; Zabbix.log(3, '[ Discord Webhook ] FAILED with response: ' + resp);&eol; throw message + '. For more details check zabbix server log.';&eol; }&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[ Discord Webhook ] ERROR: ' + error);&eol; throw 'Sending failed: ' + error;&eol;}|30s |0 |0 | | | |
+ROW |10 |4 |Discord | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var SEVERITY_COLORS = [&eol; '#97AAB3', // Not classified.&eol; '#7499FF', // Information.&eol; '#FFC859', // Warning.&eol; '#FFA059', // Average.&eol; '#E97659', // High.&eol; '#E45959', // Disaster.&eol; '#009900' // Resolved.&eol;];&eol;&eol;function stringTruncate(str, len) {&eol; return str.length > len ? str.substring(0, len - 3) + '...' : str;&eol;}&eol;&eol;try {&eol; Zabbix.log(4, '[ Discord Webhook ] Executed with params: ' + value);&eol;&eol; var params = JSON.parse(value);&eol;&eol; if (!params.discord_endpoint) {&eol; throw 'Cannot get discord_endpoint';&eol; }&eol; else {&eol; params.discord_endpoint = params.discord_endpoint.replace('/api/', '/api/v7/') + '?wait=True';&eol; }&eol;&eol; params.zabbix_url = (params.zabbix_url.endsWith('/'))&eol; ? params.zabbix_url.slice(0, -1) : params.zabbix_url;&eol;&eol; if ([0, 1, 2, 3, 4].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-4.';&eol; }&eol;&eol; // Set params to true for non trigger-based events.&eol; if (params.event_source !== '0') {&eol; params.use_default_message = 'true';&eol; params.event_nseverity = '0';&eol; }&eol;&eol; // Check {EVENT.VALUE} for trigger-based and internal events.&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: "' + params.event_value + '".\nMust be 0 or 1.';&eol; }&eol;&eol; // Check {EVENT.UPDATE.STATUS} only for trigger-based events.&eol; if (params.event_update_status !== '0' && params.event_update_status !== '1' && params.event_source === '0') {&eol; throw 'Incorrect "event_update_status" parameter given: "' + params.event_update_status + '".\nMust be 0 or 1.';&eol; }&eol;&eol; if (params.event_value == 0) {&eol; params.event_nseverity = '6';&eol; }&eol;&eol; if (!SEVERITY_COLORS[params.event_nseverity]) {&eol; throw 'Incorrect "event_nseverity" parameter given: ' + params.event_nseverity + '\nMust be 0-5.';&eol; }&eol;&eol; var color = parseInt(SEVERITY_COLORS[params.event_nseverity].replace('#', ''), 16),&eol; fields = [],&eol; body = {&eol; embeds: [&eol; {&eol; color: color &pipe;&pipe; 0,&eol; url: (params.event_source === '0')&eol; ? params.zabbix_url + '/tr_events.php?triggerid=' + params.trigger_id +&eol; '&eventid=' + params.event_id&eol; : params.zabbix_url&eol; }&eol; ]&eol; };&eol;&eol; // Default message from {ALERT.MESSAGE}.&eol; if (params.use_default_message.toLowerCase() == 'true') {&eol; body.embeds[0].title = stringTruncate(params.alert_subject, 256);&eol; body.embeds[0].description = stringTruncate(params.alert_message, 2048);&eol; }&eol; else {&eol; fields.push(&eol; {&eol; name: 'Host',&eol; value: params.host_name + ' [' + params.host_ip + ']'&eol; }&eol; );&eol;&eol; // Resolved message.&eol; if (params.event_value == 0 && params.event_update_status == 0) {&eol; body.embeds[0].title = stringTruncate('OK: ' + params.event_name, 256);&eol; fields.push(&eol; {&eol; name: 'Recovery time',&eol; value: params.event_recovery_time + ' ' + params.event_recovery_date,&eol; inline: 'True'&eol; }&eol; );&eol; }&eol;&eol; // Problem message.&eol; else if (params.event_value == 1 && params.event_update_status == 0) {&eol; body.embeds[0].title = stringTruncate('PROBLEM: ' + params.event_name, 256);&eol; fields.push(&eol; {&eol; name: 'Event time',&eol; value: params.event_time + ' ' + params.event_date,&eol; inline: 'True'&eol; }&eol; );&eol; }&eol;&eol; // Update message.&eol; else if (params.event_update_status == 1) {&eol; body.embeds[0].title = stringTruncate('UPDATE: ' + params.event_name, 256);&eol; body.embeds[0].description = params.event_update_user + ' ' + params.event_update_action + '.';&eol;&eol; if (params.event_update_message) {&eol; body.embeds[0].description += ' Comment:\n>>> ' + params.event_update_message;&eol; }&eol;&eol; body.embeds[0].description = stringTruncate(body.embeds[0].description, 2048);&eol;&eol; fields.push(&eol; {&eol; name: 'Event update time',&eol; value: params.event_update_time + ' ' + params.event_update_date,&eol; inline: 'True'&eol; }&eol; );&eol; }&eol;&eol; fields.push(&eol; {&eol; name: 'Severity',&eol; value: params.event_severity,&eol; inline: 'True'&eol; }&eol; );&eol;&eol; if (params.event_opdata) {&eol; fields.push(&eol; {&eol; name: 'Operational data',&eol; value: stringTruncate(params.event_opdata, 1024),&eol; inline: 'True'&eol; }&eol; );&eol; }&eol;&eol; if (params.event_value == 1 && params.event_update_status == 0 && params.trigger_description) {&eol; fields.push(&eol; {&eol; name: 'Trigger description',&eol; value: stringTruncate(params.trigger_description, 1024)&eol; }&eol; );&eol; }&eol;&eol; body.embeds[0].footer = {&eol; text: 'Event ID: ' + params.event_id&eol; };&eol;&eol; if (params.event_tags) {&eol; body.embeds[0].footer.text += '\nEvent tags: ' + params.event_tags;&eol; }&eol; body.embeds[0].footer.text = stringTruncate(body.embeds[0].footer.text, 2048);&eol; }&eol;&eol; if (fields.length > 0) {&eol; body.embeds[0].fields = fields;&eol; }&eol;&eol; var req = new HttpRequest();&eol;&eol; if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') {&eol; req.setProxy(params.HTTPProxy);&eol; }&eol;&eol; req.addHeader('Content-Type: application/json');&eol;&eol; var resp = req.post(params.discord_endpoint, JSON.stringify(body)),&eol; data = JSON.parse(resp);&eol;&eol; Zabbix.log(4, '[ Discord Webhook ] JSON: ' + JSON.stringify(body));&eol; Zabbix.log(4, '[ Discord Webhook ] Response: ' + resp);&eol;&eol; if (data.id) {&eol; return resp;&eol; }&eol; else {&eol; var message = ((typeof data.message === 'string') ? data.message : 'Unknown error');&eol;&eol; Zabbix.log(3, '[ Discord Webhook ] FAILED with response: ' + resp);&eol; throw message + '. For more details check zabbix server log.';&eol; }&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[ Discord Webhook ] ERROR: ' + error);&eol; throw 'Sending failed: ' + error;&eol;}|30s |0 |0 | | | |
ROW |11 |4 |SIGNL4 | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |// SIGNL4 Webhook&eol;try {&eol; var response,&eol; payload,&eol; params = JSON.parse(value),&eol; endpoint = 'https://connect.signl4.com/webhook/',&eol; request = new HttpRequest();&eol;&eol; if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') {&eol; request.setProxy(params.HTTPProxy);&eol; }&eol;&eol; if (typeof params.teamsecret === 'string' && params.teamsecret.trim() !== '') {&eol; endpoint += params.teamsecret;&eol; delete params.teamsecret;&eol; }&eol; else {&eol; throw 'The team secret of your SIGNL4 team cannot be empty.';&eol; }&eol;&eol; if (typeof params.Severity === 'string' && params.Severity === '{EVENT.SEVERITY}') {&eol; params.Severity = 'Not classified';&eol; }&eol;&eol; if (typeof params.User === 'string' && params.User === '{USER.FULLNAME}') {&eol; params.User = '';&eol; }&eol;&eol; if (typeof params.Event_Update_Action === 'string' && params.Event_Update_Action === '{EVENT.UPDATE.ACTION}') {&eol; params.Event_Update_Action = '';&eol; }&eol;&eol; // Assemble X-S4-ExternalID for two-way integration&eol; // Format: "ZabbixEventID: 222 ZabbixURL: https://your-zabbix-server/zabbix/"&eol; params['X-S4-ExternalID'] = 'ZabbixEventID: ' + params.Event_ID;&eol; if (typeof params.Zabbix_URL === 'string' && params.Zabbix_URL.indexOf('http') == 0) {&eol; // Make sure the URL ends with '/'&eol; if (params.Zabbix_URL.charAt(params.Zabbix_URL.length - 1) != '/') {&eol; params.Zabbix_URL = params.Zabbix_URL + '/';&eol; }&eol;&eol; params['X-S4-ExternalID'] = params['X-S4-ExternalID'] + ' ZabbixURL: ' + params.Zabbix_URL;&eol;&eol; // Add Link parameter&eol; params['Link'] = params.Zabbix_URL + "tr_events.php?triggerid="+params.Trigger_ID + "&eventid=" + params.Event_ID;&eol; }&eol;&eol; // Check if this is a new problem or a recovery&eol; if (params.Trigger_Status == 'OK') {&eol; params['X-S4-Status'] = 'resolved';&eol; }&eol; else {&eol; params['X-S4-Status'] = 'new';&eol; }&eol;&eol; payload = JSON.stringify(params);&eol; Zabbix.log(4, '[ SIGNL4 Webhook ] Sending request: ' + payload);&eol;&eol; request.addHeader('Content-Type: application/json');&eol; response = request.post(endpoint, 'payload=' + payload);&eol;&eol; Zabbix.log(4, '[ SIGNL4 Webhook ] Received response with status code ' +&eol; request.getStatus() + '\n' + response&eol; );&eol;&eol; if (request.getStatus() !== 201) {&eol; throw 'Request failed with status code ' + request.getStatus() +&eol; '. Check debug log for more information.';&eol; }&eol;&eol; return 'OK';&eol;}&eol;catch (error) {&eol; Zabbix.log(4, '[ SIGNL4 Webhook ] ERROR: ' + error);&eol;&eol; throw 'Sending failed: ' + error;&eol;}|30s |0 |0 | | |SIGNL4 is a mobile alert notification app for powerful alerting, alert management and mobile assignment of work items. It offers alerting via app push, SMS and voice calls including escalations, tracking, and duty scheduling.&eol;&eol;Get the app at https://www.signl4.com.&eol;&eol;Find out more including an integration video here: https://www.signl4.com/blog/portfolio_item/zabbix-mobile-alert-notification-duty-schedule-escalation/ |
ROW |12 |4 |Jira | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var Jira = {&eol; params: {},&eol;&eol; setParams: function (params) {&eol; if (typeof params !== 'object') {&eol; return;&eol; }&eol;&eol; Jira.params = params;&eol; if (typeof Jira.params.url === 'string') {&eol; if (!Jira.params.url.endsWith('/')) {&eol; Jira.params.url += '/';&eol; }&eol;&eol; Jira.params.url += 'rest/api/latest/';&eol; }&eol; },&eol;&eol; setProxy: function (HTTPProxy) {&eol; Jira.HTTPProxy = HTTPProxy;&eol; },&eol;&eol; setTags: function(event_tags_json) {&eol; if (typeof event_tags_json !== 'undefined' && event_tags_json !== ''&eol; && event_tags_json !== '{EVENT.TAGSJSON}') {&eol; try {&eol; var tags = JSON.parse(event_tags_json),&eol; label;&eol;&eol; Jira.labels = [];&eol;&eol; tags.forEach(function (tag) {&eol; if (typeof tag.tag !== 'undefined' && typeof tag.value !== 'undefined'&eol; && !tag.tag.startsWith('__zbx')) {&eol; label = (tag.tag + (tag.value ? (':' + tag.value) : '')).replace(/\s/g, '_');&eol; if (label.length < 256) {&eol; Jira.labels.push(label);&eol; }&eol; }&eol; });&eol; }&eol; catch (error) {&eol; // Code is not missing here.&eol; }&eol; }&eol; },&eol;&eol; escapeMarkup: function (str) {&eol; var length = str.length,&eol; result = '',&eol; markup = ['{', '&pipe;', '}', '~', '_', '\\', '[', ']', '^', '<', '>', '?', '!', '#', '+', '*', '&'];&eol;&eol; for (var i = 0; i < length; i++) {&eol; var char = str[i];&eol;&eol; result += (markup.indexOf(char) !== -1) ? ('&#' + str[i].charCodeAt() + ';') : char;&eol; }&eol;&eol; return result;&eol; },&eol;&eol; addCustomFields: function (data, fields) {&eol; if (typeof fields === 'object' && Object.keys(fields).length) {&eol; var schema = Jira.getSchema(),&eol; path = ['projects', 0, 'issuetypes', 0, 'fields'],&eol; field;&eol;&eol; while ((field = path.shift()) !== undefined) {&eol; schema = schema[field];&eol; if (typeof schema === 'undefined') {&eol; schema = null;&eol; break;&eol; }&eol; }&eol;&eol; if (schema) {&eol; Object.keys(fields)&eol; .forEach(function(field) {&eol; if (typeof schema[field] === 'object' && typeof schema[field].schema === 'object') {&eol; switch (schema[field].schema.type) {&eol; case 'number':&eol; data.fields[field] = parseInt(fields[field]);&eol; break;&eol;&eol; case 'datetime':&eol; if (fields[field].match(/\d+[.-]\d+[.-]\d+T\d+:\d+:\d+/) !== null) {&eol; data.fields[field] = fields[field].replace(/\./g, '-');&eol; }&eol; break;&eol;&eol; case 'option':&eol; data.fields[field] = {value: fields[field]};&eol; break;&eol;&eol; case 'array':&eol; if (schema[field].schema.items === 'option') {&eol; data.fields[field] = [{value: fields[field]}];&eol; }&eol; else {&eol; data.fields[field] = [fields[field]];&eol; }&eol; break;&eol;&eol; default:&eol; data.fields[field] = fields[field];&eol; }&eol; }&eol; });&eol; }&eol; else {&eol; Zabbix.log(4, '[ Jira Webhook ] Failed to retrieve field schema.');&eol; }&eol; }&eol;&eol; return data;&eol; },&eol;&eol; request: function (method, query, data) {&eol; ['url', 'user', 'password', 'project_key', 'issue_type'].forEach(function (field) {&eol; if (typeof Jira.params !== 'object' &pipe;&pipe; typeof Jira.params[field] === 'undefined'&eol; &pipe;&pipe; Jira.params[field] === '' ) {&eol; throw 'Required Jira param is not set: "' + field + '".';&eol; }&eol; });&eol;&eol; var response,&eol; url = Jira.params.url + query,&eol; request = new HttpRequest();&eol;&eol; request.addHeader('Content-Type: application/json');&eol; request.addHeader('Authorization: Basic ' + btoa(Jira.params.user + ':' + Jira.params.password));&eol;&eol; if (typeof Jira.HTTPProxy !== 'undefined' && Jira.HTTPProxy !== '') {&eol; request.setProxy(Jira.HTTPProxy);&eol; }&eol;&eol; if (typeof data !== 'undefined') {&eol; data = JSON.stringify(data);&eol; }&eol;&eol; Zabbix.log(4, '[ Jira Webhook ] Sending request: ' + url + ((typeof data === 'string') ? ('\n' + data) : ''));&eol;&eol; switch (method) {&eol; case 'get':&eol; response = request.get(url, data);&eol; break;&eol;&eol; case 'post':&eol; response = request.post(url, data);&eol; break;&eol;&eol; case 'put':&eol; response = request.put(url, data);&eol; break;&eol;&eol; default:&eol; throw 'Unsupported HTTP request method: ' + method;&eol; }&eol;&eol; Zabbix.log(4, '[ Jira Webhook ] Received response with status code ' + request.getStatus() + '\n' + response);&eol;&eol; if (response !== null) {&eol; try {&eol; response = JSON.parse(response);&eol; }&eol; catch (error) {&eol; Zabbix.log(4, '[ Jira Webhook ] Failed to parse response received from Jira');&eol; response = null;&eol; }&eol; }&eol;&eol; if (request.getStatus() < 200 &pipe;&pipe; request.getStatus() >= 300) {&eol; var message = 'Request failed with status code ' + request.getStatus();&eol;&eol; if (response !== null && typeof response.errors !== 'undefined'&eol; && Object.keys(response.errors).length > 0) {&eol; message += ': ' + JSON.stringify(response.errors);&eol; }&eol; else if (response !== null && typeof response.errorMessages !== 'undefined'&eol; && Object.keys(response.errorMessages).length > 0) {&eol; message += ': ' + JSON.stringify(response.errorMessages);&eol; }&eol;&eol; throw message + ' Check debug log for more information.';&eol; }&eol;&eol; return {&eol; status: request.getStatus(),&eol; response: response&eol; };&eol; },&eol;&eol; getSchema: function() {&eol; var result = Jira.request('get', 'issue/createmeta?expand=projects.issuetypes.fields&projectKeys=' +&eol; encodeURIComponent(Jira.params.project_key) + '&issuetypeNames=' +&eol; encodeURIComponent(Jira.params.issue_type));&eol;&eol; return result.response;&eol; },&eol;&eol; createIssue: function(summary, description, fields) {&eol; var data = {&eol; fields: {&eol; project: {&eol; key: Jira.params.project_key&eol; },&eol; issuetype: {&eol; name: Jira.params.issue_type&eol; },&eol; summary: summary,&eol; description: description&eol; }&eol; };&eol;&eol; if (Jira.labels && Jira.labels.length > 0) {&eol; data.fields.labels = Jira.labels;&eol; }&eol; var result = Jira.request('post', 'issue', Jira.addCustomFields(data, fields));&eol;&eol; if (typeof result.response !== 'object' &pipe;&pipe; typeof result.response.key === 'undefined') {&eol; throw 'Cannot create Jira issue. Check debug log for more information.';&eol; }&eol;&eol; return result.response.key;&eol; },&eol;&eol; updateIssue: function(summary, fields, update) {&eol; var data = {fields: {}};&eol;&eol; if (summary) {&eol; data.fields.summary = summary;&eol; }&eol;&eol; Jira.request('put', 'issue/' + encodeURIComponent(Jira.params.issue_key), Jira.addCustomFields(data, fields));&eol; Jira.commentIssue(update);&eol; },&eol;&eol; commentIssue: function(update) {&eol; var data = {};&eol;&eol; if (typeof update === 'string') {&eol; data.body = update;&eol; Jira.request('post', 'issue/' + encodeURIComponent(Jira.params.issue_key) + '/comment', data);&eol; }&eol; else if (update.status === '1') {&eol; data.body = update.user + ' ' + update.action + '.';&eol;&eol; if (update.message) {&eol; data.body += '\nMessage: {quote}' + Jira.escapeMarkup(update.message) + '{quote}';&eol; }&eol;&eol; Jira.request('post', 'issue/' + encodeURIComponent(Jira.params.issue_key) + '/comment', data);&eol; }&eol; }&eol;};&eol;&eol;try {&eol; var params = JSON.parse(value),&eol; fields = {},&eol; jira = {},&eol; update = {},&eol; result = {tags: {}},&eol; required_params = ['alert_subject', 'summary', 'event_recovery_value', 'event_source', 'event_value'];&eol;&eol; Object.keys(params)&eol; .forEach(function (key) {&eol; if (key.startsWith('jira_')) {&eol; jira[key.substring(5)] = params[key];&eol; }&eol; else if (key.startsWith('customfield_')) {&eol; fields[key] = params[key];&eol; }&eol; else if (key.startsWith('event_update_')) {&eol; update[key.substring(13)] = params[key];&eol; }&eol; else if (required_params.indexOf(key) !== -1 && params[key] === '') {&eol; throw 'Parameter "' + key + '" can\'t be empty.';&eol; }&eol; });&eol;&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: ' + params.event_source + '\nMust be 0-3.';&eol; }&eol;&eol; // Check {EVENT.VALUE} for trigger-based and internal events.&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: ' + params.event_value + '\nMust be 0 or 1.';&eol; }&eol;&eol; // Check {EVENT.UPDATE.STATUS} only for trigger-based events.&eol; if (params.event_update_status !== '0' && params.event_update_status !== '1' && params.event_source === '0') {&eol; throw 'Incorrect "event_update_status" parameter given: ' + params.event_update_status + '\nMust be 0 or 1.';&eol; }&eol;&eol; if (params.event_source !== '0' && params.event_recovery_value === '0') {&eol; throw 'Recovery operations are supported only for trigger-based actions.';&eol; }&eol;&eol; Jira.setParams(jira);&eol; Jira.setProxy(params.HTTPProxy);&eol; Jira.setTags(params.event_tags_json);&eol;&eol; // Create issue for non trigger-based events.&eol; if (params.event_source !== '0' && params.event_recovery_value !== '0') {&eol; Jira.createIssue(params.alert_subject, params.alert_message);&eol; }&eol; // Create issue for trigger-based events.&eol; else if (params.event_value === '1' && update.status === '0' && !jira.issue_key.startsWith(jira.project_key)) {&eol; var key = Jira.createIssue(params.alert_subject,&eol; (Object.keys(fields).length ? params.trigger_description : params.alert_message), fields);&eol;&eol;&eol; result.tags.__zbx_jira_issuekey = key;&eol; result.tags.__zbx_jira_issuelink = params.jira_url +&eol; (params.jira_url.endsWith('/') ? '' : '/') + 'browse/' + key;&eol; }&eol; // Update created issue for trigger-based event.&eol; else {&eol; if (!jira.issue_key.startsWith(jira.project_key)) {&eol; throw 'Incorrect Issue key given: ' + jira.issue_key;&eol; }&eol; Jira.updateIssue(params.alert_subject, fields,&eol; ((params.event_value === '0' && !Object.keys(fields).length)&eol; ? params.alert_message : update));&eol; }&eol;&eol; return JSON.stringify(result);&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[ Jira Webhook ] ERROR: ' + error);&eol; throw 'Sending failed: ' + error;&eol;}|30s |1 |1 |{EVENT.TAGS.__zbx_jira_issuelink} |Jira: {EVENT.TAGS.__zbx_jira_issuekey} | |
ROW |13 |4 |Jira with CustomFields | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var Jira = {&eol; params: {},&eol;&eol; setParams: function (params) {&eol; if (typeof params !== 'object') {&eol; return;&eol; }&eol;&eol; Jira.params = params;&eol; if (typeof Jira.params.url === 'string') {&eol; if (!Jira.params.url.endsWith('/')) {&eol; Jira.params.url += '/';&eol; }&eol;&eol; Jira.params.url += 'rest/api/latest/';&eol; }&eol; },&eol;&eol; setProxy: function (HTTPProxy) {&eol; Jira.HTTPProxy = HTTPProxy;&eol; },&eol;&eol; setTags: function(event_tags_json) {&eol; if (typeof event_tags_json !== 'undefined' && event_tags_json !== ''&eol; && event_tags_json !== '{EVENT.TAGSJSON}') {&eol; try {&eol; var tags = JSON.parse(event_tags_json),&eol; label;&eol;&eol; Jira.labels = [];&eol;&eol; tags.forEach(function (tag) {&eol; if (typeof tag.tag !== 'undefined' && typeof tag.value !== 'undefined' ) {&eol; label = (tag.tag + (tag.value ? (':' + tag.value) : '')).replace(/\s/g, '_');&eol; if (label.length < 256) {&eol; Jira.labels.push(label);&eol; }&eol; }&eol; });&eol; }&eol; catch (error) {&eol; // Code is not missing here.&eol; }&eol; }&eol; },&eol;&eol; escapeMarkup: function (str) {&eol; var length = str.length,&eol; result = '',&eol; markup = ['{', '&pipe;', '}', '~', '_', '\\', '[', ']', '^', '<', '>', '?', '!', '#', '+', '*', '&'];&eol;&eol; for (var i = 0; i < length; i++) {&eol; var char = str[i];&eol;&eol; result += (markup.indexOf(char) !== -1) ? ('&#' + str[i].charCodeAt() + ';') : char;&eol; }&eol;&eol; return result;&eol; },&eol;&eol; addCustomFields: function (data, fields) {&eol; if (typeof fields === 'object' && Object.keys(fields).length) {&eol; var schema = Jira.getSchema(),&eol; path = ['projects', 0, 'issuetypes', 0, 'fields'],&eol; field;&eol;&eol; while ((field = path.shift()) !== undefined) {&eol; schema = schema[field];&eol; if (typeof schema === 'undefined') {&eol; schema = null;&eol; break;&eol; }&eol; }&eol;&eol; if (schema) {&eol; Object.keys(fields)&eol; .forEach(function(field) {&eol; data.fields[field] = fields[field];&eol;&eol; if (typeof schema[field] === 'object' && typeof schema[field].schema === 'object'&eol; && (schema[field].schema.type === 'number' &pipe;&pipe; schema[field].schema.type === 'datetime')) {&eol; switch (schema[field].schema.type) {&eol; case 'number':&eol; data.fields[field] = parseInt(fields[field]);&eol; break;&eol;&eol; case 'datetime':&eol; if (fields[field].match(/\d+[.-]\d+[.-]\d+T\d+:\d+:\d+/) !== null) {&eol; data.fields[field] = fields[field].replace(/\./g, '-');&eol; }&eol; else {&eol; delete data.fields[field];&eol; }&eol; break;&eol; }&eol; }&eol; });&eol; }&eol; else {&eol; Zabbix.log(4, '[ Jira Webhook ] Failed to retrieve field schema.');&eol; }&eol; }&eol;&eol; return data;&eol; },&eol;&eol; request: function (method, query, data) {&eol; ['url', 'user', 'password', 'project_key', 'issue_type'].forEach(function (field) {&eol; if (typeof Jira.params !== 'object' &pipe;&pipe; typeof Jira.params[field] === 'undefined'&eol; &pipe;&pipe; Jira.params[field] === '' ) {&eol; throw 'Required Jira param is not set: "' + field + '".';&eol; }&eol; });&eol;&eol; var response,&eol; url = Jira.params.url + query,&eol; request = new HttpRequest();&eol;&eol; request.addHeader('Content-Type: application/json');&eol; request.addHeader('Authorization: Basic ' + btoa(Jira.params.user + ':' + Jira.params.password));&eol;&eol; if (typeof Jira.HTTPProxy !== 'undefined' && Jira.HTTPProxy !== '') {&eol; request.setProxy(Jira.HTTPProxy);&eol; }&eol;&eol; if (typeof data !== 'undefined') {&eol; data = JSON.stringify(data);&eol; }&eol;&eol; Zabbix.log(4, '[ Jira Webhook ] Sending request: ' + url + ((typeof data === 'string') ? ('\n' + data) : ''));&eol;&eol; switch (method) {&eol; case 'get':&eol; response = request.get(url, data);&eol; break;&eol;&eol; case 'post':&eol; response = request.post(url, data);&eol; break;&eol;&eol; case 'put':&eol; response = request.put(url, data);&eol; break;&eol;&eol; default:&eol; throw 'Unsupported HTTP request method: ' + method;&eol; }&eol;&eol; Zabbix.log(4, '[ Jira Webhook ] Received response with status code ' + request.getStatus() + '\n' + response);&eol;&eol; if (response !== null) {&eol; try {&eol; response = JSON.parse(response);&eol; }&eol; catch (error) {&eol; Zabbix.log(4, '[ Jira Webhook ] Failed to parse response received from Jira');&eol; response = null;&eol; }&eol; }&eol;&eol; if (request.getStatus() < 200 &pipe;&pipe; request.getStatus() >= 300) {&eol; var message = 'Request failed with status code ' + request.getStatus();&eol;&eol; if (response !== null && typeof response.errors !== 'undefined'&eol; && Object.keys(response.errors).length > 0) {&eol; message += ': ' + JSON.stringify(response.errors);&eol; }&eol; else if (response !== null && typeof response.errorMessages !== 'undefined'&eol; && Object.keys(response.errorMessages).length > 0) {&eol; message += ': ' + JSON.stringify(response.errorMessages);&eol; }&eol;&eol; throw message + ' Check debug log for more information.';&eol; }&eol;&eol; return {&eol; status: request.getStatus(),&eol; response: response&eol; };&eol; },&eol;&eol; getSchema: function() {&eol; var result = Jira.request('get', 'issue/createmeta?expand=projects.issuetypes.fields&projectKeys=' +&eol; Jira.params.project_key + '&issuetypeNames=' + Jira.params.issue_type);&eol;&eol; return result.response;&eol; },&eol;&eol; createIssue: function(summary, description, fields) {&eol; var data = {&eol; fields: {&eol; project: {&eol; key: Jira.params.project_key&eol; },&eol; issuetype: {&eol; name: Jira.params.issue_type&eol; },&eol; summary: summary,&eol; description: description&eol; }&eol; };&eol;&eol; if (Jira.labels && Jira.labels.length > 0) {&eol; data.fields.labels = Jira.labels;&eol; }&eol; var result = Jira.request('post', 'issue', Jira.addCustomFields(data, fields));&eol;&eol; if (typeof result.response !== 'object' &pipe;&pipe; typeof result.response.key === 'undefined') {&eol; throw 'Cannot create Jira issue. Check debug log for more information.';&eol; }&eol;&eol; return result.response.key;&eol; },&eol;&eol; updateIssue: function(summary, fields, update) {&eol; var data = {fields: {}};&eol;&eol; if (summary) {&eol; data.fields.summary = summary;&eol; }&eol;&eol; Jira.request('put', 'issue/' + Jira.params.issue_key, Jira.addCustomFields(data, fields));&eol; Jira.commentIssue(update);&eol; },&eol;&eol; commentIssue: function(update) {&eol; var data = {};&eol;&eol; if (typeof update === 'string') {&eol; data.body = update;&eol; Jira.request('post', 'issue/' + Jira.params.issue_key + '/comment', data);&eol; }&eol; else if (update.status === '1') {&eol; data.body = update.user + ' ' + update.action + '.';&eol;&eol; if (update.message) {&eol; data.body += '\nMessage: {quote}' + Jira.escapeMarkup(update.message) + '{quote}';&eol; }&eol;&eol; Jira.request('post', 'issue/' + Jira.params.issue_key + '/comment', data);&eol; }&eol; }&eol;};&eol;&eol;try {&eol; var params = JSON.parse(value),&eol; fields = {},&eol; jira = {},&eol; update = {},&eol; result = {tags: {}},&eol; required_params = ['alert_subject', 'summary', 'event_recovery_value', 'event_source', 'event_value'];&eol;&eol; Object.keys(params)&eol; .forEach(function (key) {&eol; if (key.startsWith('jira_')) {&eol; jira[key.substring(5)] = params[key];&eol; }&eol; else if (key.startsWith('customfield_')) {&eol; fields[key] = params[key];&eol; }&eol; else if (key.startsWith('event_update_')) {&eol; update[key.substring(13)] = params[key];&eol; }&eol; else if (required_params.indexOf(key) !== -1 && params[key] === '') {&eol; throw 'Parameter "' + key + '" can\'t be empty.';&eol; }&eol; });&eol;&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: ' + params.event_source + '\nMust be 0-3.';&eol; }&eol;&eol; // Check {EVENT.VALUE} for trigger-based and internal events.&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: ' + params.event_value + '\nMust be 0 or 1.';&eol; }&eol;&eol; // Check {EVENT.UPDATE.STATUS} only for trigger-based events.&eol; if (params.event_update_status !== '0' && params.event_update_status !== '1' && params.event_source === '0') {&eol; throw 'Incorrect "event_update_status" parameter given: ' + params.event_update_status + '\nMust be 0 or 1.';&eol; }&eol;&eol; if (params.event_source !== '0' && params.event_recovery_value === '0') {&eol; throw 'Recovery operations are supported only for trigger-based actions.';&eol; }&eol;&eol; Jira.setParams(jira);&eol; Jira.setProxy(params.HTTPProxy);&eol; Jira.setTags(params.event_tags_json);&eol;&eol; // Create issue for non trigger-based events.&eol; if (params.event_source !== '0' && params.event_recovery_value !== '0') {&eol; Jira.createIssue(params.alert_subject, params.alert_message);&eol; }&eol; // Create issue for trigger-based events.&eol; else if (params.event_value === '1' && update.status === '0' && !jira.issue_key.startsWith(jira.project_key)) {&eol; var key = Jira.createIssue(params.alert_subject,&eol; (Object.keys(fields).length ? params.trigger_description : params.alert_message), fields);&eol;&eol;&eol; result.tags.__zbx_jira_issuekey = key;&eol; result.tags.__zbx_jira_issuelink = params.jira_url +&eol; (params.jira_url.endsWith('/') ? '' : '/') + 'browse/' + key;&eol; }&eol; // Update created issue for trigger-based event.&eol; else {&eol; if (!jira.issue_key.startsWith(jira.project_key)) {&eol; throw 'Incorrect Issue key given: ' + jira.issue_key;&eol; }&eol; Jira.updateIssue(params.alert_subject, fields,&eol; ((params.event_value === '0' && !Object.keys(fields).length)&eol; ? params.alert_message : update));&eol; }&eol;&eol; return JSON.stringify(result);&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[ Jira Webhook ] ERROR: ' + error);&eol; throw 'Sending failed: ' + error;&eol;}|30s |1 |1 |{EVENT.TAGS.__zbx_jira_issuelink} |Jira: {EVENT.TAGS.__zbx_jira_issuekey} | |
-ROW |14 |4 |MS Teams | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var SEVERITY_COLORS = [&eol; '#97AAB3', // Not classified.&eol; '#7499FF', // Information.&eol; '#FFC859', // Warning.&eol; '#FFA059', // Average.&eol; '#E97659', // High.&eol; '#E45959', // Disaster.&eol; '#009900', // Resolved.&eol; '#000000' // Default.&eol;];&eol;&eol;try {&eol; var params = JSON.parse(value);&eol;&eol; if (typeof params.teams_endpoint !== 'string' &pipe;&pipe; params.teams_endpoint.trim() === '') {&eol; throw 'Cannot get teams_endpoint';&eol; }&eol; else if (!params.teams_endpoint.startsWith('http')) {&eol; throw 'Invalid MS Teams webhook URL: ' + params.teams_endpoint;&eol; }&eol;&eol; params.zabbix_url = (params.zabbix_url.endsWith('/'))&eol; ? params.zabbix_url.slice(0, -1) : params.zabbix_url;&eol;&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.';&eol; }&eol;&eol; // Set "use_default_message" to true for non trigger-based events.&eol; if (params.event_source !== '0') {&eol; params.use_default_message = 'true';&eol; }&eol;&eol; // Check {EVENT.VALUE} for trigger-based and internal events.&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: "' + params.event_value + '".\nMust be 0 or 1.';&eol; }&eol;&eol; // Check {EVENT.UPDATE.STATUS} only for trigger-based events.&eol; if (params.event_update_status !== '0' && params.event_update_status !== '1' && params.event_source === '0') {&eol; throw 'Incorrect "event_update_status" parameter given: "' + params.event_update_status + '".\nMust be 0 or 1.';&eol; }&eol;&eol; if (params.event_value == 0) {&eol; params.event_nseverity = '6';&eol; }&eol;&eol; if (!SEVERITY_COLORS[params.event_nseverity]) {&eol; params.event_nseverity = '7';&eol; }&eol;&eol; var request = new HttpRequest(),&eol; facts = [],&eol; body = {&eol; themeColor: SEVERITY_COLORS[params.event_nseverity].replace('#', ''),&eol; summary: params.alert_subject,&eol; sections: [&eol; {&eol; markdown: 'false',&eol; activityTitle: params.alert_subject,&eol; activitySubtitle: 'On ' + params.host_name + ' [' + params.host_ip + ']',&eol; text: (params.use_default_message.toLowerCase() == 'true')&eol; ? params.alert_message&eol; : params.trigger_description&eol; }&eol; ],&eol; potentialAction: [&eol; {&eol; '@type': 'OpenUri',&eol; name: (params.event_source === '0')&eol; ? 'Event Info'&eol; : 'Zabbix Home',&eol; targets: [&eol; {&eol; os: 'default',&eol; uri: (params.event_source === '0')&eol; ? params.zabbix_url + '/tr_events.php?triggerid=' +&eol; params.trigger_id + '&eventid=' + params.event_id&eol; : params.zabbix_url&eol; }&eol; ]&eol; }&eol; ]&eol; };&eol;&eol; if (params.use_default_message.toLowerCase() !== 'true') {&eol; // Problem message.&eol; if (params.event_value === '1' && params.event_update_status === '0') {&eol; facts.push({&eol; name: 'Event time',&eol; value: params.event_time + ' ' + params.event_date&eol; });&eol; }&eol; // Update message.&eol; else if (params.event_update_status === '1') {&eol; body.sections[0].text = params.event_update_user + ' ' + params.event_update_action + '.';&eol;&eol; if (params.event_update_message) {&eol; body.sections[0].text += '<br>Message:<br>' + params.event_update_message;&eol; }&eol;&eol; facts.push({&eol; name: 'Event update time',&eol; value: params.event_update_time + ' ' + params.event_update_date&eol; });&eol; }&eol; // Resolved message.&eol; else {&eol; facts.push({&eol; name: 'Recovery time',&eol; value: params.event_recovery_time + ' ' + params.event_recovery_date&eol; });&eol; }&eol;&eol; if (params.event_severity && params.event_severity !== '{EVENT.SEVERITY}') {&eol; facts.push({&eol; name: 'Severity',&eol; value: params.event_severity&eol; });&eol; }&eol;&eol;&eol; if (params.event_opdata && params.event_opdata !== '{EVENT.OPDATA}') {&eol; facts.push({&eol; name: 'Operational data',&eol; value: params.event_opdata&eol; });&eol; }&eol;&eol; if (params.event_tags && params.event_tags !== '{EVENT.TAGS}') {&eol; facts.push({&eol; name: 'Event tags',&eol; value: params.event_tags&eol; });&eol; }&eol;&eol; Object.keys(params)&eol; .forEach(function (key) {&eol; if (key.startsWith('fact_') && params[key] !== '') {&eol; facts.push({&eol; name: key.substring(5),&eol; value: params[key]&eol; });&eol; }&eol; else if (key.startsWith('openUri_') && params[key] !== '' && !params[key].startsWith('{')) {&eol; body.potentialAction.push({&eol; '@type': 'OpenUri',&eol; name: key.substring(8),&eol; targets: [&eol; {&eol; os: 'default',&eol; uri: params[key]&eol; }&eol; ]&eol; });&eol; }&eol; });&eol; body.sections[0].facts = facts;&eol; }&eol;&eol; body.sections[0].text = body.sections[0].text.replace(/(?:\r\n&pipe;\r&pipe;\n)/g, '<br>');&eol;&eol; request.addHeader('Content-Type: application/json');&eol;&eol; if (typeof params.HTTPProxy === 'string' && params.HTTPProxy !== '') {&eol; request.setProxy(params.HTTPProxy);&eol; }&eol;&eol; Zabbix.log(4, '[ MS Teams Webhook ] JSON: ' + JSON.stringify(body));&eol;&eol; var response = request.post(params.teams_endpoint, JSON.stringify(body));&eol;&eol; Zabbix.log(4, '[ MS Teams Webhook ] Response: ' + response);&eol;&eol; if (response === '1') {&eol; return 'OK';&eol; }&eol; else {&eol; Zabbix.log(4, '[ MS Teams Webhook ] FAILED with response: ' + response);&eol; throw response;&eol; }&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[ MS Teams Webhook ] ERROR: ' + error);&eol; throw 'Sending failed: ' + error;&eol;}|30s |0 |0 | | | |
+ROW |14 |4 |MS Teams | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var SEVERITY_COLORS = [&eol; '#97AAB3', // Not classified.&eol; '#7499FF', // Information.&eol; '#FFC859', // Warning.&eol; '#FFA059', // Average.&eol; '#E97659', // High.&eol; '#E45959', // Disaster.&eol; '#009900', // Resolved.&eol; '#000000' // Default.&eol;];&eol;&eol;try {&eol; var params = JSON.parse(value);&eol;&eol; if (typeof params.teams_endpoint !== 'string' &pipe;&pipe; params.teams_endpoint.trim() === '') {&eol; throw 'Cannot get teams_endpoint';&eol; }&eol; else if (!params.teams_endpoint.startsWith('http')) {&eol; throw 'Invalid MS Teams webhook URL: ' + params.teams_endpoint;&eol; }&eol;&eol; params.zabbix_url = (params.zabbix_url.endsWith('/'))&eol; ? params.zabbix_url.slice(0, -1) : params.zabbix_url;&eol;&eol; if ([0, 1, 2, 3, 4].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-4.';&eol; }&eol;&eol; // Set "use_default_message" to true for non trigger-based events.&eol; if (params.event_source !== '0') {&eol; params.use_default_message = 'true';&eol; }&eol;&eol; // Check {EVENT.VALUE} for trigger-based and internal events.&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: "' + params.event_value + '".\nMust be 0 or 1.';&eol; }&eol;&eol; // Check {EVENT.UPDATE.STATUS} only for trigger-based events.&eol; if (params.event_update_status !== '0' && params.event_update_status !== '1' && params.event_source === '0') {&eol; throw 'Incorrect "event_update_status" parameter given: "' + params.event_update_status + '".\nMust be 0 or 1.';&eol; }&eol;&eol; if (params.event_value == 0) {&eol; params.event_nseverity = '6';&eol; }&eol;&eol; if (!SEVERITY_COLORS[params.event_nseverity]) {&eol; params.event_nseverity = '7';&eol; }&eol;&eol; var request = new HttpRequest(),&eol; facts = [],&eol; body = {&eol; themeColor: SEVERITY_COLORS[params.event_nseverity].replace('#', ''),&eol; summary: params.alert_subject,&eol; sections: [&eol; {&eol; markdown: 'false',&eol; activityTitle: params.alert_subject,&eol; text: (params.use_default_message.toLowerCase() == 'true')&eol; ? params.alert_message&eol; : params.trigger_description&eol; }&eol; ],&eol; potentialAction: [&eol; {&eol; '@type': 'OpenUri',&eol; name: (params.event_source === '0')&eol; ? 'Event Info'&eol; : 'Zabbix Home',&eol; targets: [&eol; {&eol; os: 'default',&eol; uri: (params.event_source === '0')&eol; ? params.zabbix_url + '/tr_events.php?triggerid=' +&eol; params.trigger_id + '&eventid=' + params.event_id&eol; : params.zabbix_url&eol; }&eol; ]&eol; }&eol; ]&eol; };&eol;&eol; if (params.use_default_message.toLowerCase() !== 'true') {&eol; // Problem message.&eol; if (params.event_value === '1' && params.event_update_status === '0') {&eol; facts.push({&eol; name: 'Event time',&eol; value: params.event_time + ' ' + params.event_date&eol; });&eol; facts.push({&eol; name: 'Host',&eol; value: params.host_name + ' [' + params.host_ip + ']'&eol; });&eol; }&eol; // Update message.&eol; else if (params.event_update_status === '1') {&eol; body.sections[0].text = params.event_update_user + ' ' + params.event_update_action + '.';&eol;&eol; if (params.event_update_message) {&eol; body.sections[0].text += '<br>Message:<br>' + params.event_update_message;&eol; }&eol;&eol; facts.push({&eol; name: 'Event update time',&eol; value: params.event_update_time + ' ' + params.event_update_date&eol; });&eol; facts.push({&eol; name: 'Host',&eol; value: params.host_name + ' [' + params.host_ip + ']'&eol; });&eol; }&eol; // Resolved message.&eol; else {&eol; facts.push({&eol; name: 'Recovery time',&eol; value: params.event_recovery_time + ' ' + params.event_recovery_date&eol; });&eol; facts.push({&eol; name: 'Host',&eol; value: params.host_name + ' [' + params.host_ip + ']'&eol; });&eol; }&eol;&eol; if (params.event_severity && params.event_severity !== '{EVENT.SEVERITY}') {&eol; facts.push({&eol; name: 'Severity',&eol; value: params.event_severity&eol; });&eol; }&eol;&eol;&eol; if (params.event_opdata && params.event_opdata !== '{EVENT.OPDATA}') {&eol; facts.push({&eol; name: 'Operational data',&eol; value: params.event_opdata&eol; });&eol; }&eol;&eol; if (params.event_tags && params.event_tags !== '{EVENT.TAGS}') {&eol; facts.push({&eol; name: 'Event tags',&eol; value: params.event_tags&eol; });&eol; }&eol;&eol; Object.keys(params)&eol; .forEach(function (key) {&eol; if (key.startsWith('fact_') && params[key] !== '') {&eol; facts.push({&eol; name: key.substring(5),&eol; value: params[key]&eol; });&eol; }&eol; else if (key.startsWith('openUri_') && params[key] !== '' && !params[key].startsWith('{')) {&eol; body.potentialAction.push({&eol; '@type': 'OpenUri',&eol; name: key.substring(8),&eol; targets: [&eol; {&eol; os: 'default',&eol; uri: params[key]&eol; }&eol; ]&eol; });&eol; }&eol; });&eol; body.sections[0].facts = facts;&eol; }&eol;&eol; body.sections[0].text = body.sections[0].text.replace(/(?:\r\n&pipe;\r&pipe;\n)/g, '<br>');&eol;&eol; request.addHeader('Content-Type: application/json');&eol;&eol; if (typeof params.HTTPProxy === 'string' && params.HTTPProxy !== '') {&eol; request.setProxy(params.HTTPProxy);&eol; }&eol;&eol; Zabbix.log(4, '[ MS Teams Webhook ] JSON: ' + JSON.stringify(body));&eol;&eol; var response = request.post(params.teams_endpoint, JSON.stringify(body));&eol;&eol; Zabbix.log(4, '[ MS Teams Webhook ] Response: ' + response);&eol;&eol; if (response === '1') {&eol; return 'OK';&eol; }&eol; else {&eol; Zabbix.log(4, '[ MS Teams Webhook ] FAILED with response: ' + response);&eol; throw response;&eol; }&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[ MS Teams Webhook ] ERROR: ' + error);&eol; throw 'Sending failed: ' + error;&eol;}|30s |0 |0 | | | |
ROW |15 |4 |Redmine | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var Redmine = {&eol; params: {},&eol;&eol; setParams: function (params) {&eol; if (typeof params !== 'object') {&eol; return;&eol; }&eol;&eol; Redmine.params = params;&eol; if (typeof Redmine.params.url === 'string') {&eol; if (!Redmine.params.url.endsWith('/')) {&eol; Redmine.params.url += '/';&eol; }&eol; }&eol; },&eol;&eol; addCustomFields: function (data, fields) {&eol; if (typeof fields === 'object' && Object.keys(fields).length) {&eol;&eol; data.issue.custom_fields = [];&eol; Object.keys(fields)&eol; .forEach(function (field) {&eol; var field_value = fields[field];&eol;&eol; if (field_value !== undefined) {&eol; data.issue.custom_fields.push({ id: field, value: field_value });&eol; }&eol; });&eol;&eol; }&eol; return data;&eol; },&eol;&eol; request: function (method, query, data) {&eol; ['url', 'access_key'].forEach(function (field) {&eol; if (typeof Redmine.params !== 'object' &pipe;&pipe; typeof Redmine.params[field] === 'undefined'&eol; &pipe;&pipe; Redmine.params[field] === '' ) {&eol; throw 'Required param is not set: "' + field + '".';&eol; }&eol; });&eol;&eol; var response,&eol; url = Redmine.params.url + query,&eol; request = new HttpRequest();&eol;&eol; if (typeof Redmine.HTTPProxy === 'string' && Redmine.HTTPProxy.trim() !== '') {&eol; request.setProxy(Redmine.HTTPProxy);&eol; }&eol;&eol; request.addHeader('Content-Type: application/json');&eol; request.addHeader('X-Redmine-API-Key: ' + Redmine.params.access_key);&eol;&eol; if (typeof data !== 'undefined') {&eol; data = JSON.stringify(data);&eol; }&eol;&eol; Zabbix.log(4, '[ Redmine Webhook ] Sending request: ' +&eol; url + ((typeof data === 'string') ? (' ' + data) : ''));&eol;&eol; switch (method) {&eol; case 'get':&eol; response = request.get(url, data);&eol; break;&eol;&eol; case 'post':&eol; response = request.post(url, data);&eol; break;&eol;&eol; case 'put':&eol; response = request.put(url, data);&eol; break;&eol;&eol; default:&eol; throw 'Unsupported HTTP request method: ' + method;&eol; }&eol;&eol; Zabbix.log(4, '[ Redmine Webhook ] Received response with status code ' + request.getStatus() + ': ' + response);&eol;&eol; if (response !== null) {&eol; try {&eol; response = JSON.parse(response);&eol; }&eol; catch (error) {&eol; Zabbix.log(4, '[ Redmine Webhook ] Failed to parse response received from Redmine');&eol; response = null;&eol; }&eol; }&eol;&eol; if (request.getStatus() < 200 &pipe;&pipe; request.getStatus() >= 300) {&eol; var message = 'Request failed with status code ' + request.getStatus();&eol;&eol; if (response !== null && typeof response.errors !== 'undefined'&eol; && Object.keys(response.errors).length > 0) {&eol; message += ': ' + JSON.stringify(response.errors);&eol; }&eol; else if (response !== null && typeof response.errorMessages !== 'undefined'&eol; && Object.keys(response.errorMessages).length > 0) {&eol; message += ': ' + JSON.stringify(response.errorMessages);&eol; }&eol;&eol; throw message + ' Check debug log for more information.';&eol; }&eol;&eol; return {&eol; status: request.getStatus(),&eol; response: response&eol; };&eol; },&eol;&eol; getProjectID: function(name) {&eol; var result = Redmine.request('get', 'projects.json'),&eol; project_id;&eol;&eol; if (result.response) {&eol; var projects = result.response.projects &pipe;&pipe; [];&eol;&eol; for (var i in projects) {&eol; if (projects[i].name === name) {&eol; project_id = projects[i].id;&eol; break;&eol; }&eol; }&eol; }&eol; else {&eol; Zabbix.log(4, '[ Redmine Webhook ] Failed to retrieve project data.');&eol; }&eol;&eol; if (typeof project_id === 'undefined') {&eol; throw 'Cannot find project with name: ' + name;&eol; }&eol;&eol; return project_id;&eol; },&eol;&eol; createIssue: function(subject, description, priority, fields) {&eol; var project_id = /^\d+$/.test(Redmine.params.project)&eol; ? Redmine.params.project&eol; : Redmine.getProjectID(Redmine.params.project),&eol; data = {&eol; issue: {&eol; project_id: project_id,&eol; tracker_id: Redmine.params.tracker_id,&eol; subject: subject,&eol; description: description&eol; }&eol; },&eol; result;&eol;&eol; if (priority) {&eol; data.issue.priority_id = priority;&eol; }&eol;&eol; result = Redmine.request('post', 'issues.json', Redmine.addCustomFields(data, fields));&eol;&eol; if (typeof result.response !== 'object'&eol; &pipe;&pipe; typeof result.response.issue.id === 'undefined'&eol; &pipe;&pipe; result.status != 201) {&eol; throw 'Cannot create Redmine issue. Check debug log for more information.';&eol; }&eol;&eol; return result.response.issue.id;&eol; },&eol;&eol; updateIssue: function (note, fields, status) {&eol; var data = {&eol; issue: {&eol; notes: note &pipe;&pipe; ''&eol; }&eol; };&eol;&eol; if (status) {&eol; data.issue.status_id = status;&eol; }&eol;&eol; Redmine.request('put', 'issues/' + Redmine.params.issue_key + '.json', Redmine.addCustomFields(data, fields));&eol; }&eol;&eol;};&eol;&eol;try {&eol; var params = JSON.parse(value),&eol; params_redmine = {},&eol; params_fields = {},&eol; params_update = {},&eol; result = {tags: {}},&eol; required_params = [&eol; 'alert_subject', 'tracker_id', 'project',&eol; 'event_source', 'event_value', 'event_update_status'&eol; ],&eol; severities = [&eol; {name: 'not_classified', color: '#97AAB3'},&eol; {name: 'information', color: '#7499FF'},&eol; {name: 'warning', color: '#FFC859'},&eol; {name: 'average', color: '#FFA059'},&eol; {name: 'high', color: '#E97659'},&eol; {name: 'disaster', color: '#E45959'},&eol; {name: 'resolved', color: '#009900'},&eol; {name: null, color: '#000000'}&eol; ],&eol; priority;&eol;&eol; Object.keys(params)&eol; .forEach(function (key) {&eol; if (key.startsWith('redmine_')) {&eol; params_redmine[key.substring(8)] = params[key];&eol; }&eol; else if (key.startsWith('customfield_')) {&eol; params_fields[key.substring(12)] = params[key];&eol; }&eol; else if (key.startsWith('event_update_')) {&eol; params_update[key.substring(13)] = params[key];&eol; }&eol; else if (required_params.indexOf(key) !== -1 && params[key].trim() === '') {&eol; throw 'Parameter "' + key + '" cannot be empty.';&eol; }&eol; });&eol;&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: ' + params.event_source + '\nMust be 0-3.';&eol; }&eol;&eol; // Check {EVENT.VALUE} for trigger-based and internal events.&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: ' + params.event_value + '\nMust be 0 or 1.';&eol; }&eol;&eol; // Check {EVENT.UPDATE.STATUS} only for trigger-based events.&eol; if (params.event_source === '0' && params.event_update_status !== '0' && params.event_update_status !== '1') {&eol; throw 'Incorrect "event_update_status" parameter given: ' + params.event_update_status + '\nMust be 0 or 1.';&eol; }&eol;&eol;&eol; if (typeof params_redmine.close_status_id === 'string' && params_redmine.close_status_id.trim() !== '' && !parseInt(params_redmine.close_status_id, 10)) {&eol; throw 'Incorrect "redmine_close_status_id" parameter given! Must be an integer.';&eol; }&eol;&eol; if (params.event_source !== '0' && params.event_value === '0') {&eol; throw 'Recovery operations are supported only for trigger-based actions.';&eol; }&eol;&eol; if (params.event_source === '0'&eol; && ((params.event_value === '1' && params.event_update_status === '1')&eol; &pipe;&pipe; (params.event_value === '0'&eol; && (params.event_update_status === '0' &pipe;&pipe; params.event_update_status === '1')))&eol; && (isNaN(parseInt(params.redmine_issue_key)) &pipe;&pipe; parseInt(params.redmine_issue_key) < 1 )) {&eol; throw 'Incorrect "redmine_issue_key" parameter given: ' + params.redmine_issue_key +&eol; '\nMust be positive integer.';&eol; }&eol;&eol; if ([0, 1, 2, 3, 4, 5].indexOf(parseInt(params.event_nseverity)) === -1) {&eol; params.event_nseverity = '7';&eol; }&eol;&eol; if (params.event_value === '0') {&eol; params.event_nseverity = '6';&eol; }&eol;&eol; priority = params['severity_' + severities[params.event_nseverity].name];&eol; priority = priority && priority.trim() &pipe;&pipe; severities[7].name;&eol;&eol; Redmine.setParams(params_redmine);&eol; Redmine.HTTPProxy = params.HTTPProxy;&eol;&eol; // Create issue for non trigger-based events.&eol; if (params.event_source !== '0'&eol; && params.event_value !== '0') {&eol; Redmine.createIssue(params.alert_subject, params.alert_message, priority);&eol; }&eol; // Create issue for trigger-based events.&eol; else if (params.event_value === '1' && params_update.status === '0') {&eol; var issue_id = Redmine.createIssue(params.alert_subject,&eol; params.alert_subject + '\n' + params.alert_message + '\n' +&eol; params.zabbix_url + (params.zabbix_url.endsWith('/') ? '' : '/') +&eol; 'tr_events.php?triggerid=' + params.trigger_id + '&eventid=' + params.event_id + '\n',&eol; priority,&eol; params_fields);&eol;&eol; result.tags.__zbx_redmine_issue_id = issue_id;&eol; result.tags.__zbx_redmine_issuelink = params.redmine_url +&eol; (params.redmine_url.endsWith('/') ? '' : '/') + 'issues/' + issue_id;&eol; }&eol; // Close issue if parameter close_status_id is set and it is a recovery operation&eol; else if (params.event_value === '0' && typeof params_redmine.close_status_id === 'string' && params_redmine.close_status_id.trim() !== '') {&eol; Redmine.updateIssue(params.alert_subject + '\n' + params.alert_message, params_fields, params_redmine.close_status_id);&eol; }&eol; // Update created issue for trigger-based event.&eol; else {&eol; Redmine.updateIssue(params.alert_subject + '\n' + params.alert_message, params_fields);&eol; }&eol;&eol; return JSON.stringify(result);&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[ Redmine Webhook ] ERROR: ' + error);&eol; throw 'Sending failed: ' + error;&eol;}|30s |1 |1 |{EVENT.TAGS.__zbx_redmine_issuelink} |Redmine: issue #{EVENT.TAGS.__zbx_redmine_issue_id} | |
ROW |16 |4 |Telegram | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var Telegram = {&eol; token: null,&eol; to: null,&eol; message: null,&eol; proxy: null,&eol; parse_mode: null,&eol;&eol; escapeMarkup: function (str, mode) {&eol; switch (mode) {&eol; case 'markdown':&eol; return str.replace(/([_*\[`])/g, '\\$&');&eol;&eol; case 'markdownv2':&eol; return str.replace(/([_*\[\]()~`>#+\-=&pipe;{}.!])/g, '\\$&');&eol;&eol; default:&eol; return str;&eol; }&eol; },&eol;&eol; sendMessage: function () {&eol; var params = {&eol; chat_id: Telegram.to,&eol; text: Telegram.message,&eol; disable_web_page_preview: true,&eol; disable_notification: false&eol; },&eol; data,&eol; response,&eol; request = new HttpRequest(),&eol; url = 'https://api.telegram.org/bot' + Telegram.token + '/sendMessage';&eol;&eol; if (Telegram.parse_mode !== null) {&eol; params['parse_mode'] = Telegram.parse_mode;&eol; }&eol;&eol; if (Telegram.proxy) {&eol; request.setProxy(Telegram.proxy);&eol; }&eol;&eol; request.addHeader('Content-Type: application/json');&eol; data = JSON.stringify(params);&eol;&eol; // Remove replace() function if you want to see the exposed token in the log file.&eol; Zabbix.log(4, '[Telegram Webhook] URL: ' + url.replace(Telegram.token, '<TOKEN>'));&eol; Zabbix.log(4, '[Telegram Webhook] params: ' + data);&eol; response = request.post(url, data);&eol; Zabbix.log(4, '[Telegram Webhook] HTTP code: ' + request.getStatus());&eol;&eol; try {&eol; response = JSON.parse(response);&eol; }&eol; catch (error) {&eol; response = null;&eol; }&eol;&eol; if (request.getStatus() !== 200 &pipe;&pipe; typeof response.ok !== 'boolean' &pipe;&pipe; response.ok !== true) {&eol; if (typeof response.description === 'string') {&eol; throw response.description;&eol; }&eol; else {&eol; throw 'Unknown error. Check debug log for more information.';&eol; }&eol; }&eol; }&eol;};&eol;&eol;try {&eol; var params = JSON.parse(value);&eol;&eol; if (typeof params.Token === 'undefined') {&eol; throw 'Incorrect value is given for parameter "Token": parameter is missing';&eol; }&eol;&eol; Telegram.token = params.Token;&eol;&eol; if (params.HTTPProxy) {&eol; Telegram.proxy = params.HTTPProxy;&eol; } &eol;&eol; params.ParseMode = params.ParseMode.toLowerCase();&eol; &eol; if (['markdown', 'html', 'markdownv2'].indexOf(params.ParseMode) !== -1) {&eol; Telegram.parse_mode = params.ParseMode;&eol; }&eol;&eol; Telegram.to = params.To;&eol; Telegram.message = params.Subject + '\n' + params.Message;&eol;&eol; if (['markdown', 'markdownv2'].indexOf(params.ParseMode) !== -1) {&eol; Telegram.message = Telegram.escapeMarkup(Telegram.message, params.ParseMode);&eol; }&eol;&eol; Telegram.sendMessage();&eol;&eol; return 'OK';&eol;}&eol;catch (error) {&eol; Zabbix.log(4, '[Telegram Webhook] notification failed: ' + error);&eol; throw 'Sending failed: ' + error + '.';&eol;}|10s |0 |0 | | |https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/telegram&eol;&eol;1. Register bot: send "/newbot" to @BotFather and follow instructions&eol;2. Copy and paste the obtained token into the "Token" field above&eol;3. If you want to send personal notifications, you need to get chat id of the user you want to send messages to:&eol; 3.1. Send "/getid" to "@myidbot" in Telegram messenger&eol; 3.2. Copy returned chat id and save it in the "Telegram Webhook" media for the user&eol; 3.3. Ask the user to send "/start" to your bot (Telegram bot won't send anything to the user without it)&eol;4. If you want to send group notifications, you need to get group id of the group you want to send messages to:&eol; 4.1. Add "@myidbot" to your group&eol; 4.2. Send "/getgroupid@myidbot" in your group&eol; 4.3. Copy returned group id save it in the "Telegram Webhook" media for the user you created for group notifications&eol; 4.4. Send "/start@your_bot_name_here" in your group (Telegram bot won't send anything to the group without it)|
ROW |17 |4 |Zendesk | | | | | | | |0 |25 |0 |0 |0 |0 | |1 |3 |10s |1 |var Zendesk = {&eol; params: {},&eol;&eol; setParams: function (params) {&eol; if (typeof params !== 'object') {&eol; return;&eol; }&eol;&eol; Zendesk.params = params;&eol; if (typeof Zendesk.params.url === 'string') {&eol; if (!Zendesk.params.url.endsWith('/')) {&eol; Zendesk.params.url += '/';&eol; }&eol; Zendesk.params.url += 'api/v2/';&eol; }&eol; },&eol;&eol; addCustomFields: function (data, fields) {&eol; if (typeof fields === 'object' && Object.keys(fields).length) {&eol; var schema = Zendesk.getSchema(),&eol; arr = [],&eol; i,&eol; n;&eol;&eol; if (schema) {&eol; Object.keys(fields)&eol; .forEach(function(field) {&eol; for (i = 0, n = schema.ticket_fields.length; i < n; i++) {&eol; if (schema.ticket_fields[i].id == field&eol; && ['text', 'integer', 'date'].indexOf(schema.ticket_fields[i].type) !== -1){&eol;&eol; switch (schema.ticket_fields[i].type) {&eol; case 'integer':&eol; fields[field] = parseInt(fields[field]);&eol; break;&eol; case 'date':&eol; if (fields[field].match(/^\d{4}[.-]\d{2}[.-]\d{2}$/) !== null) {&eol; fields[field] = fields[field].replace(/\./g, '-');&eol; }&eol; else {&eol; fields[field] = '';&eol; }&eol; break;&eol; }&eol;&eol; arr.push({id: field, value: fields[field]});&eol; break;&eol; }&eol; }&eol; });&eol;&eol; if (arr.length) {&eol; data.ticket['custom_fields'] = arr;&eol; }&eol; }&eol; else {&eol; Zabbix.log(4, '[Zendesk Webhook] Failed to retrieve field schema.');&eol; }&eol; }&eol;&eol; return data;&eol; },&eol;&eol; request: function (method, query, data) {&eol; ['url', 'token', 'type'].forEach(function (field) {&eol; if (typeof Zendesk.params !== 'object' &pipe;&pipe; typeof Zendesk.params[field] === 'undefined') {&eol; throw 'Required Zendesk param is not set: ' + field + '\n' + Zendesk.params[field];&eol; }&eol; });&eol;&eol; var response,&eol; url = Zendesk.params.url + query,&eol; request = new HttpRequest();&eol;&eol; if (typeof Zendesk.HTTPProxy === 'string' && Zendesk.HTTPProxy.trim() !== '') {&eol; request.setProxy(Zendesk.HTTPProxy);&eol; }&eol;&eol; request.addHeader('Content-Type: application/json');&eol; request.addHeader('Authorization: Basic ' + btoa(Zendesk.params.token));&eol;&eol; if (typeof data !== 'undefined') {&eol; data = JSON.stringify(data);&eol; }&eol;&eol; Zabbix.log(4, '[Zendesk Webhook] Sending request: ' + url + ((typeof data === 'string') ? (' ' + data) : ''));&eol;&eol; switch (method) {&eol; case 'get':&eol; response = request.get(url, data);&eol; break;&eol;&eol; case 'post':&eol; response = request.post(url, data);&eol; break;&eol;&eol; case 'put':&eol; response = request.put(url, data);&eol; break;&eol;&eol; default:&eol; throw 'Unsupported HTTP request method: ' + method;&eol; }&eol;&eol; Zabbix.log(4, '[Zendesk Webhook] Received response with status code ' + request.getStatus() + '. ' + response);&eol;&eol; if (response !== null) {&eol; try {&eol; response = JSON.parse(response);&eol; }&eol; catch (error) {&eol; Zabbix.log(4, '[Zendesk Webhook] Failed to parse response received from Zendesk.');&eol; }&eol; }&eol;&eol; if (request.getStatus() < 200 &pipe;&pipe; request.getStatus() >= 300) {&eol; var message = 'Request failed with status code ' + request.getStatus();&eol;&eol; if (response !== null && typeof response.error !== 'undefined'&eol; && Object.keys(response.error).length > 0) {&eol; message += ': ' + JSON.stringify(response.error);&eol; }&eol; else if (response !== null && typeof response.description !== 'undefined'&eol; && Object.keys(response.description).length > 0) {&eol; message += ': ' + JSON.stringify(response.description);&eol; }&eol; else {&eol; message += '. ' + response;&eol; }&eol; throw message + '. Check debug log for more information.';&eol; }&eol;&eol; return {&eol; status: request.getStatus(),&eol; response: response&eol; };&eol; },&eol;&eol; getSchema: function() {&eol; var result = Zendesk.request('get', 'ticket_fields.json');&eol;&eol; return result.response;&eol; },&eol;&eol; createIssue: function(data, fields) {&eol; var result = Zendesk.request('post', 'tickets.json', Zendesk.addCustomFields(data, fields));&eol;&eol; if (typeof result.response !== 'object' &pipe;&pipe; typeof result.response.ticket.id === 'undefined'&eol; &pipe;&pipe; result.status != 201) {&eol; throw 'Cannot create Zendesk issue. Check debug log for more information.';&eol; }&eol;&eol; return result.response.ticket.id;&eol; },&eol;&eol; updateIssue: function(data, fields) {&eol; Zendesk.request('put', 'tickets/' + Zendesk.params.issue_key + '.json', Zendesk.addCustomFields(data, fields));&eol; }&eol;};&eol;&eol;try {&eol; var params = JSON.parse(value),&eol; fields = {},&eol; zendesk = {},&eol; update = {},&eol; data = {},&eol; result = {tags: {}},&eol; required_params = [&eol; 'alert_subject',&eol; 'alert_message',&eol; 'event_id',&eol; 'event_source',&eol; 'event_value',&eol; 'event_update_status'&eol; ],&eol; severities = [&eol; {name: 'not_classified', color: '#97AAB3'},&eol; {name: 'information', color: '#7499FF'},&eol; {name: 'warning', color: '#FFC859'},&eol; {name: 'average', color: '#FFA059'},&eol; {name: 'high', color: '#E97659'},&eol; {name: 'disaster', color: '#E45959'},&eol; {name: 'resolved', color: '#009900'},&eol; {name: 'default', color: '#000000'}&eol; ],&eol; priority;&eol;&eol; Object.keys(params)&eol; .forEach(function (key) {&eol; if (key.startsWith('zendesk_')) {&eol; zendesk[key.substring(8)] = params[key];&eol; }&eol; else if (key.startsWith('customfield_')) {&eol; fields[key.substring(12)] = params[key];&eol; }&eol; else if (key.startsWith('event_update_')) {&eol; update[key.substring(13)] = params[key];&eol; }&eol; else if (required_params.indexOf(key) !== -1 && params[key].trim() === '') {&eol; throw 'Parameter ' + key + ' cannot be empty.';&eol; }&eol; });&eol;&eol; // Possible values: question, incident, problems, task&eol; if (['question', 'incident', 'problem', 'task'].indexOf(params.zendesk_type) === -1) {&eol; throw 'Incorrect "zendesk_type" parameter given: ' + params.zendesk_type +&eol; '\nMust be one of question, incident, problem, task.';&eol; }&eol;&eol; // Possible values: 0 - Trigger, 1 - Discovery, 2 - Autoregistration, 3 - Internal.&eol; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) {&eol; throw 'Incorrect "event_source" parameter given: ' + params.event_source + '\nMust be 0-3.';&eol; }&eol;&eol; // Check {EVENT.VALUE} for trigger-based and internal events.&eol; // Possible values: 1 for problem, 0 for recovering&eol; if (params.event_value !== '0' && params.event_value !== '1'&eol; && (params.event_source === '0' &pipe;&pipe; params.event_source === '3')) {&eol; throw 'Incorrect "event_value" parameter given: ' + params.event_value + '\nMust be 0 or 1.';&eol; }&eol;&eol; // Check {EVENT.UPDATE.STATUS} only for trigger-based events.&eol; // Possible values: 0 - Webhook was called because of problem/recovery event, 1 - Update operation.&eol; if (params.event_source === '0' && params.event_update_status !== '0' && params.event_update_status !== '1') {&eol; throw 'Incorrect "event_update_status" parameter given: ' + params.event_update_status + '\nMust be 0 or 1.';&eol; }&eol;&eol; if (params.event_source !== '0' && params.event_value === '0') {&eol; throw 'Recovery operations are supported only for trigger-based actions.';&eol; }&eol;&eol; // Zendesk_issue_key must be a positive integer if an update action is being performed.&eol; if (params.event_source === '0' && ((params.event_value === '1' && params.event_update_status === '1')&eol; &pipe;&pipe; (params.event_value === '0' && (params.event_update_status === '0' &pipe;&pipe; params.event_update_status === '1')))&eol; && (isNaN(parseInt(params.zendesk_issue_key)) &pipe;&pipe; parseInt(params.zendesk_issue_key) < 1 )) {&eol; throw 'Incorrect "zendesk_issue_key" parameter given: ' + params.zendesk_issue_key +&eol; '\nMust be positive integer.';&eol; }&eol;&eol; if ([0, 1, 2, 3, 4, 5].indexOf(parseInt(params.event_nseverity)) === -1) {&eol; params.event_nseverity = '7';&eol; }&eol;&eol; if (params.event_value === '0') {&eol; params.event_nseverity = '6';&eol; }&eol;&eol; priority = params['severity_' + severities[params.event_nseverity].name] &pipe;&pipe; severities[7].name;&eol;&eol; Zendesk.setParams(zendesk);&eol; Zendesk.HTTPProxy = params.HTTPProxy;&eol;&eol; // Create issue for non trigger-based events.&eol; if (params.event_source !== '0' && params.event_value !== '0') {&eol; data = {&eol; ticket: {&eol; external_id: params.event_id,&eol; type: Zendesk.params.type,&eol; status: 'new',&eol; subject: params.alert_subject,&eol; comment: {&eol; body: params.alert_message,&eol; public: 'false'&eol; },&eol; priority: priority,&eol; tags: params.event_tags&eol; }&eol; };&eol;&eol; Zendesk.createIssue(data, fields);&eol; }&eol; // Create issue for trigger-based events.&eol; else if (params.event_value === '1' && update.status === '0') {&eol; data = {&eol; ticket: {&eol; external_id: params.event_id,&eol; type: Zendesk.params.type,&eol; status: 'new',&eol; subject: params.alert_subject,&eol; comment: {&eol; body: params.zbxurl + (params.zbxurl.endsWith('/') ? '' : '/') + 'tr_events.php?triggerid=' +&eol; params.trigger_id + '&eventid=' + params.event_id + '\n' + params.alert_message,&eol; public: 'false'&eol; },&eol; priority: priority,&eol; tags: params.event_tags&eol; }&eol; };&eol; var key = Zendesk.createIssue(data, fields);&eol;&eol; result.tags.__zbx_zdk_issuekey = key;&eol; result.tags.__zbx_zdk_issuelink = params.zendesk_url +&eol; (params.zendesk_url.endsWith('/') ? '' : '/') + 'agent/tickets/' + key;&eol; }&eol; // Update created issue for trigger-based event.&eol; else {&eol; data = {&eol; ticket: {&eol; type: Zendesk.params.type,&eol; subject: params.alert_subject,&eol; comment: {&eol; body: params.alert_message,&eol; public: 'false'&eol; }&eol; }&eol; };&eol;&eol; Zendesk.updateIssue(data, fields);&eol; }&eol;&eol; return JSON.stringify(result);&eol;}&eol;catch (error) {&eol; Zabbix.log(3, '[Zendesk Webhook] ERROR: ' + error);&eol; throw 'Sending failed: ' + error;&eol;}|30s |1 |1 |{EVENT.TAGS.__zbx_zdk_issuelink} |Zendesk: {EVENT.TAGS.__zbx_zdk_issuekey} | |
@@ -665,168 +665,176 @@ ROW |591 |33 |glpi_token
ROW |592 |33 |glpi_url |<PLACE GLPI URL> |
ROW |593 |33 |trigger_id |{TRIGGER.ID} |
ROW |594 |33 |zabbix_url |{$ZABBIX.URL} |
+ROW |595 |6 |event_update_action |{EVENT.UPDATE.ACTION} |
+ROW |596 |6 |status_counter |25 |
TABLE |media_type_message
-FIELDS|mediatype_messageid|mediatypeid|eventsource|recovery|subject |message |
-ROW |1 |1 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |2 |1 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |3 |1 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |4 |1 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |5 |1 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |6 |3 |0 |0 | |{EVENT.SEVERITY}: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;{EVENT.DATE} {EVENT.TIME} |
-ROW |7 |3 |0 |1 | |Resolved in {EVENT.DURATION}: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;{EVENT.DATE} {EVENT.TIME} |
-ROW |8 |3 |0 |2 | |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem in {EVENT.AGE} at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME} |
-ROW |9 |3 |1 |0 | |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |
-ROW |10 |3 |2 |0 | |Autoregistration: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |11 |4 |0 |0 |Problem: {EVENT.NAME} |<b>Problem started</b> at {EVENT.TIME} on {EVENT.DATE}<br><b>Problem name:</b> {EVENT.NAME}<br><b>Host:</b> {HOST.NAME}<br><b>Severity:</b> {EVENT.SEVERITY}<br><b>Operational data:</b> {EVENT.OPDATA}<br><b>Original problem ID:</b> {EVENT.ID}<br>{TRIGGER.URL} |
-ROW |12 |4 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |<b>Problem has been resolved</b> at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}<br><b>Problem name:</b> {EVENT.NAME}<br><b>Problem duration:</b> {EVENT.DURATION}<br><b>Host:</b> {HOST.NAME}<br><b>Severity:</b> {EVENT.SEVERITY}<br><b>Original problem ID:</b> {EVENT.ID}<br>{TRIGGER.URL} |
-ROW |13 |4 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |<b>{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem</b> at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.<br>{EVENT.UPDATE.MESSAGE}<br><br><b>Current problem status:</b> {EVENT.STATUS}<br><b>Age:</b> {EVENT.AGE}<br><b>Acknowledged:</b> {EVENT.ACK.STATUS}. |
-ROW |14 |4 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|<b>Discovery rule:</b> {DISCOVERY.RULE.NAME}<br><br><b>Device IP:</b> {DISCOVERY.DEVICE.IPADDRESS}<br><b>Device DNS:</b> {DISCOVERY.DEVICE.DNS}<br><b>Device status:</b> {DISCOVERY.DEVICE.STATUS}<br><b>Device uptime:</b> {DISCOVERY.DEVICE.UPTIME}<br><br><b>Device service name:</b> {DISCOVERY.SERVICE.NAME}<br><b>Device service port:</b> {DISCOVERY.SERVICE.PORT}<br><b>Device service status:</b> {DISCOVERY.SERVICE.STATUS}<br><b>Device service uptime:</b> {DISCOVERY.SERVICE.UPTIME} |
-ROW |15 |4 |2 |0 |Autoregistration: {HOST.HOST} |<b>Host name:</b> {HOST.HOST}<br><b>Host IP:</b> {HOST.IP}<br><b>Agent port:</b> {HOST.PORT} |
-ROW |16 |11 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |17 |11 |0 |1 |Resolved: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |18 |11 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |19 |11 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |20 |11 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |21 |12 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |22 |12 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |23 |12 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |24 |12 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |25 |12 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |26 |13 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |27 |13 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |28 |13 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |29 |13 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |30 |13 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |31 |14 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |32 |14 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |33 |14 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |34 |14 |0 |1 |Resolved: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |35 |14 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |36 |15 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |37 |15 |0 |1 |Resolved: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |38 |15 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |39 |15 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |40 |15 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |41 |16 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |42 |16 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |43 |16 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |44 |16 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |45 |16 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |46 |17 |0 |0 |{EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |47 |17 |0 |1 |{EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |48 |17 |0 |2 |{EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |49 |17 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |50 |17 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |51 |17 |3 |0 |Internal problem: {EVENT.NAME} |Internal problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID} |
-ROW |52 |18 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |53 |18 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |54 |18 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |55 |18 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |56 |18 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |57 |19 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |58 |19 |0 |1 |Resolved: {EVENT.RECOVERY.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.RECOVERY.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |59 |19 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |60 |19 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |61 |19 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |62 |20 |0 |0 |{EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |63 |20 |0 |1 |{EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |64 |20 |0 |2 |{EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |65 |20 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |66 |20 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |67 |21 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |68 |21 |0 |1 |Resolved: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |69 |21 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |70 |21 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |71 |21 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |72 |10 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |73 |10 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |74 |10 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |75 |10 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |76 |10 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |77 |22 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |78 |22 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |79 |22 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |80 |5 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |81 |5 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |82 |5 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |83 |5 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |84 |5 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |85 |6 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |86 |6 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |87 |6 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |88 |6 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |89 |6 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |90 |7 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |91 |7 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |92 |7 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |93 |7 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |94 |7 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |95 |8 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |96 |8 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |97 |8 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |98 |8 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |99 |8 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |100 |9 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |101 |9 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |102 |9 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |103 |9 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |104 |9 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |105 |23 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;&eol;Trigger description: {TRIGGER.DESCRIPTION} |
-ROW |106 |23 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |107 |23 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |108 |23 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |109 |23 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |110 |24 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |111 |24 |0 |1 |Resolved: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |112 |24 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |113 |24 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |114 |24 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |115 |25 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |116 |25 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |117 |25 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |118 |25 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |119 |25 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |120 |26 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |121 |26 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |122 |26 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |123 |26 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |124 |26 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |125 |27 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |126 |27 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |127 |27 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |128 |27 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |129 |27 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |130 |28 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |131 |28 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |132 |28 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |133 |28 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |134 |28 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |135 |29 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;Started at {EVENT.TIME} on {EVENT.DATE}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Event info: {$ZABBIX.URL}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID} |
-ROW |136 |29 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;Resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Event info: {$ZABBIX.URL}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID} |
-ROW |137 |29 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;&eol;{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE} |
-ROW |138 |29 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}&eol;Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME}|
-ROW |139 |29 |2 |0 |Autoregistration: {HOST.HOST} |Autoregistration: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |140 |30 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;Started at {EVENT.TIME} on {EVENT.DATE}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Event info: {$ZABBIX.URL}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID} |
-ROW |141 |30 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;Resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Event info: {$ZABBIX.URL}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID} |
-ROW |142 |30 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;&eol;{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE} |
-ROW |143 |30 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}&eol;Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME}|
-ROW |144 |30 |2 |0 |Autoregistration: {HOST.HOST} |Autoregistration: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |145 |31 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |146 |31 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |147 |31 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |148 |31 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |149 |31 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |150 |32 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |151 |32 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |152 |32 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |153 |32 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |154 |32 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
-ROW |155 |33 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |156 |33 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
-ROW |157 |33 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
-ROW |158 |33 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}|Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
-ROW |159 |33 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+FIELDS|mediatype_messageid|mediatypeid|eventsource|recovery|subject |message |
+ROW |1 |1 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |2 |1 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |3 |1 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |4 |1 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |5 |1 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |6 |3 |0 |0 | |{EVENT.SEVERITY}: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;{EVENT.DATE} {EVENT.TIME} |
+ROW |7 |3 |0 |1 | |Resolved in {EVENT.DURATION}: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;{EVENT.DATE} {EVENT.TIME} |
+ROW |8 |3 |0 |2 | |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem in {EVENT.AGE} at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME} |
+ROW |9 |3 |1 |0 | |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |
+ROW |10 |3 |2 |0 | |Autoregistration: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |11 |4 |0 |0 |Problem: {EVENT.NAME} |<b>Problem started</b> at {EVENT.TIME} on {EVENT.DATE}<br><b>Problem name:</b> {EVENT.NAME}<br><b>Host:</b> {HOST.NAME}<br><b>Severity:</b> {EVENT.SEVERITY}<br><b>Operational data:</b> {EVENT.OPDATA}<br><b>Original problem ID:</b> {EVENT.ID}<br>{TRIGGER.URL} |
+ROW |12 |4 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |<b>Problem has been resolved</b> at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}<br><b>Problem name:</b> {EVENT.NAME}<br><b>Problem duration:</b> {EVENT.DURATION}<br><b>Host:</b> {HOST.NAME}<br><b>Severity:</b> {EVENT.SEVERITY}<br><b>Original problem ID:</b> {EVENT.ID}<br>{TRIGGER.URL} |
+ROW |13 |4 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |<b>{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem</b> at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.<br>{EVENT.UPDATE.MESSAGE}<br><br><b>Current problem status:</b> {EVENT.STATUS}<br><b>Age:</b> {EVENT.AGE}<br><b>Acknowledged:</b> {EVENT.ACK.STATUS}. |
+ROW |14 |4 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |<b>Discovery rule:</b> {DISCOVERY.RULE.NAME}<br><br><b>Device IP:</b> {DISCOVERY.DEVICE.IPADDRESS}<br><b>Device DNS:</b> {DISCOVERY.DEVICE.DNS}<br><b>Device status:</b> {DISCOVERY.DEVICE.STATUS}<br><b>Device uptime:</b> {DISCOVERY.DEVICE.UPTIME}<br><br><b>Device service name:</b> {DISCOVERY.SERVICE.NAME}<br><b>Device service port:</b> {DISCOVERY.SERVICE.PORT}<br><b>Device service status:</b> {DISCOVERY.SERVICE.STATUS}<br><b>Device service uptime:</b> {DISCOVERY.SERVICE.UPTIME} |
+ROW |15 |4 |2 |0 |Autoregistration: {HOST.HOST} |<b>Host name:</b> {HOST.HOST}<br><b>Host IP:</b> {HOST.IP}<br><b>Agent port:</b> {HOST.PORT} |
+ROW |16 |11 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |17 |11 |0 |1 |Resolved: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |18 |11 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |19 |11 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |20 |11 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |21 |12 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |22 |12 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |23 |12 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |24 |12 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |25 |12 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |26 |13 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |27 |13 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |28 |13 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |29 |13 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |30 |13 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |31 |14 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |32 |14 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |33 |14 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |34 |14 |0 |1 |Resolved: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |35 |14 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |36 |15 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |37 |15 |0 |1 |Resolved: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |38 |15 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |39 |15 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |40 |15 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |41 |16 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |42 |16 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |43 |16 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |44 |16 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |45 |16 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |46 |17 |0 |0 |{EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |47 |17 |0 |1 |{EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |48 |17 |0 |2 |{EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |49 |17 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |50 |17 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |51 |17 |3 |0 |Internal problem: {EVENT.NAME} |Internal problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID} |
+ROW |52 |18 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |53 |18 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |54 |18 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |55 |18 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |56 |18 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |57 |19 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |58 |19 |0 |1 |Resolved: {EVENT.RECOVERY.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.RECOVERY.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |59 |19 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |60 |19 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |61 |19 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |62 |20 |0 |0 |{EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |63 |20 |0 |1 |{EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |64 |20 |0 |2 |{EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |65 |20 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |66 |20 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |67 |21 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |68 |21 |0 |1 |Resolved: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |69 |21 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |70 |21 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |71 |21 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |72 |10 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |73 |10 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |74 |10 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |75 |10 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |76 |10 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |77 |22 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |78 |22 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |79 |22 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |80 |5 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |81 |5 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |82 |5 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |83 |5 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |84 |5 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |85 |6 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |86 |6 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |87 |6 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |88 |6 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |89 |6 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |90 |7 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |91 |7 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |92 |7 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |93 |7 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |94 |7 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |95 |8 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |96 |8 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |97 |8 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |98 |8 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |99 |8 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |100 |9 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |101 |9 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |102 |9 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |103 |9 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |104 |9 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |105 |23 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;&eol;Trigger description: {TRIGGER.DESCRIPTION} |
+ROW |106 |23 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |107 |23 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |108 |23 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |109 |23 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |110 |24 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |111 |24 |0 |1 |Resolved: {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |112 |24 |0 |2 |Updated problem: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |113 |24 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |114 |24 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |115 |25 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |116 |25 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |117 |25 |0 |2 |Updated problem in {EVENT.AGE}: {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |118 |25 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |119 |25 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |120 |26 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |121 |26 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |122 |26 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |123 |26 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |124 |26 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |125 |27 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |126 |27 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |127 |27 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |128 |27 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |129 |27 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |130 |28 |0 |0 |Problem: {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |131 |28 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |132 |28 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |133 |28 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |134 |28 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |135 |29 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;Started at {EVENT.TIME} on {EVENT.DATE}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Event info: {$ZABBIX.URL}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID} |
+ROW |136 |29 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;Resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Event info: {$ZABBIX.URL}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID} |
+ROW |137 |29 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;&eol;{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE} |
+ROW |138 |29 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}&eol;Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME}|
+ROW |139 |29 |2 |0 |Autoregistration: {HOST.HOST} |Autoregistration: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |140 |30 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;Started at {EVENT.TIME} on {EVENT.DATE}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Event info: {$ZABBIX.URL}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID} |
+ROW |141 |30 |0 |1 |Resolved in {EVENT.DURATION}: {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;Resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Event info: {$ZABBIX.URL}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID} |
+ROW |142 |30 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |[{EVENT.STATUS}] {EVENT.NAME}&eol;&eol;{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE} |
+ROW |143 |30 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}&eol;Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME}|
+ROW |144 |30 |2 |0 |Autoregistration: {HOST.HOST} |Autoregistration: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |145 |31 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |146 |31 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |147 |31 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |148 |31 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |149 |31 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |150 |32 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |151 |32 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |152 |32 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |153 |32 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |154 |32 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |155 |33 |0 |0 |[{EVENT.STATUS}] {EVENT.NAME} |Problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Operational data: {EVENT.OPDATA}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |156 |33 |0 |1 |[{EVENT.STATUS}] {EVENT.NAME} |Problem has been resolved in {EVENT.DURATION} at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Host: {HOST.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;{TRIGGER.URL} |
+ROW |157 |33 |0 |2 |[{EVENT.STATUS}] {EVENT.NAME} |{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;{EVENT.UPDATE.MESSAGE}&eol;&eol;Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
+ROW |158 |33 |1 |0 |Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} |Discovery rule: {DISCOVERY.RULE.NAME}&eol;&eol;Device IP: {DISCOVERY.DEVICE.IPADDRESS}&eol;Device DNS: {DISCOVERY.DEVICE.DNS}&eol;Device status: {DISCOVERY.DEVICE.STATUS}&eol;Device uptime: {DISCOVERY.DEVICE.UPTIME}&eol;&eol;Device service name: {DISCOVERY.SERVICE.NAME}&eol;Device service port: {DISCOVERY.SERVICE.PORT}&eol;Device service status: {DISCOVERY.SERVICE.STATUS}&eol;Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
+ROW |159 |33 |2 |0 |Autoregistration: {HOST.HOST} |Host name: {HOST.HOST}&eol;Host IP: {HOST.IP}&eol;Agent port: {HOST.PORT} |
+ROW |160 |10 |4 |0 |Service "{SERVICE.NAME}" problem: {EVENT.NAME} |Service problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Service problem name: {EVENT.NAME}&eol;Service: {SERVICE.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;Service description: {SERVICE.DESCRIPTION}&eol;&eol;{SERVICE.ROOTCAUSE} |
+ROW |161 |10 |4 |1 |Service "{SERVICE.NAME}" resolved in {EVENT.DURATION}: {EVENT.NAME} |Service "{SERVICE.NAME}" has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;Service description: {SERVICE.DESCRIPTION} |
+ROW |162 |10 |4 |2 |Changed "{SERVICE.NAME}" service status to {EVENT.UPDATE.SEVERITY} in {EVENT.AGE}|Changed "{SERVICE.NAME}" service status to {EVENT.UPDATE.SEVERITY} at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;Current problem age is {EVENT.AGE}.&eol;Service description: {SERVICE.DESCRIPTION}&eol;&eol;{SERVICE.ROOTCAUSE} |
+ROW |163 |14 |4 |0 |Service "{SERVICE.NAME}" problem: {EVENT.NAME} |Service problem started at {EVENT.TIME} on {EVENT.DATE}&eol;Service problem name: {EVENT.NAME}&eol;Service: {SERVICE.NAME}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;Service description: {SERVICE.DESCRIPTION}&eol;&eol;{SERVICE.ROOTCAUSE} |
+ROW |164 |14 |4 |1 |Service "{SERVICE.NAME}" resolved in {EVENT.DURATION}: {EVENT.NAME} |Service "{SERVICE.NAME}" has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}&eol;Problem name: {EVENT.NAME}&eol;Problem duration: {EVENT.DURATION}&eol;Severity: {EVENT.SEVERITY}&eol;Original problem ID: {EVENT.ID}&eol;Service description: {SERVICE.DESCRIPTION} |
+ROW |165 |14 |4 |2 |Changed "{SERVICE.NAME}" service status to {EVENT.UPDATE.SEVERITY} in {EVENT.AGE}|Changed "{SERVICE.NAME}" service status to {EVENT.UPDATE.SEVERITY} at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.&eol;Current problem age is {EVENT.AGE}.&eol;Service description: {SERVICE.DESCRIPTION}&eol;&eol;{SERVICE.ROOTCAUSE} |
TABLE |usrgrp
FIELDS|usrgrpid|name |gui_access|users_status|debug_mode|userdirectoryid|