collectd-interface 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +19 -35
- data/bin/collectd-interface-daemon +32 -23
- data/bin/collectd-interface-plugins +1 -1
- data/public/images/cpus.png +0 -0
- data/public/images/disk-traffic-root.png +0 -0
- data/public/images/disk-traffic-tmp.png +0 -0
- data/public/images/load.png +0 -0
- data/public/images/memory.png +0 -0
- data/public/images/network-eth0.png +0 -0
- data/public/images/network-lo.png +0 -0
- data/public/images/processes.png +0 -0
- data/views/README.md +19 -35
- data/views/graph_header.erb +6 -0
- data/views/graphs/cpus.erb +73 -0
- data/views/graphs/disk-traffic-root.erb +24 -0
- data/views/graphs/disk-traffic-srv.erb.disabled +25 -0
- data/views/graphs/disk-traffic-tmp.erb.disabled +24 -0
- data/views/graphs/disk-traffic-var.erb.disabled +25 -0
- data/views/graphs/gridengine-jobs.erb.disabled +29 -0
- data/views/graphs/load.erb +32 -0
- data/views/graphs/memory.erb +43 -0
- data/views/graphs/network-eth0.erb +23 -0
- data/views/graphs/network-lo.erb +23 -0
- data/views/graphs/processes.erb +63 -0
- data/views/template/navigation.erb +1 -1
- data/views/template/options/data.erb +4 -0
- metadata +19 -19
- data/graphs/cpus.erb +0 -76
- data/graphs/disk-traffic-root.erb +0 -30
- data/graphs/disk-traffic-srv.erb.disabled +0 -30
- data/graphs/disk-traffic-tmp.erb.disabled +0 -30
- data/graphs/disk-traffic-var.erb.disabled +0 -30
- data/graphs/gridengine-jobs.erb.disabled +0 -32
- data/graphs/load.erb +0 -36
- data/graphs/memory.erb +0 -47
- data/graphs/network-eth0.erb +0 -26
- data/graphs/network-lo.erb +0 -26
- data/graphs/processes.erb +0 -66
- data/views/readme.erb +0 -3
- data/views/template/options/readme.erb +0 -0
data/README.md
CHANGED
@@ -4,21 +4,27 @@ By Victor Penso
|
|
4
4
|
Description
|
5
5
|
===========
|
6
6
|
|
7
|
-
_Collectd-Interface_
|
8
|
-
by
|
9
|
-
|
7
|
+
_Collectd-Interface_ provides a web user-interface to data stored
|
8
|
+
by Collectd. Furthermore it serves a REST
|
9
|
+
interface to all RRD files of Collectd.
|
10
|
+
|
11
|
+

