]>
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 MT |
55 | |
56 | class DataSourceEntropy(base.DataSource): | |
57 | name = "entropy" | |
58 | description = "Entropy Data Source" | |
59 | ||
60 | templates = [GraphTemplateEntropy,] | |
61 | ||
62 | rrd_schema = [ | |
de090041 | 63 | "DS:entropy:GAUGE:0:U", |
b1ea4956 MT |
64 | ] |
65 | ||
55c28321 MT |
66 | @classmethod |
67 | def autocreate(cls, collecty, **kwargs): | |
68 | if not os.path.exists(ENTROPY_FILE): | |
69 | self.log.debug(_("Entropy kernel interface does not exist.")) | |
70 | return | |
71 | ||
72 | return cls(collecty, **kwargs) | |
73 | ||
74 | def read(self): | |
bba5cf66 | 75 | f = None |
55c28321 | 76 | |
bba5cf66 MT |
77 | try: |
78 | f = open(ENTROPY_FILE) | |
79 | entropy = f.readline() | |
55c28321 | 80 | |
bba5cf66 MT |
81 | return entropy.strip() |
82 | finally: | |
83 | if f: | |
84 | f.close() |