]> git.ipfire.org Git - collecty.git/blame - src/collecty/plugins/loadavg.py
Introduce a colour scheme and fix design of the graphs
[collecty.git] / src / collecty / plugins / loadavg.py
CommitLineData
f37913e8 1#!/usr/bin/python3
eed405de
MT
2###############################################################################
3# #
4# collecty - A system statistics collection daemon for IPFire #
5# Copyright (C) 2012 IPFire development team #
6# #
7# This program is free software: you can redistribute it and/or modify #
8# it under the terms of the GNU General Public License as published by #
9# the Free Software Foundation, either version 3 of the License, or #
10# (at your option) any later version. #
11# #
12# This program is distributed in the hope that it will be useful, #
13# but WITHOUT ANY WARRANTY; without even the implied warranty of #
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15# GNU General Public License for more details. #
16# #
17# You should have received a copy of the GNU General Public License #
18# along with this program. If not, see <http://www.gnu.org/licenses/>. #
19# #
20###############################################################################
21
22import os
23
f37913e8 24from . import base
eed405de 25
03ba5630 26from ..colours import *
eed405de
MT
27from ..i18n import _
28
b1ea4956 29class GraphTemplateLoadAvg(base.GraphTemplate):
708c842f 30 name = "loadavg"
eed405de 31
cb74e9e9
MT
32 @property
33 def rrd_graph(self):
34 _ = self.locale.translate
35
03ba5630
MT
36 rrd_graph = []
37
38 for id, colour, when in zip(self.object.rrd_schema_names,
39 LOAD_AVG_COLOURS, ("1m", "5m", "15m")):
40 rrd_graph = [
41 "LINE2:%s%s:%s" % (id, colour, _("Load Average %s") % when),
42 "GPRINT:%s_max:%12s\: %%6.2lf" % (id, _("Maximum")),
43 "GPRINT:%s_min:%12s\: %%6.2lf" % (id, _("Minimum")),
44 "GPRINT:%s_avg:%12s\: %%6.2lf\l" % (id, _("Average")),
45 ] + rrd_graph
46
47 return rrd_graph
b1ea4956 48
f181246a 49 lower_limit = 0
73db5226 50
f181246a
MT
51 @property
52 def graph_title(self):
cb74e9e9 53 _ = self.locale.translate
03ba5630 54 return _("Load Average")
f181246a
MT
55
56 @property
57 def graph_vertical_label(self):
cb74e9e9 58 _ = self.locale.translate
f181246a 59 return _("Load")
eed405de 60
03ba5630
MT
61 @property
62 def rrd_graph_args(self):
63 return [
64 "--legend-direction=bottomup",
65 ]
66
b1ea4956 67
72364063 68class LoadAvgObject(base.Object):
b1ea4956 69 rrd_schema = [
de090041
MT
70 "DS:load1:GAUGE:0:U",
71 "DS:load5:GAUGE:0:U",
72 "DS:load15:GAUGE:0:U",
b1ea4956
MT
73 ]
74
72364063
MT
75 @property
76 def id(self):
77 return "default"
eed405de 78
72364063 79 def collect(self):
f648421a 80 return os.getloadavg()
72364063
MT
81
82
83class LoadAvgPlugin(base.Plugin):
84 name = "loadavg"
85 description = "Load Average Plugin"
86
c968f6d9 87 templates = [GraphTemplateLoadAvg]
72364063 88
72364063
MT
89 @property
90 def objects(self):
91 return [LoadAvgObject(self)]