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