]>
Commit | Line | Data |
---|---|---|
f37913e8 | 1 | #!/usr/bin/python3 |
55c28321 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 | ||
22 | import os | |
23 | ||
f37913e8 | 24 | from . import base |
55c28321 | 25 | |
03ba5630 | 26 | from ..colours import * |
73db5226 MT |
27 | from ..i18n import _ |
28 | ||
55c28321 MT |
29 | ENTROPY_FILE = "/proc/sys/kernel/random/entropy_avail" |
30 | ||
b1ea4956 | 31 | class GraphTemplateEntropy(base.GraphTemplate): |
55c28321 | 32 | name = "entropy" |
55c28321 | 33 | |
971ad5c8 MT |
34 | @property |
35 | def rrd_graph(self): | |
36 | _ = self.locale.translate | |
37 | ||
38 | return [ | |
03ba5630 | 39 | "LINE2:entropy%s:%-15s" % (PRIMARY, _("Available entropy")), |
cd8bba0b MT |
40 | "GPRINT:entropy_max:%12s\:" % _("Maximum") + " %5.0lf", |
41 | "GPRINT:entropy_min:%12s\:" % _("Minimum") + " %5.0lf", | |
42 | "GPRINT:entropy_avg:%12s\:" % _("Average") + " %5.0lf\\n", | |
971ad5c8 | 43 | ] |
b1ea4956 | 44 | |
f181246a | 45 | lower_limit = 0 |
73db5226 | 46 | |
f181246a MT |
47 | @property |
48 | def graph_title(self): | |
971ad5c8 | 49 | _ = self.locale.translate |
f181246a MT |
50 | return _("Available entropy") |
51 | ||
52 | @property | |
53 | def graph_vertical_label(self): | |
971ad5c8 | 54 | _ = self.locale.translate |
f181246a | 55 | return _("Bit") |
73db5226 | 56 | |
b1ea4956 | 57 | |
72364063 | 58 | class EntropyObject(base.Object): |
b1ea4956 | 59 | rrd_schema = [ |
de090041 | 60 | "DS:entropy:GAUGE:0:U", |
b1ea4956 MT |
61 | ] |
62 | ||
72364063 MT |
63 | @property |
64 | def id(self): | |
65 | return "default" | |
55c28321 | 66 | |
72364063 MT |
67 | def collect(self): |
68 | with open(ENTROPY_FILE) as f: | |
69 | return f.readline().strip() | |
55c28321 | 70 | |
55c28321 | 71 | |
72364063 MT |
72 | class EntropyPlugin(base.Plugin): |
73 | name = "entropy" | |
74 | description = "Entropy Plugin" | |
75 | ||
c968f6d9 | 76 | templates = [GraphTemplateEntropy] |
72364063 MT |
77 | |
78 | @property | |
79 | def objects(self): | |
80 | if not os.path.exists(ENTROPY_FILE): | |
81 | self.log.debug(_("Entropy kernel interface does not exist")) | |
82 | return [] | |
55c28321 | 83 | |
72364063 | 84 | return [EntropyObject(self)] |