]>
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 | |
73db5226 MT |
48 | rrd_graph_args = [ |
49 | "--title", _("Available entropy"), | |
50 | "--vertical-label", _("Bits"), | |
51 | ||
52 | "--lower-limit", "0", "--rigid", | |
53 | ] | |
54 | ||
b1ea4956 | 55 | |
72364063 | 56 | class EntropyObject(base.Object): |
b1ea4956 | 57 | rrd_schema = [ |
de090041 | 58 | "DS:entropy:GAUGE:0:U", |
b1ea4956 MT |
59 | ] |
60 | ||
72364063 MT |
61 | @property |
62 | def id(self): | |
63 | return "default" | |
55c28321 | 64 | |
72364063 MT |
65 | def collect(self): |
66 | with open(ENTROPY_FILE) as f: | |
67 | return f.readline().strip() | |
55c28321 | 68 | |
55c28321 | 69 | |
72364063 MT |
70 | class EntropyPlugin(base.Plugin): |
71 | name = "entropy" | |
72 | description = "Entropy Plugin" | |
73 | ||
c968f6d9 | 74 | templates = [GraphTemplateEntropy] |
72364063 MT |
75 | |
76 | @property | |
77 | def objects(self): | |
78 | if not os.path.exists(ENTROPY_FILE): | |
79 | self.log.debug(_("Entropy kernel interface does not exist")) | |
80 | return [] | |
55c28321 | 81 | |
72364063 | 82 | return [EntropyObject(self)] |