astro-collectd 0.0.4 → 0.0.5
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/lib/collectd.rb +1 -0
- data/lib/collectd/em_server.rb +1 -0
- data/lib/collectd/interface.rb +40 -0
- data/lib/collectd/proc_stats.rb +49 -0
- data/lib/collectd/server.rb +1 -0
- metadata +3 -2
data/lib/collectd.rb
CHANGED
data/lib/collectd/em_server.rb
CHANGED
data/lib/collectd/interface.rb
CHANGED
@@ -22,6 +22,17 @@ module Collectd
|
|
22
22
|
@@servers.each(&block)
|
23
23
|
end
|
24
24
|
|
25
|
+
def add_pollable(&block)
|
26
|
+
@@pollables ||= []
|
27
|
+
@@pollables << block
|
28
|
+
end
|
29
|
+
def run_pollables_for(server)
|
30
|
+
@@pollables ||= []
|
31
|
+
@@pollables.each do |block|
|
32
|
+
block.call(server)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
25
36
|
def method_missing(plugin, plugin_instance)
|
26
37
|
Plugin.new(plugin, plugin_instance)
|
27
38
|
end
|
@@ -31,6 +42,7 @@ module Collectd
|
|
31
42
|
##
|
32
43
|
# Interface helper
|
33
44
|
class Plugin
|
45
|
+
include ProcStats
|
34
46
|
def initialize(plugin, plugin_instance)
|
35
47
|
@plugin, @plugin_instance = plugin, plugin_instance
|
36
48
|
end
|
@@ -46,12 +58,16 @@ module Collectd
|
|
46
58
|
@plugin, @plugin_instance = plugin, plugin_instance
|
47
59
|
@type, @type_instance = type, type_instance
|
48
60
|
end
|
61
|
+
##
|
62
|
+
# GAUGE
|
49
63
|
def gauge=(values)
|
50
64
|
values = [values] unless values.kind_of? Array
|
51
65
|
Collectd.each_server do |server|
|
52
66
|
server.set_gauge(plugin_type, values)
|
53
67
|
end
|
54
68
|
end
|
69
|
+
##
|
70
|
+
# COUNTER
|
55
71
|
def counter=(values)
|
56
72
|
values = [values] unless values.kind_of? Array
|
57
73
|
Collectd.each_server do |server|
|
@@ -63,6 +79,30 @@ module Collectd
|
|
63
79
|
server.inc_counter(plugin_type, values)
|
64
80
|
end
|
65
81
|
end
|
82
|
+
def polled_gauge(&block)
|
83
|
+
Collectd.add_pollable do |server|
|
84
|
+
values = block.call
|
85
|
+
values = [values] unless values.kind_of? Array
|
86
|
+
server.set_gauge(plugin_type, values) if values
|
87
|
+
end
|
88
|
+
end
|
89
|
+
def polled_count(&block)
|
90
|
+
Collectd.add_pollable do |server|
|
91
|
+
values = block.call
|
92
|
+
values = [values] unless values.kind_of? Array
|
93
|
+
server.inc_counter(plugin_type, values) if values
|
94
|
+
end
|
95
|
+
end
|
96
|
+
def polled_counter(&block)
|
97
|
+
Collectd.add_pollable do |server|
|
98
|
+
values = block.call
|
99
|
+
values = [values] unless values.kind_of? Array
|
100
|
+
server.set_counter(plugin_type, values) if values
|
101
|
+
end
|
102
|
+
end
|
103
|
+
private
|
104
|
+
##
|
105
|
+
# [plugin, plugin_instance, type, type_instance]
|
66
106
|
def plugin_type
|
67
107
|
[@plugin, @plugin_instance, @type, @type_instance]
|
68
108
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Collectd
|
2
|
+
##
|
3
|
+
# Included by Interface
|
4
|
+
module ProcStats
|
5
|
+
def with_polled_memory
|
6
|
+
def process_status(field)
|
7
|
+
fields = {}
|
8
|
+
IO.readlines("/proc/#{$$}/status").each { |line|
|
9
|
+
line.strip!
|
10
|
+
if line =~ /^(.+?):\s+(.+)$/
|
11
|
+
fields[$1] = $2
|
12
|
+
end
|
13
|
+
}
|
14
|
+
fields[field]
|
15
|
+
end
|
16
|
+
|
17
|
+
memory('VmRSS').polled_gauge do
|
18
|
+
process_status('VmRSS').to_i * 1024
|
19
|
+
end
|
20
|
+
memory('VmSize').polled_gauge do
|
21
|
+
process_status('VmSize').to_i * 1024
|
22
|
+
end
|
23
|
+
|
24
|
+
self
|
25
|
+
end
|
26
|
+
|
27
|
+
def with_polled_cpu
|
28
|
+
def schedstats
|
29
|
+
if IO.readlines("/proc/#{$$}/schedstat").to_s =~ /^(\d+) (\d+) (\d+)/
|
30
|
+
[$1.to_i, $2.to_i, $3.to_i]
|
31
|
+
else
|
32
|
+
[]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
cpu('user').polled_counter do
|
37
|
+
schedstats[0]
|
38
|
+
end
|
39
|
+
cpu('wait').polled_counter do
|
40
|
+
schedstats[1]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def with_full_proc_stats
|
45
|
+
with_polled_memory
|
46
|
+
with_polled_cpu
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/collectd/server.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: astro-collectd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephan Maka
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-05-01 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -23,6 +23,7 @@ extra_rdoc_files: []
|
|
23
23
|
|
24
24
|
files:
|
25
25
|
- lib/collectd/interface.rb
|
26
|
+
- lib/collectd/proc_stats.rb
|
26
27
|
- lib/collectd/pkt.rb
|
27
28
|
- lib/collectd/server.rb
|
28
29
|
- lib/collectd/em_server.rb
|