2021-02-27 13:40:40 +01:00
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export >
2023-06-30 08:48:59 +02:00
<version > 6.0</version>
<date > 2023-06-29T23:22:52Z</date>
2021-02-27 13:40:40 +01:00
<media_types >
<media_type >
<name > MailGraph</name>
<type > WEBHOOK</type>
2023-06-30 08:48:59 +02:00
<parameters >
2021-02-27 13:40:40 +01:00
<parameter >
<name > baseURL</name>
2021-03-05 11:57:01 +01:00
<value > https://mydomain.com/zabbix/</value>
2021-02-27 13:40:40 +01:00
</parameter>
<parameter >
<name > duration</name>
<value > {EVENT.DURATION}</value>
</parameter>
<parameter >
<name > eventId</name>
<value > {EVENT.ID}</value>
</parameter>
<parameter >
<name > graphHeight</name>
<value > 120</value>
</parameter>
<parameter >
<name > graphWidth</name>
<value > 300</value>
</parameter>
<parameter >
<name > HTTPProxy</name>
<value />
</parameter>
2021-03-17 13:57:25 +01:00
<parameter >
<name > infoTest</name>
<value > Test</value>
</parameter>
2021-02-27 13:40:40 +01:00
<parameter >
<name > itemId</name>
<value > {ITEM.ID}</value>
</parameter>
2021-03-10 19:57:42 +01:00
<parameter >
<name > periods</name>
<value > 10m,4h,1d,7d</value>
</parameter>
<parameter >
<name > periods_headers</name>
<value > Last 10 minutes,Last 4 hours,Last day,Last 7 days</value>
</parameter>
2021-02-27 13:40:40 +01:00
<parameter >
<name > recipient</name>
<value > {ALERT.SENDTO}</value>
</parameter>
<parameter >
<name > showLegend</name>
<value > 0</value>
</parameter>
<parameter >
<name > subject</name>
2021-03-02 23:17:03 +01:00
<value > {{ HOST_NAME|raw }}: ({{ EVENT_SEVERITY }}) {{ EVENT_NAME|raw }}</value>
2021-02-27 13:40:40 +01:00
</parameter>
<parameter >
<name > URL</name>
2021-03-05 11:57:01 +01:00
<value > https://mydomain.com/mailGraph.php</value>
2021-02-27 13:40:40 +01:00
</parameter>
</parameters>
2023-06-30 08:48:59 +02:00
<script > try {
// Pickup parameters
params = JSON.parse(value),
req = new HttpRequest(),
fields = {},
resp = '',
result = { tags: {} };
// Set HTTP proxy if required
if (typeof params.HTTPProxy === 'string' & & params.HTTPProxy.trim() !== '') {
req.setProxy(params.HTTPProxy);
fields.HTTPProxy = params.HTTPProxy;
}
// Declare output type
req.addHeader('Content-Type: application/json');
// Must have fields
fields.itemId = params.itemId;
fields.eventId = params.eventId;
fields.recipient = params.recipient;
fields.baseURL = params.baseURL;
fields.duration = params.duration;
// Optional fields
if (typeof params.graphWidth === 'string') { fields.graphWidth = params.graphWidth; }
if (typeof params.graphHeight === 'string') { fields.graphHeight = params.graphHeight; }
if (typeof params.subject === 'string') { fields.subject = params.subject; }
if (typeof params.showLegend === 'string') { fields.showLegend = params.showLegend; }
if (typeof params.periods === 'string') { fields.periods = params.periods; }
if (typeof params.periods_headers === 'string') { fields.periods_headers = params.periods_headers; }
if (typeof params.debug === 'string') { fields.debug = params.debug; }
// Add generic fields
Object.keys(params).forEach(function(key) {
if (key.substring(0, 4) == 'info') {
fields[key] = params[key];
}
});
// Post information to the processing script
Zabbix.Log(4, '[MailGraph Webhook] Sending request: ' + params.URL + '?' + JSON.stringify(fields));
var resp = req.post(params.URL,JSON.stringify(fields));
Zabbix.Log(4, '[Mailgraph Webhook] Receiving response:' + resp);
// If there was an error, report it
if (req.getStatus() != 200) { throw JSON.parse(resp).errors[0]; }
// We expect the message id back from the processing script
resp = JSON.parse(resp);
result.tags.__message_id = resp.messageId;
// Pass the result back to Zabbix
return JSON.stringify(result);
}
catch (error)
{
// In case something went wrong in the processing, pass the error back to Zabbix
Zabbix.Log(127, 'MailGraph notification failed : '+error);
throw 'MailGraph notification failed : '+error;
2021-02-27 13:40:40 +01:00
}</script>
<process_tags > YES</process_tags>
2023-06-30 08:48:59 +02:00
<description > The " URL" must point to the location of the processing script. If a proxy is required, define " HTTPProxy" for the proxy address.
Customization:
- " graphWidth" and " graphWidth" can be defined for the image size
- " showLegend" can be defined to show or hide the legend of the graph
- " subject" can be defined for a customized subject for the mail message
- " periods" and " periods_headers" can be defined for displaying multiple periods of the same graph, or
- " period" and " period_header" can be defined to display a single graph
The html.template and plain.template files can be adjusted (TWIG format).
2021-03-05 11:57:01 +01:00
More details are available at https://github.com/moudsen/mailGraph</description>
2021-02-27 13:40:40 +01:00
<message_templates >
<message_template >
<event_source > TRIGGERS</event_source>
<operation_mode > PROBLEM</operation_mode>
<subject > Problem: {EVENT.NAME}</subject>
2023-06-30 08:48:59 +02:00
<message > Problem started at {EVENT.TIME} on {EVENT.DATE}
Problem name: {EVENT.NAME}
Host: {HOST.NAME}
Severity: {EVENT.SEVERITY}
Operational data: {EVENT.OPDATA}
Original problem ID: {EVENT.ID}
{TRIGGER.URL}
eventId: {EVENT.ID}
TriggerId: {TRIGGER.ID}
2021-02-27 17:36:06 +01:00
itemId: {ITEM.ID]</message>
2021-02-27 13:40:40 +01:00
</message_template>
<message_template >
<event_source > TRIGGERS</event_source>
<operation_mode > RECOVERY</operation_mode>
2023-06-30 08:48:59 +02:00
<subject > Resolved in {EVENT.DURATION}: {EVENT.RECOVERY.NAME}</subject>
<message > Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
Problem name: {EVENT.RECOVERY.NAME}
Problem duration: {EVENT.DURATION}
Host: {HOST.NAME}
Severity: {EVENT.SEVERITY}
Original problem ID: {EVENT.ID}
{TRIGGER.URL}
eventId: {EVENT.ID}
TriggerId: {TRIGGER.ID}
2021-02-27 17:36:06 +01:00
itemId: {ITEM.ID]</message>
2021-02-27 13:40:40 +01:00
</message_template>
<message_template >
<event_source > TRIGGERS</event_source>
<operation_mode > UPDATE</operation_mode>
<subject > Updated problem in {EVENT.AGE}: {EVENT.NAME}</subject>
2023-06-30 08:48:59 +02:00
<message > {USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.
{EVENT.UPDATE.MESSAGE}
Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}.
eventId: {EVENT.ID}
TriggerId: {TRIGGER.ID}
2021-02-27 17:36:06 +01:00
itemId: {ITEM.ID]</message>
2021-02-27 13:40:40 +01:00
</message_template>
</message_templates>
</media_type>
</media_types>
2021-03-17 13:57:25 +01:00
</zabbix_export>