panoptimon 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.4.0
2
+
3
+ * collectors/disk - remove sys-filesystem dependency
4
+
1
5
  # 0.3.0
2
6
 
3
7
  * plugins/graphite/ - added
data/collectors/disk/disk CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'json'
4
4
  require 'rubygems'
5
- require 'sys/filesystem'
5
+ require 'ostruct'
6
6
 
7
7
  config = JSON::parse(ARGV[0])
8
8
 
@@ -10,26 +10,41 @@ $stdout.sync = true
10
10
 
11
11
  def GB b; (b.to_f / 1024**3).round(6); end # GB significant down to 4kB
12
12
 
13
+ def get_mounts
14
+ mount_hash = {}
15
+ mounts = File.open("/etc/mtab", "r").read.split("\n").map{|l| l.split(/\s+/)}
16
+ mounts.each{|m| mount_hash[m[1]] = m[0] unless %w[devpts udev sysfs tmpfs none proc].include?(m[0])}
17
+ mount_hash
18
+ end
19
+
20
+ def stat_fs (mounts)
21
+ s = %x[stat --printf="%n %s %b %f %a %c %d\n" -f #{mounts.keys.join(' ')}].split("\n")
22
+ s.map!{|l| l.split}
23
+ s.map{|l|
24
+ OpenStruct.new(
25
+ name: mounts[l[0]],
26
+ block_size: l[1].to_i,
27
+ blocks: l[2].to_i,
28
+ blocks_free: l[3].to_i,
29
+ blocks_available: l[4].to_i,
30
+ files: l[5].to_i,
31
+ files_available: l[6].to_i
32
+ ).freeze
33
+ }
34
+ end
35
+
13
36
  while(true) do
14
- info =
15
- Sys::Filesystem.mounts.
16
- # map {|m| $stderr.puts m.name; m}.
17
- find_all{|m| not(m.name =~ /^(devpts|udev|sysfs|tmpfs|none|proc)$/)}.
18
- map {|m|
19
- s = Sys::Filesystem.stat(m.mount_point)
20
- # $stderr.puts "#{m.name} - #{s.inspect}"
21
- [m.name, {
22
- # block_size: s.block_size,
23
- # blocks: s.blocks,
24
- # blocks_available: s.blocks_available,
25
- space_used: GB((s.blocks - s.blocks_free) * s.block_size),
26
- space_free: GB(s.blocks_available * s.block_size),
27
- space_priv: GB((s.blocks_free - s.blocks_available) * s.block_size),
28
- files_used: s.files - s.files_available,
29
- files_free: s.files_available,
30
- # files_priv: s.files_free - s.files_available, # XXX any use?
31
- }]
32
- }
37
+ mounts = get_mounts
38
+ stats = stat_fs(mounts)
39
+ info = stats.map{ |s|
40
+ [s.name, {
41
+ space_used: GB((s.blocks - s.blocks_free) * s.block_size),
42
+ space_free: GB(s.blocks_available * s.block_size),
43
+ space_priv: GB((s.blocks_free - s.blocks_available) * s.block_size),
44
+ files_used: s.files - s.files_available,
45
+ files_free: s.files_available,
46
+ }]
47
+ }
33
48
  puts JSON::generate(Hash[*info.flatten])
34
49
 
35
50
  break unless config.include?('interval')
@@ -1,5 +1,5 @@
1
1
  # Copyright (C) 2012 Sourcefire, Inc.
2
2
 
3
3
  module Panoptimon
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/panoptimon.gemspec CHANGED
@@ -26,7 +26,4 @@ Gem::Specification.new do |gem|
26
26
 
27
27
  # Plugin gem dependencies
28
28
  gem.add_dependency 'riemann-client'
29
-
30
- # Collector gem dependencies
31
- gem.add_dependency 'sys-filesystem'
32
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panoptimon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-17 00:00:00.000000000 Z
12
+ date: 2013-08-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
16
- requirement: &11208660 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,32 +21,47 @@ dependencies:
21
21
  version: 1.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *11208660
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: daemons
27
- requirement: &11208180 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
- - - ! '>='
35
+ - - '>='
31
36
  - !ruby/object:Gem::Version
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *11208180
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: json
38
- requirement: &11207580 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
- - - ! '>='
51
+ - - '>='
42
52
  - !ruby/object:Gem::Version
43
53
  version: '0'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *11207580
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: thin
49
- requirement: &11206900 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,29 +69,28 @@ dependencies:
54
69
  version: 1.5.0
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *11206900
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.5.0
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: riemann-client
60
- requirement: &11206020 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
- - - ! '>='
83
+ - - '>='
64
84
  - !ruby/object:Gem::Version
65
85
  version: '0'
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *11206020
69
- - !ruby/object:Gem::Dependency
70
- name: sys-filesystem
71
- requirement: &11205560 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
72
89
  none: false
73
90
  requirements:
74
- - - ! '>='
91
+ - - '>='
75
92
  - !ruby/object:Gem::Version
76
93
  version: '0'
77
- type: :runtime
78
- prerelease: false
79
- version_requirements: *11205560
80
94
  description: The All-Seeing System Monitor Daemon
81
95
  email: sysops@sourcefire.com
82
96
  executables:
@@ -95,7 +109,6 @@ files:
95
109
  - collectors/cpu/cpu.json
96
110
  - collectors/disk/disk
97
111
  - collectors/disk/disk.json
98
- - collectors/disk/requires
99
112
  - collectors/disk_free/disk_free
100
113
  - collectors/disk_free/disk_free.json
101
114
  - collectors/dns/README.md
@@ -269,18 +282,18 @@ require_paths:
269
282
  required_ruby_version: !ruby/object:Gem::Requirement
270
283
  none: false
271
284
  requirements:
272
- - - ! '>='
285
+ - - '>='
273
286
  - !ruby/object:Gem::Version
274
287
  version: '1.9'
275
288
  required_rubygems_version: !ruby/object:Gem::Requirement
276
289
  none: false
277
290
  requirements:
278
- - - ! '>='
291
+ - - '>='
279
292
  - !ruby/object:Gem::Version
280
293
  version: '0'
281
294
  requirements: []
282
295
  rubyforge_project:
283
- rubygems_version: 1.8.11
296
+ rubygems_version: 1.8.25
284
297
  signing_key:
285
298
  specification_version: 3
286
299
  summary: Panoptimon collects and routes system metrics.
@@ -291,3 +304,4 @@ test_files:
291
304
  - spec/collector/metric_spec.rb
292
305
  - spec/passthru_spec.rb
293
306
  - spec/util_spec.rb
307
+ has_rdoc:
@@ -1 +0,0 @@
1
- gem/sys-filesystem