From f998b6cbe48739ffdb158a61a8bd8f0f0e9ebc64 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 15 Dec 2015 00:31:59 +0100 Subject: [PATCH] conntrack: Sort graph areas by standard deviation This makes the graphs more readable Signed-off-by: Michael Tremer --- src/collecty/plugins/conntrack.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/collecty/plugins/conntrack.py b/src/collecty/plugins/conntrack.py index 731d5bf..1e9bb79 100644 --- a/src/collecty/plugins/conntrack.py +++ b/src/collecty/plugins/conntrack.py @@ -129,7 +129,7 @@ class ConntrackTable(object): class ConntrackLayer3ProtocolsGraphTemplate(base.GraphTemplate): name = "conntrack-layer3-protocols" - protocols = ConntrackTable._layer3_protocols + _protocols = ConntrackTable._layer3_protocols protocol_colours = { "ipv6" : "#cc0033", @@ -139,6 +139,18 @@ class ConntrackLayer3ProtocolsGraphTemplate(base.GraphTemplate): def get_object(self, *args): return self.plugin.get_object("layer3-protocols") + @property + def protocols(self): + # Order the protocols by standard deviation which will give us cleaner graphs + # http://stackoverflow.com/questions/13958409/how-to-graph-rrd-stackable-data-by-standard-deviation-to-maximize-readability + stddev = self.object.get_stddev() + + protos = {} + for p in self._protocols: + protos[p] = stddev.get(p) + + return sorted(protos, key=protos.get) + @property def protocol_descriptions(self): _ = self.locale.translate @@ -168,7 +180,7 @@ class ConntrackLayer3ProtocolsGraphTemplate(base.GraphTemplate): _ = self.locale.translate args = [] - for proto in reversed(self.protocols): + for proto in self.protocols: i = { "colour" : self.protocol_colours.get(proto, "#000000"), "description" : self.protocol_descriptions.get(proto, proto), @@ -245,7 +257,7 @@ class ConntrackLayer4ProtocolsGraphTemplate(ConntrackLayer3ProtocolsGraphTemplat return _("Connections by IP Protocols") @property - def protocols(self): + def _protocols(self): return sorted(ConntrackTable._layer4_protocols, key=lambda x: self.protocol_sortorder.get(x, 99)) -- 2.39.2