zabify/zabify-mediatype.json

74 lines
4.9 KiB
JSON
Raw Normal View History

{
"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}."
}
]
}
]
}
}