diff --git a/zabify-mediatype.json b/zabify-mediatype.json new file mode 100644 index 0000000..6842d61 --- /dev/null +++ b/zabify-mediatype.json @@ -0,0 +1,74 @@ +{ + "zabbix_export": { + "version": "6.4", + "media_types": [ + { + "name": "Zabify", + "type": "WEBHOOK", + "parameters": [ + { + "name": "event_id", + "value": "{EVENT.ID}" + }, + { + "name": "fully_qualified_name", + "value": "localhost" + }, + { + "name": "host_id", + "value": "{HOST.ID}" + }, + { + "name": "message", + "value": "{ALERT.MESSAGE}" + }, + { + "name": "port", + "value": "4338" + }, + { + "name": "protocol", + "value": "http" + }, + { + "name": "proxy" + }, + { + "name": "send_to", + "value": "{ALERT.SENDTO}" + }, + { + "name": "severity", + "value": "{EVENT.NSEVERITY}" + }, + { + "name": "title", + "value": "{ALERT.SUBJECT}" + } + ], + "script": "try {\n Zabbix.log(4, '[ Zabify ] Starting to send push notification');\n\n var params = JSON.parse(value);\n var payload = {\n \"token\": params.send_to.split(\"===\")[1],\n \"rsaKey\": params.send_to.split(\"===\")[0],\n \"notification\": {\n \"data\": {\n \"host_id\": params.host_id,\n \"event_id\": params.event_id,\n \"severity\": params.severity\n },\n \"message\": { \n \"title\": params.title,\n \"message\": params.message,\n }\n }\n };\n\n Zabbix.log(4, '[ Zabify ] Sending request');\n var request = new HttpRequest();\n request.addHeader('Content-Type: application/json');\n request.setProxy(params.proxy);\n\n var data = JSON.stringify(payload);\n var endpoint = params.protocol + \"://\" + params.fully_qualified_name + \":\" + params.port + \"/send\";\n var response = request.post(endpoint, data);\n if (response === null) {\n throw 'Unknown error. Check debug log for more information.';\n }\n Zabbix.log(4, '[ Zabify ] Received response with status code ' + request.getStatus() + '\\n' + response);\n\n if (request.getStatus() != 200) {\n var parsedResponse;\n try {\n parsedResponse = JSON.parse(response);\n }\n catch (error) {\n Zabbix.log(4, '[ Zabify ] Failed to parse response');\n throw 'Unknown error. Check debug log for more information.';\n }\n\n throw parsedResponse;\n }\n\n Zabbix.log(4, '[ Zabify ] Finished to send push notification without errors');\n return 'OK';\n}\ncatch (error) {\n Zabbix.log(4, '[ Zabify ] Failed to send push notification: ' + error);\n throw 'Zabbix app notification failed: ' + error;\n}", + "description": "Please refer to the Zabify integration documentation on https://www.zabify.de/plugin for more information.", + "message_templates": [ + { + "event_source": "TRIGGERS", + "operation_mode": "PROBLEM", + "subject": "Problem: {EVENT.NAME}", + "message": "Problem started at {EVENT.TIME} on {EVENT.DATE}\nHost: {HOST.NAME}\nSeverity: {EVENT.SEVERITY}\nOperational data: {EVENT.OPDATA}\nOriginal problem ID: {EVENT.ID}\n{TRIGGER.URL}" + }, + { + "event_source": "TRIGGERS", + "operation_mode": "RECOVERY", + "subject": "Resolved: {EVENT.NAME}", + "message": "Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}\nProblem duration: {EVENT.DURATION}\nHost: {HOST.NAME}\nSeverity: {EVENT.SEVERITY}\nOriginal problem ID: {EVENT.ID}\n{TRIGGER.URL}" + }, + { + "event_source": "TRIGGERS", + "operation_mode": "UPDATE", + "subject": "Updated problem in {EVENT.AGE}: {EVENT.NAME}", + "message": "{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.\n{EVENT.UPDATE.MESSAGE}\n\nCurrent problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}." + } + ] + } + ] + } +} \ No newline at end of file