Hi Billy:
Thank you for the sample, was very useful
Can create a graph metric with live time in hours!
Share here the execute function final look..
function execute(metricData,javascriptResultSetHelper)
{
// for each input agent, compute a calculated metric named
// "<metric>|<agentname>:Live Time (hours)" as
// that agent's "Math.floor(diffInMilliseconds / 1000 / 60 / 60)".
var i=0; // binding iterator
var agentList = {}; // list of agents
var agentLaunchTime = {}; // array of Launch Time values by agent
var agentCurrentTime = {}; // array of Current Time values by agent
var agentFrequency = {}; // array of frequency by agent
var nowInMilliseconds = Math.floor(Date.now());
for(i=0; i < metricData.length; i++)
{
var metric = metricData[i].agentMetric.attributeURL;
var agent = metricData[i].agentName.processURL;
var launchTime = metricData[i].timeslicedValue.value;
var frequency = metricData[i].frequency;
// add to agentList if we haven't seen the agent yet
if (agentList[agent] == null)
{
agentList[agent] = agent;
}
// put the Launch Time in the right array
var launchTimeInMilliseconds = new Date(launchTime);
agentLaunchTime[agent] = launchTimeInMilliseconds;
agentCurrentTime[agent] = nowInMilliseconds;
agentFrequency[agent] = frequency;
}
// now iterate found agents and report calculated metrics, build array of metrics
for (var agent in agentList)
{
// set up metric name
var metricName = agent + "|Live Time (hours)";
var frequency = agentFrequency[agent];
// perform the math
var diffInMilliseconds = agentCurrentTime[agent] - agentLaunchTime[agent];
var diffInHours = Math.floor(diffInMilliseconds / 1000 / 60 / 60);
var liveTimeHours = Math.round(diffInHours);
// add the calculated live time to the result set
javascriptResultSetHelper.addMetric(metricName,
liveTimeHours,
javascriptResultSetHelper.kIntegerPercentage,
frequency);
}
// return the result set
return javascriptResultSetHelper;
}