mirror of
https://github.com/moudsen/mailGraph
synced 2025-01-30 20:01:38 +01:00
Several enhancements and bugfixes - getting ready for v1.20 release (v1.19)
This commit is contained in:
parent
0c7d577975
commit
5797538519
@ -6,7 +6,7 @@
|
|||||||
"cli_eventValue": 0,
|
"cli_eventValue": 0,
|
||||||
"cli_duration": 0,
|
"cli_duration": 0,
|
||||||
"cli_recipient": "recipient@domain.com",
|
"cli_recipient": "recipient@domain.com",
|
||||||
"cli_subject": "{{ HOST_NAME|raw }}: ({{ EVENT_SEVERITY }}) {{ EVENT_NAME|raw }}",
|
"cli_subject": "[CLI TEST] {{ HOST_NAME|raw }}: ({{ EVENT_SEVERITY }}) {{ EVENT_NAME|raw }}",
|
||||||
"cli_baseURL": "https:\/\/domain.com\/zabbix\/",
|
"cli_baseURL": "https:\/\/domain.com\/zabbix\/",
|
||||||
"zabbix_user": "alogicalusername",
|
"zabbix_user": "alogicalusername",
|
||||||
"zabbix_user_pwd": "astrongpassword",
|
"zabbix_user_pwd": "astrongpassword",
|
||||||
|
57
javascript/zabbix.mailGraph.js
Normal file
57
javascript/zabbix.mailGraph.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
try {
|
||||||
|
// Pickup parameters
|
||||||
|
params = JSON.parse(value),
|
||||||
|
req = new CurlHttpRequest(),
|
||||||
|
fields = {},
|
||||||
|
resp = '',
|
||||||
|
result = { tags: {} };
|
||||||
|
|
||||||
|
// Set HTTP proxy if required
|
||||||
|
if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') { req.setProxy(params.HTTPProxy); }
|
||||||
|
|
||||||
|
// Declare output type
|
||||||
|
req.AddHeader('Content-Type: application/json');
|
||||||
|
|
||||||
|
// Must have fields
|
||||||
|
fields.itemId = params.itemId;
|
||||||
|
fields.triggerId = params.triggerId;
|
||||||
|
fields.eventId = params.eventId;
|
||||||
|
fields.eventValue = params.eventValue;
|
||||||
|
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; }
|
||||||
|
|
||||||
|
// 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.Status() != 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;
|
||||||
|
}
|
136
mailGraph.php
136
mailGraph.php
@ -21,8 +21,9 @@
|
|||||||
// 1.16 2021/03/02 - Mark Oudsen - Found issue with graph.get not returning graphs to requested item ids
|
// 1.16 2021/03/02 - Mark Oudsen - Found issue with graph.get not returning graphs to requested item ids
|
||||||
// Workaround programmed (fetch host graphs, search for certain itemids)
|
// Workaround programmed (fetch host graphs, search for certain itemids)
|
||||||
// 1.17 2021/03/02 - Mark Oudsen - Added ability to specify period of time displayed in the graph
|
// 1.17 2021/03/02 - Mark Oudsen - Added ability to specify period of time displayed in the graph
|
||||||
// 1.18 2021/03/04 - Mark Oudsen - Added ability to specify a deviating period of time per trigger
|
// 1.18 2021/03/04 - Mark Oudsen - Added ability to specify Tags per trigger
|
||||||
// Added ability to specify different graph to be embedded
|
// Shorten long "lastvalue" or "prevvalue"
|
||||||
|
// 1.19 2021/03/05 - Mark Oudsen - Added ability to pass Zabbix 'infoXXX' parameters for TWIG template
|
||||||
// ------------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// (C) M.J.Oudsen, mark.oudsen@puzzl.nl
|
// (C) M.J.Oudsen, mark.oudsen@puzzl.nl
|
||||||
@ -45,7 +46,7 @@
|
|||||||
|
|
||||||
// CONSTANTS
|
// CONSTANTS
|
||||||
|
|
||||||
$cVersion = 'v1.18';
|
$cVersion = 'v1.19';
|
||||||
$cCRLF = chr(10).chr(13);
|
$cCRLF = chr(10).chr(13);
|
||||||
$maskDateTime = 'Y-m-d H:i:s';
|
$maskDateTime = 'Y-m-d H:i:s';
|
||||||
|
|
||||||
@ -346,7 +347,7 @@
|
|||||||
_log('# Data passed from Zabbix'.$cCRLF.json_encode($problemData,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
_log('# Data passed from Zabbix'.$cCRLF.json_encode($problemData,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||||
|
|
||||||
// --- CHECK AND SET P_ VARIABLES ---
|
// --- CHECK AND SET P_ VARIABLES ---
|
||||||
// FROM POST OR CLI DATA ---
|
// FROM POST OR CLI DATA
|
||||||
|
|
||||||
if (!isset($problemData['itemId'])) { echo "Missing ITEM ID?\n"; die; }
|
if (!isset($problemData['itemId'])) { echo "Missing ITEM ID?\n"; die; }
|
||||||
$p_itemId = intval($problemData['itemId']);
|
$p_itemId = intval($problemData['itemId']);
|
||||||
@ -384,6 +385,13 @@
|
|||||||
$p_period = '48h';
|
$p_period = '48h';
|
||||||
if (isset($problemData['period'])) { $p_period = $problemData['period']; }
|
if (isset($problemData['period'])) { $p_period = $problemData['period']; }
|
||||||
|
|
||||||
|
// DYNAMIC VARIABLES FROM ZABBIX
|
||||||
|
|
||||||
|
foreach($problemData as $aKey=>$aValue)
|
||||||
|
{
|
||||||
|
if (substr($aKey,0,4)=='info') { $mailData[$aKey] = $aValue; }
|
||||||
|
}
|
||||||
|
|
||||||
// FROM CONFIG DATA
|
// FROM CONFIG DATA
|
||||||
|
|
||||||
$p_smtp_server = 'localhost';
|
$p_smtp_server = 'localhost';
|
||||||
@ -501,16 +509,32 @@
|
|||||||
|
|
||||||
foreach($thisTrigger['result'][0]['tags'] as $aTag)
|
foreach($thisTrigger['result'][0]['tags'] as $aTag)
|
||||||
{
|
{
|
||||||
if ($aTag['tag']=='mailGraph.period')
|
switch ($aTag['tag'])
|
||||||
{
|
{
|
||||||
$p_period = $aTag['value'];
|
case 'mailGraph.period':
|
||||||
_log('+ Graph display period override = '.$p_period);
|
$p_period = $aTag['value'];
|
||||||
}
|
_log('+ Graph display period override = '.$p_period);
|
||||||
|
break;
|
||||||
|
|
||||||
if ($aTag['tag']=='mailGraph.graph')
|
case 'mailGraph.graph':
|
||||||
{
|
$forceGraph = intval($aTag['value']);
|
||||||
$forceGraph = intval($aTag['value']);
|
_log('+ Graph ID to display = '.$forceGraph);
|
||||||
_log('+ Graph ID to display = '.$forceGraph);
|
break;
|
||||||
|
|
||||||
|
case 'mailGraph.showLegend':
|
||||||
|
$p_showLegend = intval($aTag['value']);
|
||||||
|
_log('+ Graph display legend override = '.$p_showLegend);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'mailGraph.graphWidth':
|
||||||
|
$p_graphWidth = intval($aTag['value']);
|
||||||
|
_log('+ Graph height override = '.$$p_graphWidth);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'mailGraph.graphHeight':
|
||||||
|
$p_graphHeight = intval($aTag['value']);
|
||||||
|
_log('+ Graph height override = '.$$p_graphHeight);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -543,6 +567,10 @@
|
|||||||
if (substr($mailData['ITEM_LASTVALUE'],0,5)=='<?xml') { $mailData['ITEM_LASTVALUE'] = '[record]'; }
|
if (substr($mailData['ITEM_LASTVALUE'],0,5)=='<?xml') { $mailData['ITEM_LASTVALUE'] = '[record]'; }
|
||||||
if (substr($mailData['ITEM_PREVIOUSVALUE'],0,5)=='<?xml') { $mailData['ITEM_PREVIOUSTVALUE'] = '[record]'; }
|
if (substr($mailData['ITEM_PREVIOUSVALUE'],0,5)=='<?xml') { $mailData['ITEM_PREVIOUSTVALUE'] = '[record]'; }
|
||||||
|
|
||||||
|
// Catch long elements
|
||||||
|
if (strlen($mailData['ITEM_LASTVALUE'])>50) { $mailData['ITEM_LASTVALUE'] = substr($mailData['ITEM_LASTVALUE'],0,50).' ...'; }
|
||||||
|
if (strlen($mailData['ITEM_PREVIOUSVALUE'])>50) { $mailData['ITEM_PREVIOUSVALUE'] = substr($mailData['ITEM_PREVIOUSVALUE'],0,50).' ...'; }
|
||||||
|
|
||||||
// --- GET HOST INFO ---
|
// --- GET HOST INFO ---
|
||||||
|
|
||||||
_log('# Retrieve HOST information');
|
_log('# Retrieve HOST information');
|
||||||
@ -712,63 +740,45 @@
|
|||||||
|
|
||||||
// If we have any matching graph, make the embedding information available
|
// If we have any matching graph, make the embedding information available
|
||||||
|
|
||||||
if ($forceGraph>0)
|
if ((sizeof($matchedGraphs) + sizeof($otherGraphs) + $forceGraph)>0)
|
||||||
{
|
{
|
||||||
_log('# Adding FORCED graph #'.$forceGraph);
|
if ($forceGraph>0)
|
||||||
$graphFile = GraphImageById($forceGraph,
|
{
|
||||||
|
$theGraph = $forceGraphInfo;
|
||||||
|
$theType = 'Forced';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (sizeof($matchedGraphs)>0)
|
||||||
|
{
|
||||||
|
$theGraph = $matchedGraphs[0];
|
||||||
|
$theType = 'Matched';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (sizeof($otherGraphs)>0)
|
||||||
|
{
|
||||||
|
$theGraph = $otherGraphs[0];
|
||||||
|
$theType = 'Other';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$mailData['GRAPH_ID'] = $theGraph['graphid'];
|
||||||
|
$mailData['GRAPH_NAME'] = $theGraph['name'];
|
||||||
|
$mailData['GRAPH_MATCH'] = $theType;
|
||||||
|
|
||||||
|
_log('# Adding '.strtoupper($theType).' graph #'.$mailData['GRAPH_ID']);
|
||||||
|
|
||||||
|
$graphFile = GraphImageById($mailData['GRAPH_ID'],
|
||||||
$p_graphWidth,$p_graphHeight,
|
$p_graphWidth,$p_graphHeight,
|
||||||
$forceGraphInfo['result'][0]['graphtype'],
|
$theGraph['graphtype'],
|
||||||
$p_showLegend,$p_period);
|
$p_showLegend,$p_period);
|
||||||
|
|
||||||
_log('> Filename = '.$graphFile);
|
_log('> Filename = '.$graphFile);
|
||||||
|
|
||||||
$mailData['GRAPH_ID'] = $forceGraph;
|
|
||||||
$mailData['GRAPH_NAME'] = $forceGraphInfo['result'][0]['name'];
|
|
||||||
$mailData['GRAPH_URL'] = $z_url_image . $graphFile;
|
$mailData['GRAPH_URL'] = $z_url_image . $graphFile;
|
||||||
$mailData['GRAPH_MATCH'] = 'Forced';
|
$mailData['GRAPH_ZABBIXLINK'] = $z_server.'/graphs.php?form=update&graphid='.$mailData['GRAPH_ID'];
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ((sizeof($matchedGraphs)+sizeof($otherGraphs))>0)
|
|
||||||
{
|
|
||||||
// Exact match goes first
|
|
||||||
|
|
||||||
if (sizeof($matchedGraphs)>0)
|
|
||||||
{
|
|
||||||
_log('# Adding MATCHED graph #'.$matchedGraphs[0]['graphid']);
|
|
||||||
$graphFile = GraphImageById($matchedGraphs[0]['graphid'],
|
|
||||||
$p_graphWidth,$p_graphHeight,
|
|
||||||
$matchedGraphs[0]['graphtype'],
|
|
||||||
$p_showLegend,$p_period);
|
|
||||||
|
|
||||||
_log('> Filename = '.$graphFile);
|
|
||||||
|
|
||||||
$mailData['GRAPH_ID'] = $matchedGraphs[0]['graphid'];
|
|
||||||
$mailData['GRAPH_NAME'] = $matchedGraphs[0]['name'];
|
|
||||||
$mailData['GRAPH_URL'] = $z_url_image . $graphFile;
|
|
||||||
$mailData['GRAPH_MATCH'] = 'Exact';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (($p_graph_match!='exact') && (sizeof($otherGraphs)>0))
|
|
||||||
{
|
|
||||||
_log('# Adding OTHER graph #'.$otherGraphs[0]['graphid']);
|
|
||||||
$graphFile = GraphImageById($otherGraphs[0]['graphid'],
|
|
||||||
$p_graphWidth,$p_graphHeight,
|
|
||||||
$otherGraphs[0]['graphtype'],
|
|
||||||
$p_showLegend);
|
|
||||||
|
|
||||||
_log('> Filename = '.$graphFile);
|
|
||||||
|
|
||||||
$mailData['GRAPH_ID'] = $otherGraphs[0]['graphid'];
|
|
||||||
$mailData['GRAPH_NAME'] = $otherGraphs[0]['name'];
|
|
||||||
$mailData['GRAPH_URL'] = $z_url_image . $graphFile;
|
|
||||||
$mailData['GRAPH_MATCH'] = 'Other';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$mailData['GRAPH_ZABBIXLINK'] = $z_server.'/graphs.php?form=update&graphid='.$mailData['GRAPH_ID'];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prepare HTML LOG content
|
// Prepare HTML LOG content
|
||||||
@ -917,4 +927,4 @@
|
|||||||
file_put_contents($z_log_path.$logName,$content);
|
file_put_contents($z_log_path.$logName,$content);
|
||||||
_log('= Log stored to '.$z_log_path.$logName);
|
_log('= Log stored to '.$z_log_path.$logName);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
125
mailGraph.xml
125
mailGraph.xml
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<zabbix_export>
|
<zabbix_export>
|
||||||
<version>5.0</version>
|
<version>5.0</version>
|
||||||
<date>2021-02-28T20:27:03Z</date>
|
<date>2021-03-05T10:51:39Z</date>
|
||||||
<media_types>
|
<media_types>
|
||||||
<media_type>
|
<media_type>
|
||||||
<name>MailGraph</name>
|
<name>MailGraph</name>
|
||||||
@ -9,7 +9,7 @@
|
|||||||
<parameters>
|
<parameters>
|
||||||
<parameter>
|
<parameter>
|
||||||
<name>baseURL</name>
|
<name>baseURL</name>
|
||||||
<value>https://domain.com/zabbix/</value>
|
<value>https://mydomain.com/zabbix/</value>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter>
|
<parameter>
|
||||||
<name>duration</name>
|
<name>duration</name>
|
||||||
@ -35,6 +35,10 @@
|
|||||||
<name>HTTPProxy</name>
|
<name>HTTPProxy</name>
|
||||||
<value/>
|
<value/>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
<parameter>
|
||||||
|
<name>infoGiveMeAName</name>
|
||||||
|
<value>A generic value you want to pass to MailGraph</value>
|
||||||
|
</parameter>
|
||||||
<parameter>
|
<parameter>
|
||||||
<name>itemId</name>
|
<name>itemId</name>
|
||||||
<value>{ITEM.ID}</value>
|
<value>{ITEM.ID}</value>
|
||||||
@ -57,58 +61,65 @@
|
|||||||
</parameter>
|
</parameter>
|
||||||
<parameter>
|
<parameter>
|
||||||
<name>URL</name>
|
<name>URL</name>
|
||||||
<value>https://domain.com/mailGraph.php</value>
|
<value>https://mydomain.com/mailGraph.php</value>
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
<script>try {
|
<script>try {
|
||||||
// Pickup parameters
|
// Pickup parameters
|
||||||
params = JSON.parse(value),
|
params = JSON.parse(value),
|
||||||
req = new CurlHttpRequest(),
|
req = new CurlHttpRequest(),
|
||||||
fields = {},
|
fields = {},
|
||||||
resp = '',
|
resp = '',
|
||||||
result = { tags: {} };
|
result = { tags: {} };
|
||||||
|
|
||||||
// Set HTTP proxy if required
|
// Set HTTP proxy if required
|
||||||
if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') { req.setProxy(params.HTTPProxy); }
|
if (typeof params.HTTPProxy === 'string' && params.HTTPProxy.trim() !== '') { req.setProxy(params.HTTPProxy); }
|
||||||
|
|
||||||
// Declare output type
|
// Declare output type
|
||||||
req.AddHeader('Content-Type: application/json');
|
req.AddHeader('Content-Type: application/json');
|
||||||
|
|
||||||
// Must have fields
|
// Must have fields
|
||||||
fields.itemId = params.itemId;
|
fields.itemId = params.itemId;
|
||||||
fields.triggerId = params.triggerId;
|
fields.triggerId = params.triggerId;
|
||||||
fields.eventId = params.eventId;
|
fields.eventId = params.eventId;
|
||||||
fields.eventValue = params.eventValue;
|
fields.eventValue = params.eventValue;
|
||||||
fields.recipient = params.recipient;
|
fields.recipient = params.recipient;
|
||||||
fields.baseURL = params.baseURL;
|
fields.baseURL = params.baseURL;
|
||||||
fields.duration = params.duration;
|
fields.duration = params.duration;
|
||||||
|
|
||||||
// Optional fields
|
// Optional fields
|
||||||
if (typeof params.graphWidth === 'string') { fields.graphWidth = params.graphWidth; }
|
if (typeof params.graphWidth === 'string') { fields.graphWidth = params.graphWidth; }
|
||||||
if (typeof params.graphHeight === 'string') { fields.graphHeight = params.graphHeight; }
|
if (typeof params.graphHeight === 'string') { fields.graphHeight = params.graphHeight; }
|
||||||
if (typeof params.subject === 'string') { fields.subject = params.subject; }
|
if (typeof params.subject === 'string') { fields.subject = params.subject; }
|
||||||
if (typeof params.showLegend === 'string') { fields.showLegend = params.showLegend; }
|
if (typeof params.showLegend === 'string') { fields.showLegend = params.showLegend; }
|
||||||
|
|
||||||
// Post information to the processing script
|
// Add generic fields
|
||||||
Zabbix.Log(4, '[MailGraph Webhook] Sending request: ' + params.URL + '?' + JSON.stringify(fields));
|
Object.keys(params).forEach(function(key) {
|
||||||
var resp = req.Post(params.URL,JSON.stringify(fields));
|
if (key.substring(0, 4) == 'info') {
|
||||||
Zabbix.Log(4, '[Mailgraph Webhook] Receiving response:' + resp);
|
fields[key] = params[key];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// If there was an error, report it
|
// Post information to the processing script
|
||||||
if (req.Status() != 200) { throw JSON.parse(resp).errors[0]; }
|
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);
|
||||||
|
|
||||||
// We expect the message id back from the processing script
|
// If there was an error, report it
|
||||||
resp = JSON.parse(resp);
|
if (req.Status() != 200) { throw JSON.parse(resp).errors[0]; }
|
||||||
result.tags.__message_id = resp.messageId;
|
|
||||||
|
|
||||||
// Pass the result back to Zabbix
|
// We expect the message id back from the processing script
|
||||||
return JSON.stringify(result);
|
resp = JSON.parse(resp);
|
||||||
|
result.tags.__message_id = resp.messageId;
|
||||||
|
|
||||||
|
// Pass the result back to Zabbix
|
||||||
|
return JSON.stringify(result);
|
||||||
}
|
}
|
||||||
catch (error)
|
catch (error)
|
||||||
{
|
{
|
||||||
// In case something went wrong in the processing, pass the error back to Zabbix
|
// In case something went wrong in the processing, pass the error back to Zabbix
|
||||||
Zabbix.Log(127, 'MailGraph notification failed : '+error);
|
Zabbix.Log(127, 'MailGraph notification failed : '+error);
|
||||||
throw 'MailGraph notification failed : '+error;
|
throw 'MailGraph notification failed : '+error;
|
||||||
}</script>
|
}</script>
|
||||||
<process_tags>YES</process_tags>
|
<process_tags>YES</process_tags>
|
||||||
<description>The "URL" must point to the location of the processing script. If a proxy is required, define "HTTPProxy" for the proxy address.
|
<description>The "URL" must point to the location of the processing script. If a proxy is required, define "HTTPProxy" for the proxy address.
|
||||||
@ -120,38 +131,7 @@ Customization:
|
|||||||
|
|
||||||
The html.template and plain.template files can be adjusted (TWIG format).
|
The html.template and plain.template files can be adjusted (TWIG format).
|
||||||
|
|
||||||
Values available:
|
More details are available at https://github.com/moudsen/mailGraph</description>
|
||||||
{{ baseURL }} - base url of the Zabbix system (use for references to API and login)
|
|
||||||
{{ TRIGGER_ID }} - id of the applicable trigger
|
|
||||||
{{ TRIGGER_DESCRIPTION }} - raw trigger description (note: macros are not parsed!)
|
|
||||||
{{ TRIGGER_COMMENTS }} - comments of the trigger
|
|
||||||
{{ TRIGGER_URL }} - url of the trigger form
|
|
||||||
{{ ITEM_ID }} - id of the associated item to the trigger
|
|
||||||
{{ ITEM_KEY }} - key of the item
|
|
||||||
{{ ITEM_NAME }} - item name
|
|
||||||
{{ ITEM_DESCRIPTION }} - description of the item
|
|
||||||
{{ ITEM_LASTVALUE }} - last value of the item
|
|
||||||
{{ ITEM_PREVIOUSVALUE }} - the value of the before LASTVALUE
|
|
||||||
{{ ITEM_URL }} - url of the item form
|
|
||||||
{{ HOST_ID }} - id of the associated host to the item
|
|
||||||
{{ HOST_NAME }} - name of the host
|
|
||||||
{{ HOST_ERROR }} - last error state of the applicable host
|
|
||||||
{{ HOST_DESCRIPTION }} - description of the host
|
|
||||||
{{ HOST_URL }} - url of the host form
|
|
||||||
{{ EVENT_ID }} - id of the associated event
|
|
||||||
{{ EVENT_NAME }} - name of the event (note: macros are parsed!)
|
|
||||||
{{ EVENT_OPDATA }} - associated operational data of the vent
|
|
||||||
{{ EVENT_VALUE }} - event state (0=Recovered, 1=Triggered/Active)
|
|
||||||
{{ EVENT_SEVERITY }} - severity of the event
|
|
||||||
{{ EVENT_STATUS }} - status of the event
|
|
||||||
{{ EVENT_URL }} - url of the event details
|
|
||||||
{{ GRAPH_ID }} - id of the (first) associated graph that contains the item
|
|
||||||
{{ GRAPH_NAME }} - name of this graph
|
|
||||||
{{ GRAPH_URL }} - URL to this graph (assuming script produces to an accessible location)
|
|
||||||
{{ GRAPH_CID }} - IMG embed string (<img src="{{ GRAPH_CID }}" />)
|
|
||||||
{{ GRAPH_ZABBIXLINK }} - URL to the graph item in Zabbix
|
|
||||||
{{ LOG_HTML }} - script log in HTML format
|
|
||||||
{{ LOG_PLAIN }} - script log in PLAIN text format</description>
|
|
||||||
<message_templates>
|
<message_templates>
|
||||||
<message_template>
|
<message_template>
|
||||||
<event_source>TRIGGERS</event_source>
|
<event_source>TRIGGERS</event_source>
|
||||||
@ -202,4 +182,3 @@ itemId: {ITEM.ID]</message>
|
|||||||
</media_type>
|
</media_type>
|
||||||
</media_types>
|
</media_types>
|
||||||
</zabbix_export>
|
</zabbix_export>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user