-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
88 lines (66 loc) · 2.96 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Collectd statistics frontend
============================
I wasn't satisfied with existing Collectd frontends, so I make my own. Definitions of graphs are from Collection 4 project and I add a few of my own lines. Rest is my own python core with web interface based on bottle and jQuery mobile.
My goals:
* Simple solution in Python
* Framework for new plugins (new plugin in one minute, meta plugins and simple plugins)
* Not much of configuration
Config
------
You can save your configuration in /etc/collectd/graphs.json. Use something like this:
config = {
"data_dir": "/var/lib/collectd/rrd/",
"graphs_dir": "/var/www/graphs/",
}
This is defaul configuration.
Instalation and webinterface
----------------------------
Web interface is based on jQuery Mobile.
$ python setup.py install
$ collectd_graphs localhost:8080
During loading a web interface are regenerate all graphs and it could be little slow. Be patient. I will solve this problem very soon.
Example of simple plugin
------------------------
If you want new plugin, just fork this repo and add a new one into plugins directory. After you created your new plugin, remember add it into __init__.py.
from plugin import Plugin
class Load(Plugin):
# plugin directory (what collectd create))
plugin_directory = "load"
# destination name (in graphs directory)
dst_name = "load"
def gen(self):
self.gen_graph("%s.rrd" % self.plugin_directory, self.plugin_directory + "-%s.png")
def gen_graph(self, *args):
parms = [
'-v', 'System load',
'DEF:s_avg={file}:shortterm:AVERAGE',
'DEF:s_min={file}:shortterm:MIN',
[.....]
'GPRINT:l_avg:LAST:%4.2lf Last',
]
super(Load, self).gen_graph(parms, *args)
Example of meta plugin (more rrd databases)
-------------------------------------------
import os
import re
from plugin import MetaPluginSum
class CPU(MetaPluginSum):
plugin_directory = "cpu-[0-9]{1,3}"
dst_name = "cpu"
def gen(self):
for filename in os.listdir(self._data_dir):
if re.match("cpu-[0-9]{1,3}", filename):
self.plugin_directory = filename
self.graph_meta(filename + "-%s.png")
def graph_meta(self, *args):
values = (
('nice', '00e000', 'cpu-nice.rrd', "value"),
('user', '0000ff', 'cpu-user.rrd', "value"),
('wait', 'ffb000', 'cpu-wait.rrd', "value"),
('system', 'ff0000', 'cpu-system.rrd', "value"),
('softirq', 'ff00ff', 'cpu-softirq.rrd', "value"),
('interrupt', 'a000a0', 'cpu-interrupt.rrd', "value"),
('steal', '000000', 'cpu-steal.rrd', "value"),
('idle', 'ffffff', 'cpu-idle.rrd', "value"),
)
return super(CPU, self).graph_meta(values, *args)