mirror of
https://github.com/moudsen/mailGraph
synced 2025-01-31 04:11:39 +01:00
Added Tag processing for Triggers to set period or force different graph to be displayed (v1.18)
This commit is contained in:
parent
c0e31d37be
commit
2970f10be1
128
mailGraph.php
128
mailGraph.php
@ -21,6 +21,8 @@
|
|||||||
// 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
|
||||||
|
// Added ability to specify different graph to be embedded
|
||||||
// ------------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// (C) M.J.Oudsen, mark.oudsen@puzzl.nl
|
// (C) M.J.Oudsen, mark.oudsen@puzzl.nl
|
||||||
@ -43,7 +45,7 @@
|
|||||||
|
|
||||||
// CONSTANTS
|
// CONSTANTS
|
||||||
|
|
||||||
$cVersion = 'v1.17';
|
$cVersion = 'v1.18';
|
||||||
$cCRLF = chr(10).chr(13);
|
$cCRLF = chr(10).chr(13);
|
||||||
$maskDateTime = 'Y-m-d H:i:s';
|
$maskDateTime = 'Y-m-d H:i:s';
|
||||||
|
|
||||||
@ -476,7 +478,8 @@
|
|||||||
'method'=>'trigger.get',
|
'method'=>'trigger.get',
|
||||||
'params'=>array('triggerids'=>$p_triggerId,
|
'params'=>array('triggerids'=>$p_triggerId,
|
||||||
'output'=>'extend',
|
'output'=>'extend',
|
||||||
'selectFunctions'=>'extend'),
|
'selectFunctions'=>'extend',
|
||||||
|
'selectTags'=>'extend'),
|
||||||
'expandComment'=>1,
|
'expandComment'=>1,
|
||||||
'expandDescription'=>1,
|
'expandDescription'=>1,
|
||||||
'expandExpression'=>1,
|
'expandExpression'=>1,
|
||||||
@ -486,10 +489,31 @@
|
|||||||
$thisTrigger = postJSON($z_url_api,$request);
|
$thisTrigger = postJSON($z_url_api,$request);
|
||||||
_log('> Trigger data'.$cCRLF.json_encode($thisTrigger,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
_log('> Trigger data'.$cCRLF.json_encode($thisTrigger,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||||
|
|
||||||
|
if (!isset($thisTrigger['result'][0])) { echo '! No response data received?'.$cCRLF; die; }
|
||||||
|
|
||||||
$mailData['TRIGGER_ID'] = $thisTrigger['result'][0]['triggerid'];
|
$mailData['TRIGGER_ID'] = $thisTrigger['result'][0]['triggerid'];
|
||||||
$mailData['TRIGGER_DESCRIPTION'] = $thisTrigger['result'][0]['description'];
|
$mailData['TRIGGER_DESCRIPTION'] = $thisTrigger['result'][0]['description'];
|
||||||
$mailData['TRIGGER_COMMENTS'] = $thisTrigger['result'][0]['comments'];
|
$mailData['TRIGGER_COMMENTS'] = $thisTrigger['result'][0]['comments'];
|
||||||
|
|
||||||
|
// --- Custom settings?
|
||||||
|
|
||||||
|
$forceGraph = 0;
|
||||||
|
|
||||||
|
foreach($thisTrigger['result'][0]['tags'] as $aTag)
|
||||||
|
{
|
||||||
|
if ($aTag['tag']=='mailGraph.period')
|
||||||
|
{
|
||||||
|
$p_period = $aTag['value'];
|
||||||
|
_log('+ Graph display period override = '.$p_period);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($aTag['tag']=='mailGraph.graph')
|
||||||
|
{
|
||||||
|
$forceGraph = intval($aTag['value']);
|
||||||
|
_log('+ Graph ID to display = '.$forceGraph);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// --- GET ITEM INFO ---
|
// --- GET ITEM INFO ---
|
||||||
|
|
||||||
_log('# Retrieve ITEM information');
|
_log('# Retrieve ITEM information');
|
||||||
@ -506,6 +530,8 @@
|
|||||||
$thisItem = postJSON($z_url_api,$request);
|
$thisItem = postJSON($z_url_api,$request);
|
||||||
_log('> Item data'.$cCRLF.json_encode($thisItem,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
_log('> Item data'.$cCRLF.json_encode($thisItem,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||||
|
|
||||||
|
if (!isset($thisItem['result'][0])) { echo '! No response data received?'.$cCRLF; die; }
|
||||||
|
|
||||||
$mailData['ITEM_ID'] = $thisItem['result'][0]['itemid'];
|
$mailData['ITEM_ID'] = $thisItem['result'][0]['itemid'];
|
||||||
$mailData['ITEM_KEY'] = $thisItem['result'][0]['key_'];
|
$mailData['ITEM_KEY'] = $thisItem['result'][0]['key_'];
|
||||||
$mailData['ITEM_NAME'] = $thisItem['result'][0]['name'];
|
$mailData['ITEM_NAME'] = $thisItem['result'][0]['name'];
|
||||||
@ -533,6 +559,8 @@
|
|||||||
$thisHost = postJSON($z_url_api,$request);
|
$thisHost = postJSON($z_url_api,$request);
|
||||||
_log('> Host data'.$cCRLF.json_encode($thisHost,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
_log('> Host data'.$cCRLF.json_encode($thisHost,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||||
|
|
||||||
|
if (!isset($thisHost['result'][0])) { echo '! No response data received?'.$cCRLF; die; }
|
||||||
|
|
||||||
$mailData['HOST_ID'] = $thisHost['result'][0]['hostid'];
|
$mailData['HOST_ID'] = $thisHost['result'][0]['hostid'];
|
||||||
$mailData['HOST_NAME'] = $thisHost['result'][0]['name'];
|
$mailData['HOST_NAME'] = $thisHost['result'][0]['name'];
|
||||||
$mailData['HOST_ERROR'] = $thisHost['result'][0]['error'];
|
$mailData['HOST_ERROR'] = $thisHost['result'][0]['error'];
|
||||||
@ -570,6 +598,28 @@
|
|||||||
$thisGraphs = postJSON($z_url_api,$request);
|
$thisGraphs = postJSON($z_url_api,$request);
|
||||||
_log('> Graphs data'.$cCRLF.json_encode($thisGraphs,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
_log('> Graphs data'.$cCRLF.json_encode($thisGraphs,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||||
|
|
||||||
|
if ($forceGraph>0)
|
||||||
|
{
|
||||||
|
// --- GET GRAPH ASSOCIATED WITH FORCEGRAPH ---
|
||||||
|
|
||||||
|
$request = array('jsonrpc'=>'2.0',
|
||||||
|
'method'=>'graph.get',
|
||||||
|
'params'=>array('graphids'=>$forceGraph,
|
||||||
|
'expandName'=>1,
|
||||||
|
'output'=>'extend'),
|
||||||
|
'auth'=>$token,
|
||||||
|
'id'=>nextRequestID());
|
||||||
|
|
||||||
|
$forceGraphInfo = postJSON($z_url_api,$request);
|
||||||
|
_log('> Forced graph data'.$cCRLF.json_encode($forceGraphInfo,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($forceGraphInfo['result'][0]))
|
||||||
|
{
|
||||||
|
_log('! No data received for graph #'.$forceGraph.'; discarding forced graph information');
|
||||||
|
$forceGraph = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// --- FIND MATCHING GRAPH ITEMS WITH OUR TRIGGER ITEMS ---
|
// --- FIND MATCHING GRAPH ITEMS WITH OUR TRIGGER ITEMS ---
|
||||||
|
|
||||||
_log('# Matching retreived graph information with our trigger items');
|
_log('# Matching retreived graph information with our trigger items');
|
||||||
@ -631,6 +681,8 @@
|
|||||||
$thisEvent = postJSON($z_url_api,$request);
|
$thisEvent = postJSON($z_url_api,$request);
|
||||||
_log('> Event data'.$cCRLF.json_encode($thisEvent,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
_log('> Event data'.$cCRLF.json_encode($thisEvent,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||||
|
|
||||||
|
if (!isset($thisEvent['result'][0])) { echo '! No response data received?'.$cCRLF; die; }
|
||||||
|
|
||||||
$mailData['EVENT_ID'] = $thisEvent['result'][0]['eventid'];
|
$mailData['EVENT_ID'] = $thisEvent['result'][0]['eventid'];
|
||||||
$mailData['EVENT_NAME'] = $thisEvent['result'][0]['name'];
|
$mailData['EVENT_NAME'] = $thisEvent['result'][0]['name'];
|
||||||
$mailData['EVENT_OPDATA'] = $thisEvent['result'][0]['opdata'];
|
$mailData['EVENT_OPDATA'] = $thisEvent['result'][0]['opdata'];
|
||||||
@ -660,45 +712,63 @@
|
|||||||
|
|
||||||
// If we have any matching graph, make the embedding information available
|
// If we have any matching graph, make the embedding information available
|
||||||
|
|
||||||
if ((sizeof($matchedGraphs)+sizeof($otherGraphs))>0)
|
if ($forceGraph>0)
|
||||||
{
|
{
|
||||||
// Exact match goes first
|
_log('# Adding FORCED graph #'.$forceGraph);
|
||||||
|
$graphFile = GraphImageById($forceGraph,
|
||||||
|
$p_graphWidth,$p_graphHeight,
|
||||||
|
$forceGraphInfo['result'][0]['graphtype'],
|
||||||
|
$p_showLegend,$p_period);
|
||||||
|
|
||||||
if (sizeof($matchedGraphs)>0)
|
_log('> Filename = '.$graphFile);
|
||||||
|
|
||||||
|
$mailData['GRAPH_ID'] = $forceGraph;
|
||||||
|
$mailData['GRAPH_NAME'] = $forceGraphInfo['result'][0]['name'];
|
||||||
|
$mailData['GRAPH_URL'] = $z_url_image . $graphFile;
|
||||||
|
$mailData['GRAPH_MATCH'] = 'Forced';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((sizeof($matchedGraphs)+sizeof($otherGraphs))>0)
|
||||||
{
|
{
|
||||||
_log('# Adding MATCHED graph #'.$matchedGraphs[0]['graphid']);
|
// Exact match goes first
|
||||||
$graphFile = GraphImageById($matchedGraphs[0]['graphid'],
|
|
||||||
$p_graphWidth,$p_graphHeight,
|
|
||||||
$matchedGraphs[0]['graphtype'],
|
|
||||||
$p_showLegend,$p_period);
|
|
||||||
|
|
||||||
_log('> Filename = '.$graphFile);
|
if (sizeof($matchedGraphs)>0)
|
||||||
|
|
||||||
$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']);
|
_log('# Adding MATCHED graph #'.$matchedGraphs[0]['graphid']);
|
||||||
$graphFile = GraphImageById($otherGraphs[0]['graphid'],
|
$graphFile = GraphImageById($matchedGraphs[0]['graphid'],
|
||||||
$p_graphWidth,$p_graphHeight,
|
$p_graphWidth,$p_graphHeight,
|
||||||
$otherGraphs[0]['graphtype'],
|
$matchedGraphs[0]['graphtype'],
|
||||||
$p_showLegend);
|
$p_showLegend,$p_period);
|
||||||
|
|
||||||
_log('> Filename = '.$graphFile);
|
_log('> Filename = '.$graphFile);
|
||||||
|
|
||||||
$mailData['GRAPH_ID'] = $otherGraphs[0]['graphid'];
|
$mailData['GRAPH_ID'] = $matchedGraphs[0]['graphid'];
|
||||||
$mailData['GRAPH_NAME'] = $otherGraphs[0]['name'];
|
$mailData['GRAPH_NAME'] = $matchedGraphs[0]['name'];
|
||||||
$mailData['GRAPH_URL'] = $z_url_image . $graphFile;
|
$mailData['GRAPH_URL'] = $z_url_image . $graphFile;
|
||||||
$mailData['GRAPH_MATCH'] = 'Other';
|
$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);
|
||||||
|
|
||||||
$mailData['GRAPH_ZABBIXLINK'] = $z_server.'/graphs.php?form=update&graphid='.$mailData['GRAPH_ID'];
|
_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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user