|
10
12
|
|
11
13
|
Installation
|
12
14
|
============
|
13
15
|
|
14
|
-
Download and install Collectd following the instructions
|
16
|
+
Download and install [Collectd](http://collectd.org/) following the instructions
|
15
17
|
from the developers.
|
16
18
|
|
17
19
|
On Debian flavored Linux use:
|
18
20
|
|
19
21
|
apt-get install collectd rrdtool
|
20
22
|
|
21
|
-
You will need
|
23
|
+
You will need [RRDtool](http://oss.oetiker.ch/rrdtool/) too.
|
24
|
+
|
25
|
+
Install the Collectd-Interface RubyGem:
|
26
|
+
|
27
|
+
gem install collectd-interface
|
22
28
|
|
23
29
|
Usage
|
24
30
|
=====
|
@@ -31,7 +37,9 @@ Start the Collectd Interface in fore-ground:
|
|
31
37
|
|
32
38
|
collectd-interface-daemon
|
33
39
|
|
34
|
-
Open the web-interface <a href='localhost:4567'>localhost:4567</a>.
|
40
|
+
Open the web-interface at <a href='localhost:4567'>localhost:4567</a>.
|
41
|
+
Collectd-Interface expects the RRD file in `/var/lib/collectd/rrd/`
|
42
|
+
by default. Overwrite it with the option `-f PATH`.
|
35
43
|
|
36
44
|
Start the Collectd Interface as daemon:
|
37
45
|
|
@@ -41,14 +49,14 @@ Start the Collectd Interface as daemon:
|
|
41
49
|
Interfaces
|
42
50
|
==========
|
43
51
|
|
44
|
-
Collectd-Interface servers three different
|
52
|
+
Collectd-Interface servers three different interfaces:
|
45
53
|
|
46
54
|
1. `/graph` is the user-interface showing line charts of many
|
47
55
|
of the data accumulated by Collectd.
|
48
56
|
2. `/report` presents tables of system specific information
|
49
|
-
like disk capacity
|
57
|
+
like disk capacity or a list of network sockets.
|
50
58
|
3. `/data` servers an REST API to all data available from
|
51
|
-
Collectd.
|
59
|
+
Collectd RRD files.
|
52
60
|
|
53
61
|
All content from `/graph`, `/report` and `/data` is accessible
|
54
62
|
by a REST interface, to allow embedding this content into other
|
@@ -57,13 +65,10 @@ applications.
|
|
57
65
|
Graph
|
58
66
|
-----
|
59
67
|
|
60
|
-

|
61
|
-
|
62
68
|
You can select individual graphs using the drop-down menu followed by
|
63
69
|
clicking the "Show" button. In case you just want to have the image, to
|
64
|
-
embed it into another web-page, use the links beneath the graph.
|
65
|
-
|
66
|
-
Once the graph is generated the caller will be redirected to `/image/`.
|
70
|
+
embed it into another web-page, use the links beneath the graph. Once
|
71
|
+
the graph is generated the caller will be redirected to `/image/`.
|
67
72
|
|
68
73
|
**Parameters**
|
69
74
|
|
@@ -76,27 +81,6 @@ This simple example:
|
|
76
81
|
|
77
82
|
Requests an SVG image with the memory graph for the last week.
|
78
83
|
|
79
|
-
**Plugin**
|
80
|
-
|
81
|
-
You can create add a custom graph rendering data from Collectd
|
82
|
-
by creating a template which is used to generate the <tt>rrdtool graph</tt>.
|
83
|
-
Take a look to the <tt>graphs/</tt> and <tt>disabled/graphs/</tt> directories
|
84
|
-
for examples. I recommend you the start the Collectd-Interface in
|
85
|
-
debug mode (option <tt>-d</tt>) while you develop new graph templates.
|
86
|
-
|
87
|
-
In case you want to enable graphs from <tt>disabled/graphs/</tt> create
|
88
|
-
a soft link from <tt>graphs/</tt>. The <tt>collectd-interface</tt> daemon will
|
89
|
-
automatically recognize new templates within <tt>graphs</tt> on start.
|
90
|
-
|
91
|
-
Report
|
92
|
-
------
|
93
|
-
|
94
|
-
Reports a basically wrappers around commands like <tt>df -l</tt> or
|
95
|
-
<tt>ss -ar</tt>. The output is available as HTML in the "Report" section
|
96
|
-
of the user-interface.
|
97
|
-
|
98
|
-
TODO
|
99
|
-
|
100
84
|
Data
|
101
85
|
----
|
102
86
|
|
@@ -137,10 +137,11 @@ class CollectdInterface < Sinatra::Base
|
|
137
137
|
|
138
138
|
# Load all graphic plug-ins available
|
139
139
|
graphs = Hash.new
|
140
|
-
Dir["#{settings.root}/graphs/*.erb"].each do |file|
|
140
|
+
Dir["#{settings.root}/views/graphs/*.erb"].each do |file|
|
141
141
|
graphs[File.basename(file,'.erb')] = file
|
142
142
|
end
|
143
143
|
set :plugins, graphs
|
144
|
+
|
144
145
|
# List all RRD files available
|
145
146
|
rrd_values = Array.new
|
146
147
|
Dir["#{settings.rrd_path}/**/*.rrd"].each do |file|
|
@@ -156,7 +157,6 @@ class CollectdInterface < Sinatra::Base
|
|
156
157
|
reports = Hash.new
|
157
158
|
Dir["#{settings.root}/views/reports/*.erb"].each { |f| reports[File.basename(f,'.erb')] = f }
|
158
159
|
set :reports, reports
|
159
|
-
|
160
160
|
end
|
161
161
|
|
162
162
|
get '/data' do
|
@@ -254,7 +254,12 @@ class CollectdInterface < Sinatra::Base
|
|
254
254
|
end
|
255
255
|
end
|
256
256
|
|
257
|
+
##
|
258
|
+
## Web-Interface to all graphs generated from the Collectd RRD files
|
259
|
+
##
|
257
260
|
get '/graph' do
|
261
|
+
# Clients can discover a list of available graphs using the
|
262
|
+
# format parameters
|
258
263
|
if params.has_key? 'format'
|
259
264
|
graph_list = settings.plugins.keys.sort.map! { |g| "/graph/#{g}" }
|
260
265
|
if params['format'] == 'json'
|
@@ -264,17 +269,28 @@ class CollectdInterface < Sinatra::Base
|
|
264
269
|
content_type :text
|
265
270
|
graph_list.join("\n")
|
266
271
|
end
|
272
|
+
# By default the web-interface will be displayed
|
267
273
|
else
|
268
274
|
# default parameters
|
269
275
|
params['last'] = '12h' unless params.has_key?('last')
|
270
276
|
params['image'] = 'png' unless params.has_key?('image')
|
271
|
-
|
272
|
-
|
277
|
+
# display only a subset of the graphs by default
|
278
|
+
unless params.has_key?('display')
|
279
|
+
params['display'] = [ 'cpus', 'memory', 'load', ]
|
280
|
+
end
|
281
|
+
# pass the list of graphs to display into the template
|
282
|
+
@display = params['display']
|
283
|
+
# remove it from the parameter list
|
273
284
|
params.delete('display') if params.has_key?('display')
|
274
|
-
|
285
|
+
# all other parameters will be appended for the graph
|
286
|
+
# generation.
|
275
287
|
p = Array.new; params.each_pair { |k,v| p << "#{k}=#{v}" }
|
276
288
|
@args = p.join('&')
|
289
|
+
# list of all available graphs for the drop down menu
|
290
|
+
@graphs = settings.plugins
|
291
|
+
# identifier for the template
|
277
292
|
@target = 'graph'
|
293
|
+
# render the templates
|
278
294
|
erb :graph, :layout => "template/default".to_sym
|
279
295
|
end
|
280
296
|
end
|
@@ -283,7 +299,7 @@ class CollectdInterface < Sinatra::Base
|
|
283
299
|
unless settings.plugins.has_key? path
|
284
300
|
redirect '/'
|
285
301
|
else
|
286
|
-
color = {
|
302
|
+
@color = {
|
287
303
|
:red_light => '#FF000044', :red_dark => '#FF0000AA',
|
288
304
|
:green_light => '#00F00022', :green_dark => '#00F000AA',
|
289
305
|
:yellow_light => '#FFFF0022', :yellow_dark => '#FFFF00AA',
|
@@ -292,14 +308,14 @@ class CollectdInterface < Sinatra::Base
|
|
292
308
|
:cyan_light => '#00FFFF22', :cyan_dark => '#00FFFFAA',
|
293
309
|
:purple_light => '#FF00FF22', :purple_dark => '#FF00FFAA'
|
294
310
|
}
|
295
|
-
type = params.has_key?('image') ? params['image'] : 'png'
|
296
|
-
last = params.has_key?('last') ? params['last'] : '10800s'
|
297
|
-
target = %Q[#{settings.public_folder}/images/#{path}.#{type}]
|
298
|
-
rrd_path = settings.rrd_path
|
299
|
-
command =
|
311
|
+
@type = params.has_key?('image') ? params['image'] : 'png'
|
312
|
+
@last = params.has_key?('last') ? params['last'] : '10800s'
|
313
|
+
@target = %Q[#{settings.public_folder}/images/#{path}.#{@type}]
|
314
|
+
@rrd_path = settings.rrd_path
|
315
|
+
command = erb "graphs/#{path}".to_sym, :layout => :graph_header
|
300
316
|
puts command if $DEBUG
|
301
317
|
system("#{command} > /dev/null 2>&1")
|
302
|
-
redirect %Q[/images/#{path}.#{type}]
|
318
|
+
redirect %Q[/images/#{path}.#{@type}]
|
303
319
|
end
|
304
320
|
end
|
305
321
|
|
@@ -317,11 +333,10 @@ class CollectdInterface < Sinatra::Base
|
|
317
333
|
end
|
318
334
|
# Render a HTML representation of all/a single report(s)
|
319
335
|
else
|
320
|
-
|
321
|
-
|
322
|
-
else
|
323
|
-
@display = 'all'
|
336
|
+
unless params.has_key? 'display'
|
337
|
+
params['display'] = 'disk-free'
|
324
338
|
end
|
339
|
+
@display = params['display']
|
325
340
|
@target = 'report'
|
326
341
|
erb :report, :layout => "template/default".to_sym
|
327
342
|
end
|
@@ -352,13 +367,7 @@ class CollectdInterface < Sinatra::Base
|
|
352
367
|
redirect '/graph'
|
353
368
|
end
|
354
369
|
|
355
|
-
|
356
|
-
@target = 'readme'
|
357
|
-
erb :readme, :layout => "template/default".to_sym
|
358
|
-
end
|
359
|
-
|
360
|
-
error do
|
361
|
-
flash[:error] = env['sinatra.error'].to_s
|
370
|
+
error 404 do
|
362
371
|
redirect '/'
|
363
372
|
end
|
364
373
|
|
@@ -7,7 +7,7 @@ application_root = File.expand_path(File.join(File.dirname(File.expand_path(__FI
|
|
7
7
|
|
8
8
|
name = File.basename(__FILE__)
|
9
9
|
|
10
|
-
graphs = "#{application_root}/graphs"
|
10
|
+
graphs = "#{application_root}/views/graphs"
|
11
11
|
reports = "#{application_root}/views/reports"
|
12
12
|
|
13
13
|
def list(path)
|
data/public/images/cpus.png
CHANGED
Binary file
|
Binary file
|
Binary file
|
data/public/images/load.png
CHANGED
Binary file
|
data/public/images/memory.png
CHANGED
Binary file
|
Binary file
|
Binary file
|
data/public/images/processes.png
CHANGED
Binary file
|
data/views/README.md
CHANGED
@@ -4,21 +4,27 @@ By Victor Penso
|
|
4
4
|
Description
|
5
5
|
===========
|
6
6
|
|
7
|
-
_Collectd-Interface_
|
8
|
-
by
|
9
|
-
|
7
|
+
_Collectd-Interface_ provides a web user-interface to data stored
|
8
|
+
by Collectd. Furthermore it serves a REST
|
9
|
+
interface to all RRD files of Collectd.
|
10
|
+
|
11
|
+

|
10
12
|
|
11
13
|
Installation
|
12
14
|
============
|
13
15
|
|
14
|
-
Download and install Collectd following the instructions
|
16
|
+
Download and install [Collectd](http://collectd.org/) following the instructions
|
15
17
|
from the developers.
|
16
18
|
|
17
19
|
On Debian flavored Linux use:
|
18
20
|
|
19
21
|
apt-get install collectd rrdtool
|
20
22
|
|
21
|
-
You will need
|
23
|
+
You will need [RRDtool](http://oss.oetiker.ch/rrdtool/) too.
|
24
|
+
|
25
|
+
Install the Collectd-Interface RubyGem:
|
26
|
+
|
27
|
+
gem install collectd-interface
|
22
28
|
|
23
29
|
Usage
|
24
30
|
=====
|
@@ -31,7 +37,9 @@ Start the Collectd Interface in fore-ground:
|
|
31
37
|
|
32
38
|
collectd-interface-daemon
|
33
39
|
|
34
|
-
Open the web-interface <a href='localhost:4567'>localhost:4567</a>.
|
40
|
+
Open the web-interface at <a href='localhost:4567'>localhost:4567</a>.
|
41
|
+
Collectd-Interface expects the RRD file in `/var/lib/collectd/rrd/`
|
42
|
+
by default. Overwrite it with the option `-f PATH`.
|
35
43
|
|
36
44
|
Start the Collectd Interface as daemon:
|
37
45
|
|
@@ -41,14 +49,14 @@ Start the Collectd Interface as daemon:
|
|
41
49
|
Interfaces
|
42
50
|
==========
|
43
51
|
|
44
|
-
Collectd-Interface servers three different
|
52
|
+
Collectd-Interface servers three different interfaces:
|
45
53
|
|
46
54
|
1. `/graph` is the user-interface showing line charts of many
|
47
55
|
of the data accumulated by Collectd.
|
48
56
|
2. `/report` presents tables of system specific information
|
49
|
-
like disk capacity
|
57
|
+
like disk capacity or a list of network sockets.
|
50
58
|
3. `/data` servers an REST API to all data available from
|
51
|
-
Collectd.
|
59
|
+
Collectd RRD files.
|
52
60
|
|
53
61
|
All content from `/graph`, `/report` and `/data` is accessible
|
54
62
|
by a REST interface, to allow embedding this content into other
|
@@ -57,13 +65,10 @@ applications.
|
|
57
65
|
Graph
|
58
66
|
-----
|
59
67
|
|
60
|
-

|
61
|
-
|
62
68
|
You can select individual graphs using the drop-down menu followed by
|
63
69
|
clicking the "Show" button. In case you just want to have the image, to
|
64
|
-
embed it into another web-page, use the links beneath the graph.
|
65
|
-
|
66
|
-
Once the graph is generated the caller will be redirected to `/image/`.
|
70
|
+
embed it into another web-page, use the links beneath the graph. Once
|
71
|
+
the graph is generated the caller will be redirected to `/image/`.
|
67
72
|
|
68
73
|
**Parameters**
|
69
74
|
|
@@ -76,27 +81,6 @@ This simple example:
|
|
76
81
|
|
77
82
|
Requests an SVG image with the memory graph for the last week.
|
78
83
|
|
79
|
-
**Plugin**
|
80
|
-
|
81
|
-
You can create add a custom graph rendering data from Collectd
|
82
|
-
by creating a template which is used to generate the <tt>rrdtool graph</tt>.
|
83
|
-
Take a look to the <tt>graphs/</tt> and <tt>disabled/graphs/</tt> directories
|
84
|
-
for examples. I recommend you the start the Collectd-Interface in
|
85
|
-
debug mode (option <tt>-d</tt>) while you develop new graph templates.
|
86
|
-
|
87
|
-
In case you want to enable graphs from <tt>disabled/graphs/</tt> create
|
88
|
-
a soft link from <tt>graphs/</tt>. The <tt>collectd-interface</tt> daemon will
|
89
|
-
automatically recognize new templates within <tt>graphs</tt> on start.
|
90
|
-
|
91
|
-
Report
|
92
|
-
------
|
93
|
-
|
94
|
-
Reports a basically wrappers around commands like <tt>df -l</tt> or
|
95
|
-
<tt>ss -ar</tt>. The output is available as HTML in the "Report" section
|
96
|
-
of the user-interface.
|
97
|
-
|
98
|
-
TODO
|
99
|
-
|
100
84
|
Data
|
101
85
|
----
|
102
86
|
|
@@ -0,0 +1,73 @@
|
|
1
|
+
<%
|
2
|
+
|
3
|
+
lines = String.new
|
4
|
+
areas = String.new
|
5
|
+
cores = `grep -c processor /proc/cpuinfo`.to_i
|
6
|
+
limit = cores*100
|
7
|
+
|
8
|
+
if cores > 1
|
9
|
+
cores = "#{cores} cores"
|
10
|
+
else
|
11
|
+
cores = "#{cores} core"
|
12
|
+
end
|
13
|
+
|
14
|
+
def define(name,files,function = "AVERAGE")
|
15
|
+
defs = String.new
|
16
|
+
cdef = "CDEF:#{name}="
|
17
|
+
tail = String.new
|
18
|
+
cpu = 1
|
19
|
+
files.each do |f|
|
20
|
+
n = "#{name}_#{cpu}"
|
21
|
+
defs << %Q[DEF:#{n}=#{f}:value:#{function} ]
|
22
|
+
cdef << "#{n},"
|
23
|
+
tail << "+,"
|
24
|
+
cpu += 1
|
25
|
+
end
|
26
|
+
return defs << cdef << tail.chop.chop.chop << ' '
|
27
|
+
end
|
28
|
+
|
29
|
+
definitions = define('sys_av',Dir["#{@rrd_path}cpu*/cpu-system.rrd"] )
|
30
|
+
definitions << define('sys_min',Dir["#{@rrd_path}cpu*/cpu-system.rrd"],'MIN' )
|
31
|
+
definitions << define('sys_max',Dir["#{@rrd_path}cpu*/cpu-system.rrd"],'MAX' )
|
32
|
+
lines << %Q[LINE1:sys_av#{@color[:green_dark]}:'System\t\t\t\t\t' GPRINT:sys_min:MIN:"Min. %4.0lf" GPRINT:sys_av:AVERAGE:"Avg. %4.0lf" GPRINT:sys_max:MAX:"Max. %4.0lf" GPRINT:sys_av:LAST:'Last %4.0lf' ]
|
33
|
+
|
34
|
+
|
35
|
+
definitions << define('user_av',Dir["#{@rrd_path}cpu*/cpu-user.rrd"] )
|
36
|
+
definitions << define('user_min',Dir["#{@rrd_path}cpu*/cpu-user.rrd"],'MIN' )
|
37
|
+
definitions << define('user_max',Dir["#{@rrd_path}cpu*/cpu-user.rrd"],'MAX' )
|
38
|
+
lines << %Q[LINE1:user_av#{@color[:blue_dark]}:'User\t\t\t\t\t\t\t' GPRINT:user_min:MIN:"Min. %4.0lf" GPRINT:user_av:AVERAGE:"Avg. %4.0lf" GPRINT:user_max:MAX:'Max. %4.0lf' GPRINT:user_av:LAST:'Last %4.0lf' ]
|
39
|
+
|
40
|
+
definitions << define('idle_av',Dir["#{@rrd_path}cpu*/cpu-idle.rrd"] )
|
41
|
+
definitions << define('idle_min',Dir["#{@rrd_path}cpu*/cpu-idle.rrd"],'MIN' )
|
42
|
+
definitions << define('idle_max',Dir["#{@rrd_path}cpu*/cpu-idle.rrd"],'MAX' )
|
43
|
+
areas << %Q[AREA:idle_av#F5F5F588 ]
|
44
|
+
lines << %Q[LINE1:idle_av#CCCCCCAA:'Idle\t\t\t\t\t\t\t' GPRINT:idle_min:MIN:"Min. %4.0lf" GPRINT:idle_av:AVERAGE:"Avg. %4.0lf" GPRINT:idle_max:MAX:"Max. %4.0lf" GPRINT:idle_av:LAST:'Last %4.0lf' ]
|
45
|
+
|
46
|
+
definitions << define('nice_av',Dir["#{@rrd_path}cpu*/cpu-nice.rrd"] )
|
47
|
+
definitions << define('nice_min',Dir["#{@rrd_path}cpu*/cpu-nice.rrd"],'MIN' )
|
48
|
+
definitions << define('nice_max',Dir["#{@rrd_path}cpu*/cpu-nice.rrd"],'MAX' )
|
49
|
+
lines << %Q[LINE1:nice_av#{@color[:yellow_dark]}:'Nice\t\t\t\t\t\t\t' GPRINT:nice_min:MIN:"Min. %4.0lf" GPRINT:nice_av:AVERAGE:"Avg. %4.0lf" GPRINT:nice_max:MAX:"Max. %4.0lf" GPRINT:nice_av:LAST:'Last %4.0lf' ]
|
50
|
+
|
51
|
+
definitions << define('wait_av',Dir["#{@rrd_path}cpu*/cpu-wait.rrd"] )
|
52
|
+
definitions << define('wait_min',Dir["#{@rrd_path}cpu*/cpu-wait.rrd"],'MIN' )
|
53
|
+
definitions << define('wait_max',Dir["#{@rrd_path}cpu*/cpu-wait.rrd"],'MAX' )
|
54
|
+
lines << %Q[LINE1:wait_av#{@color[:orange_dark]}:'Wait (IO)\t\t\t' GPRINT:wait_min:MIN:"Min. %4.0lf" GPRINT:wait_av:AVERAGE:"Avg. %4.0lf" GPRINT:wait_max:MAX:"Max. %4.0lf" GPRINT:wait_av:LAST:"Last %4.0lf" ]
|
55
|
+
|
56
|
+
definitions << define('steal_av',Dir["#{@rrd_path}cpu*/cpu-steal.rrd"] )
|
57
|
+
definitions << define('steal_min',Dir["#{@rrd_path}cpu*/cpu-steal.rrd"],'MIN' )
|
58
|
+
definitions << define('steal_max',Dir["#{@rrd_path}cpu*/cpu-steal.rrd"],'MAX' )
|
59
|
+
lines << %Q[LINE1:steal_av#{@color[:red_dark]}:'Steal\t\t\t\t\t\t' GPRINT:steal_min:MIN:"Min. %4.0lf" GPRINT:steal_av:AVERAGE:"Avg. %4.0lf" GPRINT:steal_max:MAX:"Max. %4.0lf" GPRINT:steal_av:LAST:"Last %4.0lf" ]
|
60
|
+
|
61
|
+
|
62
|
+
definitions << define('int_av',Dir["#{@rrd_path}cpu*/cpu-interrupt.rrd"] )
|
63
|
+
definitions << define('int_min',Dir["#{@rrd_path}cpu*/cpu-interrupt.rrd"],'MIN' )
|
64
|
+
definitions << define('int_max',Dir["#{@rrd_path}cpu*/cpu-interrupt.rrd"],'MAX' )
|
65
|
+
lines << %Q[LINE1:int_av#{@color[:cyan_dark]}:'IRQ\t\t\t\t\t\t\t\t' GPRINT:int_min:MIN:"Min. %4.0lf" GPRINT:int_av:AVERAGE:"Avg. %4.0lf" GPRINT:int_max:MAX:"Max. %4.0lf" GPRINT:int_av:LAST:"Last %4.0lf" ]
|
66
|
+
|
67
|
+
definitions << define('sint_av',Dir["#{@rrd_path}cpu*/cpu-softirq.rrd"] )
|
68
|
+
definitions << define('sint_min',Dir["#{@rrd_path}cpu*/cpu-softirq.rrd"],'MIN' )
|
69
|
+
definitions << define('sint_max',Dir["#{@rrd_path}cpu*/cpu-softirq.rrd"],'MAX' )
|
70
|
+
lines << %Q[LINE1:sint_av#{@color[:purple_dark]}:'IRQ (soft)\t\t\t' GPRINT:sint_min:MIN:"Min. %4.0lf" GPRINT:sint_av:AVERAGE:"Avg. %4.0lf" GPRINT:sint_max:MAX:"Max. %4.0lf" GPRINT:sint_av:LAST:"Last %4.0lf" ]
|
71
|
+
|
72
|
+
|
73
|
+
%> --title="CPU Usage (<%= cores %>)" --vertical-label="Jiffies" --units-exponent=k --lower-limit=0 --legend-position=south --force-rules-legend --slope-mode --upper-limit <%= limit %> <%= definitions %> <%= areas %> <%= lines %>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<% name = '/' %>
|
2
|
+
<% device = `df -l #{name} | grep '/dev/'`.split[0].split('/')[-1] %>
|
3
|
+
--title='Disk Traffic "<%= name %>"' --vertical-label="Bytes" \
|
4
|
+
--alt-autoscale-max --base 1024 \
|
5
|
+
DEF:read_av=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:AVERAGE \
|
6
|
+
DEF:read_min=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:MIN \
|
7
|
+
DEF:read_max=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:MAX \
|
8
|
+
DEF:write_av=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:AVERAGE \
|
9
|
+
DEF:write_min=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:MIN \
|
10
|
+
DEF:write_max=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:MAX \
|
11
|
+
AREA:read_max<%= @color[:green_light] %> \
|
12
|
+
AREA:read_min#ffffff \
|
13
|
+
AREA:write_max<%= @color[:blue_light] %> \
|
14
|
+
AREA:write_min#ffffff \
|
15
|
+
LINE1:read_av<%= @color[:green_dark] %>:"Read\t\t\t" \
|
16
|
+
GPRINT:read_min:MIN:"Min. %3.0lf%sB" \
|
17
|
+
GPRINT:read_av:AVERAGE:"Avg. %3.0lf%sB" \
|
18
|
+
GPRINT:read_max:MAX:"Max. %3.0lf%sB" \
|
19
|
+
GPRINT:read_av:LAST:"Last %3.0lf%sB" \
|
20
|
+
LINE1:write_av<%= @color[:blue_dark] %>:"Write\t\t" \
|
21
|
+
GPRINT:write_min:MIN:"Min. %3.0lf%sB" \
|
22
|
+
GPRINT:write_av:AVERAGE:"Avg. %3.0lf%sB" \
|
23
|
+
GPRINT:write_max:MAX:"Max. %3.0lf%sB" \
|
24
|
+
GPRINT:write_av:LAST:"Last %3.0lf%sB" \
|