Aggregating Averages Across Nodes to only Displaying the Aggregate

I'm using Kibana 4.2 and have an issue where I need to aggregate data regarding how many cpus were used by a framework. The job runs on multiple nodes, and the data is currently reported on a per-node basis.
The only way I've found to get the aggregate the total CPUs for each framework is to set the y-axis to average 'CPUs used', set the x-axis equal to the framework name, and split bars based on node as seen in the screenshot below.

This would work if I didn't need to compare 'used CPUs' to 'allocated CPU', but that info would be very valuable overlapped in the same graph (allocated will always be higher than used).

Is there any way to mask the node colors all as one? Or otherwise what's a good graph to use for this issue? I'd really like to overlay the actual vs used cpu for every framework.

Hi Seth, I pinged one of our visualization engineers, who will follow up with you shortly.


hi @seth.yes,

Do I get this correctly, you are trying to show the total number of allocatedCpus and actualCpus, per framework across all nodes?

In that case, it seems you could do:

In metrics:

  • calculate SUM of msg.allocatedCpus.
  • calculate SUM of msg.actualCpus.

In buckets:

  • X-axis: do a terms-aggregation over msg.frameworkName.

In the Options-tab, select the grouped bar-mode.

That will give you 4 groups of bar charts, two for each frameworkName, with a count of all allocated and used cpus, one next to the other.

Let me know if I got this correctly, and if the above worked for you.


Thanks for your response @thomasneirynck

Unfortunately the issue is that these metrics aren't reported only once per container, furthermore, they're not emitted on a set schedule (due to containers within hosts being created & destroyed as needed).

So the issue with summing is that SUM(msg.actualCPUs) reports back >1m cpus, which is far exaggerated beyond the actual case. That's why we use average per host and rolled up per framework has been the closest we can get thus far.

See the example below and please note the difference in scale

Anyone have any idea if this is possible??

hi seth,

So you want to preserve the averages?

Would this configuration work for you then?:

Do not "stack" the bars, but instead keep them grouped by "framework". This way it puts both bars next to eachother.

You'd be able to compare actual and allocated that way.

In the screenshot, the light blue is allocation, and the purple is actual. On the X-axes, the frameworks are spread out.

Hi Thomas,
I might not be explaining myself well. The used vs allocated is somewhat trivial and not really that important.

I'm trying to display the average across all nodes in a bucket as one value. Currently when I have to average across all nodes and sum those to get the aggregate, it's not intuitive and takes a lot of processing power to display (~6000 lines per bar in every bar in the graph).
Instead of this:

I need the same values all aggregated into one color -- I don't care about any individual host, but rather the aggregate of averages across all hosts.

I've since upgraded to Elastic 5.3, so if there's any new functionality that makes this possible, please let me know.

It looks like upgrading to Kibana 5 solved my problem - the 'disable aggregations' toggle is exactly what I needed.

Thanks for your help Thomas, I'll either use the 'grouped by' functionality or I'll use the 'overlap' functionality in an area chart.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.