Visualizing server performance with Elasticsearch and Kibana: Part 3, Dashboards

So, to put several visualizations together Kibana supports the concept of Dashboards. Surprisingly these are created under the Dashboards tab. The documentation for this is actually pretty good for Kibana itself but its not a complete story without putting this here so..

EDIT: as usual, the resource stuff had to be re-done so excuse some of the weird looks..

The + button shown below is used to add saved visualizations to the dashboard. It opens up the list of saved visualizations where one can pick one to add to the dashboard. Below I have  added the minecraft bar chart, and a set of resource chars created in the previous part. Note that the bar chart shows no data as it was created using the data from long before (the original time when I wrote this), and the resource data shows the current data. Originally, everything was measured at the same time, which is why it also used to show the correct information and allow some deduction as discussed below.


I can then resize the added visualizations by dragging it from the corner/sides, move them around by dragging on the title bar, add/remove, and so on. Modern web-apps are so handy. Good thing I am not programming them any more, as the frameworks seem to change every day. Now that I said that, I am sure I will end up programming them with all the weirdest frameworks tomorrow (which probably arent that hard but anyway..).

The chars in the figure above are not super interesting. However, the original ones had something more interesting.

In them, we could try to see some relations between event occurrences and resource load. Mainly the CPU load since memory was pretty constant. A few properties to note included the large TNT explosion spikes on the left (the highest green bars on the top chart). The other CPU load spikes are not quite so obvious. This is likely due to using Prism to collect the Minecraft data and as I noted before it does not store actions created using commands or command blocks. For example, in the recorded game session someone used command blocks to create a TNT “cannon” that created an endless stream of TNT explosions. None of this was recorded by Prism. The tall bars on the left where the TNT explosions show were created by hand and thus recorded by Prism.

In the end of the session, the CPU load is was maximum, which was something to look at. It is possible to click-and-drag on any part of any of the charts in the dashboard to have Kibana zoom on that area. So when I did this for the “actions per second” chart for the part where the CPU load is maxed, I got a nice view with all the charts focusing on that timeline, allowing comparison of this part in detail. This seemed to correlate rather well with the red bars indicating “entity-spawn” events as was shown above once upon time. This was a time when a player started to spawn large number of monsters in the game.

So perhaps it would be interesting as well to add a chart showing the number of actions performed by different players. I created one below (player names blocked over):


This is similar to the event count but this time sub-aggregating over the player name.

The data logged from Minecraft by Prism also stores an origin for every event, even if that is not a player. So the TNT explosions are showing as large bars originating from “tnt”. Similarly towards the end there are large sets of data from “lava” and “water” as I tried to enable additional logging. To remove these to get the other parts more visible, I add a filter to the chart data (the top row with the NOT filters):


This filter removed the TNT part. There is still large ones for “environment” and “chunk gen”. These are the ones generated by the game background processes and environment. We could further filter as we wish and explore the data.

The mobs are shown here as spawned by the “default” player. This because the actions are performed by using console commands by one of the players with operator (“op”) permissions on the server. So not that helpful as it does not show the actual player who invoked the command, mainly due to the limitations of the data collection method.. But hopefully illustrates the point of working with the visualizations.

In the original version, I put all of these in the dashboard and could show more interesting total visualizations. This time it is not happening as the times are messed up due to having to redo the resource use as I mentioned before.. This way the dashboard enables overall views over the different data and exploration of them all simultaneously for different timeframes. That is the idea, hope it is clear even if I lost all the original data I was posting on this about.. 🙂

And finally, we could go back to time selection, choose “last 15” min and set the refresh interval to 5 sec to get a close to “real-time” dashboard with the same visualizations. Or use it for any other timeframe I choose.. (the “refresh” tab is a sub-tab under the time selection tab (in top right corner usually)

And as a final note, deleteing a dashboard (or a visualization I guess) is done on the Kibana “settings” page under “objects”. A bit of a weird place I would say but as long as I know where to go looking..


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s