panoptimon 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (174) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +24 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +29 -0
  5. data/README.md +78 -0
  6. data/Rakefile +14 -0
  7. data/bin/panoptimon +118 -0
  8. data/collectors/cpu/cpu +39 -0
  9. data/collectors/cpu/cpu.json +1 -0
  10. data/collectors/disk/disk +37 -0
  11. data/collectors/disk/disk.json +1 -0
  12. data/collectors/disk/requires +1 -0
  13. data/collectors/disk_free/disk_free +15 -0
  14. data/collectors/disk_free/disk_free.json +1 -0
  15. data/collectors/dns/README.md +33 -0
  16. data/collectors/dns/dns +9 -0
  17. data/collectors/dns/dns.json +7 -0
  18. data/collectors/dns/lib/panoptimon-collector-dns/dns.rb +43 -0
  19. data/collectors/dns/lib/panoptimon-collector-dns.rb +2 -0
  20. data/collectors/dns/panoptimon-collector-dns.gemspec +4 -0
  21. data/collectors/files/README.md +32 -0
  22. data/collectors/files/files +129 -0
  23. data/collectors/files/files.json +14 -0
  24. data/collectors/files/spec/files_spec.rb +57 -0
  25. data/collectors/haproxy/README.md +40 -0
  26. data/collectors/haproxy/haproxy +16 -0
  27. data/collectors/haproxy/haproxy.json +3 -0
  28. data/collectors/haproxy/lib/panoptimon-collector-haproxy/haproxy.rb +149 -0
  29. data/collectors/haproxy/lib/panoptimon-collector-haproxy.rb +1 -0
  30. data/collectors/haproxy/notes.txt +13 -0
  31. data/collectors/haproxy/spec/haproxy_spec.rb +98 -0
  32. data/collectors/haproxy/spec/haproxy_spec.rb-get.html +22 -0
  33. data/collectors/haproxy/spec/haproxy_spec.rb-show_info.txt +21 -0
  34. data/collectors/haproxy/spec/haproxy_spec.rb-show_stat.csv +25 -0
  35. data/collectors/haproxy/spec/haproxy_spec.rb-show_stat2.csv +11 -0
  36. data/collectors/http/README.md +49 -0
  37. data/collectors/http/http +27 -0
  38. data/collectors/http/http.json +3 -0
  39. data/collectors/http/lib/panoptimon-collector-http/http.rb +74 -0
  40. data/collectors/http/lib/panoptimon-collector-http/version.rb +7 -0
  41. data/collectors/http/lib/panoptimon-collector-http.rb +2 -0
  42. data/collectors/interfaces/interfaces +33 -0
  43. data/collectors/interfaces/interfaces.json +1 -0
  44. data/collectors/iostat/iostat +53 -0
  45. data/collectors/iostat/iostat.json +1 -0
  46. data/collectors/json/README.md +27 -0
  47. data/collectors/json/json +37 -0
  48. data/collectors/json/json.json +1 -0
  49. data/collectors/load/load +15 -0
  50. data/collectors/load/load.json +1 -0
  51. data/collectors/memcached/memcached +55 -0
  52. data/collectors/memcached/memcached.json +7 -0
  53. data/collectors/memcached/test-notes.txt +3 -0
  54. data/collectors/memory/memory +33 -0
  55. data/collectors/memory/memory.json +1 -0
  56. data/collectors/mysql_status/mysql_status +52 -0
  57. data/collectors/mysql_status/mysql_status.json +4 -0
  58. data/collectors/network/network +67 -0
  59. data/collectors/network/network.json +18 -0
  60. data/collectors/nginx/README.md +32 -0
  61. data/collectors/nginx/lib/panoptimon-collector-nginx/nginx.rb +45 -0
  62. data/collectors/nginx/lib/panoptimon-collector-nginx.rb +2 -0
  63. data/collectors/nginx/nginx +11 -0
  64. data/collectors/nginx/nginx.json +3 -0
  65. data/collectors/nginx/panoptimon-collector-nginx.gemspec +4 -0
  66. data/collectors/ping/README.md +54 -0
  67. data/collectors/ping/ping +57 -0
  68. data/collectors/ping/ping.json +7 -0
  69. data/collectors/process/README.md +36 -0
  70. data/collectors/process/process +61 -0
  71. data/collectors/process/process.json +7 -0
  72. data/collectors/service/README.md +51 -0
  73. data/collectors/service/samples/.gitignore +1 -0
  74. data/collectors/service/samples/data/disconnect +11 -0
  75. data/collectors/service/samples/data/flappy +7 -0
  76. data/collectors/service/samples/data/solid +18 -0
  77. data/collectors/service/samples/replay +27 -0
  78. data/collectors/service/service +86 -0
  79. data/collectors/service/service.json +7 -0
  80. data/collectors/smtp/lib/panoptimon-collector-smtp/smtp.rb +30 -0
  81. data/collectors/smtp/lib/panoptimon-collector-smtp.rb +1 -0
  82. data/collectors/smtp/smtp +27 -0
  83. data/collectors/smtp/smtp.json +10 -0
  84. data/collectors/socket/README.md +36 -0
  85. data/collectors/socket/lib/panoptimon-collector-socket/socket.rb +38 -0
  86. data/collectors/socket/lib/panoptimon-collector-socket/tcp.rb +34 -0
  87. data/collectors/socket/lib/panoptimon-collector-socket/unix.rb +28 -0
  88. data/collectors/socket/lib/panoptimon-collector-socket.rb +3 -0
  89. data/collectors/socket/socket +13 -0
  90. data/collectors/socket/socket.json +16 -0
  91. data/collectors/socket/tests/tcp_spec.rb +21 -0
  92. data/collectors/socket/tests/unix_spec.rb +35 -0
  93. data/collectors/ssh/README.md +27 -0
  94. data/collectors/ssh/ssh +41 -0
  95. data/collectors/ssh/ssh.json +3 -0
  96. data/lib/panoptimon/collector.rb +135 -0
  97. data/lib/panoptimon/eventmonkeypatch/popen3.rb +40 -0
  98. data/lib/panoptimon/http.rb +63 -0
  99. data/lib/panoptimon/logger.rb +19 -0
  100. data/lib/panoptimon/monitor.rb +154 -0
  101. data/lib/panoptimon/util/string-with-as_number.rb +5 -0
  102. data/lib/panoptimon/util.rb +23 -0
  103. data/lib/panoptimon/version.rb +5 -0
  104. data/lib/panoptimon.rb +144 -0
  105. data/misc/collector_setup.rb +23 -0
  106. data/misc/monitor_setup.rb +25 -0
  107. data/misc/plugins_setup.rb +25 -0
  108. data/misc/riemann-cli.rb +33 -0
  109. data/panoptimon.gemspec +33 -0
  110. data/plugins/daemon_health/README.md +31 -0
  111. data/plugins/daemon_health/daemon_health.json +4 -0
  112. data/plugins/daemon_health/daemon_health.rb +34 -0
  113. data/plugins/daemon_health/lib/panoptimon-plugin-daemon_health/rollup.rb +64 -0
  114. data/plugins/daemon_health/panoptimon-plugin-daemon_health.gemspec +10 -0
  115. data/plugins/daemon_health/spec/moving_avg_spec.rb +24 -0
  116. data/plugins/email/README.md +30 -0
  117. data/plugins/email/email.json +3 -0
  118. data/plugins/email/email.rb +52 -0
  119. data/plugins/log_to_file/log_to_file.json +1 -0
  120. data/plugins/log_to_file/log_to_file.rb +8 -0
  121. data/plugins/log_to_logger/log_to_logger.json +3 -0
  122. data/plugins/log_to_logger/log_to_logger.rb +7 -0
  123. data/plugins/metrics_http/README.md +23 -0
  124. data/plugins/metrics_http/metrics_http.json +1 -0
  125. data/plugins/metrics_http/metrics_http.rb +17 -0
  126. data/plugins/riemann_stream/requires +1 -0
  127. data/plugins/riemann_stream/riemann_stream.json +3 -0
  128. data/plugins/riemann_stream/riemann_stream.rb +23 -0
  129. data/plugins/status_http/requires +1 -0
  130. data/plugins/status_http/status_http.json +1 -0
  131. data/plugins/status_http/status_http.rb +60 -0
  132. data/sample_configs/1/collectors/alls_well.json +6 -0
  133. data/sample_configs/1/collectors/clock/clock +12 -0
  134. data/sample_configs/1/collectors/clock.json +1 -0
  135. data/sample_configs/1/collectors/df/df.json +6 -0
  136. data/sample_configs/1/collectors/df/wrap_df +21 -0
  137. data/sample_configs/1/collectors/load.json +1 -0
  138. data/sample_configs/1/panoptimon.json +4 -0
  139. data/sample_configs/1/plugins/isup/isup.rb +3 -0
  140. data/sample_configs/1/plugins/isup.json +1 -0
  141. data/sample_configs/1/plugins/log_to_file.json +1 -0
  142. data/sample_configs/err_handler/collectors/fail.json +4 -0
  143. data/sample_configs/err_handler/collectors/noisy.json +5 -0
  144. data/sample_configs/err_handler/collectors/noisy_failure.json +5 -0
  145. data/sample_configs/err_handler/collectors/notfound.json +4 -0
  146. data/sample_configs/err_handler/panoptimon.json +3 -0
  147. data/sample_configs/err_handler/plugins/.exists +0 -0
  148. data/sample_configs/passthru/collectors/beep.json +5 -0
  149. data/sample_configs/passthru/collectors/cat/collect_this.json +1 -0
  150. data/sample_configs/passthru/collectors/cat.json +5 -0
  151. data/sample_configs/passthru/panoptimon.json +3 -0
  152. data/sample_configs/passthru/plugins/okcat/okcat.rb +17 -0
  153. data/sample_configs/passthru/plugins/okcat.json +1 -0
  154. data/sample_configs/plugin_error/collectors/beep.json +5 -0
  155. data/sample_configs/plugin_error/panoptimon.json +1 -0
  156. data/sample_configs/plugin_error/plugins/error_always/error_always.rb +1 -0
  157. data/sample_configs/plugin_error/plugins/error_always.json +1 -0
  158. data/sample_configs/slow/collectors/slowbeep.json +6 -0
  159. data/sample_configs/slow/panoptimon.json +1 -0
  160. data/sample_configs/slow/plugins/.exists +0 -0
  161. data/sample_configs/timeout_newline/collectors/slow_lf.json +8 -0
  162. data/sample_configs/timeout_newline/panoptimon.json +1 -0
  163. data/sample_configs/timeout_newline/plugins/.exists +0 -0
  164. data/sample_configs/timeout_not/collectors/slowly.json +7 -0
  165. data/sample_configs/timeout_not/panoptimon.json +1 -0
  166. data/sample_configs/timeout_not/plugins/.exists +0 -0
  167. data/spec/collector/config_spec.rb +30 -0
  168. data/spec/collector/initialize_spec.rb +24 -0
  169. data/spec/collector/metric_spec.rb +22 -0
  170. data/spec/passthru_spec.rb +13 -0
  171. data/spec/util_spec.rb +37 -0
  172. data/tools/link_and_enable +37 -0
  173. data/tools/metricify +8 -0
  174. metadata +319 -0
@@ -0,0 +1,8 @@
1
+ {
2
+ "description" : "slow / hung mid-line",
3
+ "interval" : 10,
4
+ "timeout" : 1,
5
+ "exec" : "/usr/bin/perl",
6
+ "args" : ["-e", "$|=1; while() {print qq/{\"ok\" : t/; sleep 2; print qq/rue}\\n/; sleep 10}"]
7
+ }
8
+
File without changes
@@ -0,0 +1,7 @@
1
+ {
2
+ "description" : "slow, but steady",
3
+ "interval" : 10,
4
+ "timeout" : 1,
5
+ "exec" : "/usr/bin/perl",
6
+ "args" : ["-e", "$|=1; while() {print qq/{\"ok\" : true}\\n/; sleep 10}"]
7
+ }
File without changes
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'panoptimon'
4
+
5
+ require 'pathname'
6
+
7
+ m = Panoptimon::Monitor.new(
8
+ config: Panoptimon.load_options(['-c', '',
9
+ '-o', 'collector_interval=9',
10
+ '-o', 'collector_timeout=12',
11
+ ])
12
+ )
13
+
14
+ conf = ->(content) {
15
+ file = Pathname.new('blah/collectors/not.json')
16
+ file.stub(:read) { content }
17
+ OpenStruct.new(m._load_collector_config(file))
18
+ }
19
+
20
+ describe 'default config' do
21
+ subject { conf.call( %{ {} } ) }
22
+ its(:interval) {should == 9}
23
+ its(:timeout) {should == 12}
24
+ end
25
+
26
+ describe 'override config' do
27
+ subject { conf.call( %{ {"interval": 3, "timeout": 7} } ) }
28
+ its(:interval) {should == 3}
29
+ its(:timeout) {should == 7}
30
+ end
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rspec'
4
+ require 'panoptimon'
5
+
6
+ describe('collector exec must exist') {
7
+ this = ->(setup) {
8
+ setup.call()
9
+ Panoptimon::Collector.new(
10
+ command: ['nosuchfilehere'],
11
+ bus: not(nil)
12
+ );
13
+ }
14
+ it('complains if command file does not exist') {
15
+ expect {this.call(->(){})}.
16
+ to raise_exception(/no such file/)
17
+ }
18
+
19
+ it('complains if command file is not executable') {
20
+ expect {this.call(->(){File.stub('exist?') {true}})}.
21
+ to raise_exception(/is not executable/)
22
+ }
23
+
24
+ }
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rspec'
4
+ require 'panoptimon'
5
+
6
+ describe('flatten a metric') {
7
+ it('flattens metrics') {
8
+ Panoptimon::Metric.new('x', {'t' => {'q' => 9, 'r' => 7.3}}).
9
+ should == {'x|t|q' => 9, 'x|t|r' => 7.3}
10
+ }
11
+ it('does not mangle _info entries') {
12
+ Panoptimon::Metric.new('x', {'t' => {'q' => 9, 'r' => 7.3},
13
+ '_info' => {
14
+ 'keys' => 'arbitrary values',
15
+ 'whatever' => ['deep structure', 'blah', {'blah' => 'blah'}]}
16
+ }).
17
+ should == {'x|t|q' => 9, 'x|t|r' => 7.3, 'x|_info' => {
18
+ 'keys' => 'arbitrary values',
19
+ 'whatever' => ['deep structure', 'blah', {'blah' => 'blah'}]
20
+ }}
21
+ }
22
+ }
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'panoptimon'
4
+
5
+ describe('pass data through the bus') {
6
+ it('passes') {
7
+ (env = ENV.clone)['RUBYOPT']='-Ilib'; ENV.stub('[]') {|x| env[x]}
8
+ IO.popen([Gem.ruby, './bin/panoptimon', '-D',
9
+ '-C', 'sample_configs/passthru/'],
10
+ 'r', {'RUBYOPT' => '-Ilib'}
11
+ ).readlines.should == ["ok\n"]
12
+ }
13
+ }
data/spec/util_spec.rb ADDED
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'panoptimon/util'
4
+ require 'ostruct'
5
+
6
+ describe('os lookup string') {
7
+ before(:each) {
8
+ Panoptimon::Util.stub(:_os) { :plan9 }
9
+ }
10
+ it('returns correct string') {
11
+ Panoptimon::Util.os.should == :plan9
12
+ }
13
+ it('returns correct hash value') {
14
+ Panoptimon::Util.os(plan9: 10, default: 0).should == 10
15
+ Panoptimon::Util.os(win32: 'twelve', plan9: 10, default: 0).should == 10
16
+ }
17
+ it('falls-through to a default') {
18
+ Panoptimon::Util.os(default: 'ok').should == 'ok'
19
+ }
20
+ it('dispatches to a proc') {
21
+ Panoptimon::Util.os(plan9: ->(){7}, default: 0).should == 7
22
+ }
23
+ it('dispatches to a default proc') {
24
+ Panoptimon::Util.os(default: ->(){'ok'}).should == 'ok'
25
+ }
26
+ it('complains loudly if needed') {
27
+ expect {
28
+ Panoptimon::Util.os(linux: 7)
29
+ }.to raise_exception(/^unsupported OS/)
30
+ }
31
+ it('can complain selectively') {
32
+ expect {
33
+ Panoptimon::Util.os(plan9: ->(){raise "unsupported OS: plan9"}, default: 'ok')
34
+ }.to raise_exception(/^unsupported OS/)
35
+ }
36
+ }
37
+
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Symlinks your directory and .json file into config dirs.
4
+ # (expects foo.json inside directory foo/)
5
+ # ./tools/link_and_enable collectors/foo /etc/panoptimon/collectors
6
+ # ./tools/link_and_enable plugins/awesome /etc/panoptimon/plugins
7
+
8
+ require 'pathname'
9
+
10
+ from, to = ARGV[0], ARGV[1]
11
+
12
+ raise "must have source and dest dirs" unless(from and to)
13
+
14
+ from = Pathname.new(from)
15
+ to = Pathname.new(to)
16
+
17
+ raise "'#{from}' does not exist" unless from.exist?
18
+ raise "'#{to}' does not exist" unless to.directory?
19
+
20
+ valid = ['collectors', 'plugins']
21
+
22
+ raise "destination must be in collectors|plugins" unless
23
+ valid.include?(to.basename.to_s)
24
+
25
+ name = from.basename.to_s
26
+ conf = name + '.json'
27
+
28
+ check_conf = from + conf
29
+ raise "config '#{check_conf}' does not exist" unless check_conf.file?
30
+
31
+ dest = to.join(name)
32
+ dest.make_symlink(from.relative_path_from(to))
33
+ puts "link: '#{dest}'"
34
+
35
+ conf_dest = to.join(conf)
36
+ puts "link: '#{conf_dest}'"
37
+ conf_dest.make_symlink(dest.basename.join(conf))
data/tools/metricify ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # translate json into panoptimon metrics-style json
4
+ require "panoptimon"
5
+
6
+ name = ARGV[0] || 'c'
7
+ string = STDIN.readlines.join('')
8
+ puts JSON.generate(Panoptimon::Metric.new(name, JSON.parse(string)))
metadata ADDED
@@ -0,0 +1,319 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: panoptimon
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Eric Wilhelm
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: eventmachine
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: daemons
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: thin
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.5.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 1.5.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: riemann-client
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sys-filesystem
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: mysql
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: The All-Seeing System Monitor Daemon
112
+ email: sysops@sourcefire.com
113
+ executables:
114
+ - panoptimon
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - .gitignore
119
+ - Gemfile
120
+ - LICENSE
121
+ - README.md
122
+ - Rakefile
123
+ - bin/panoptimon
124
+ - collectors/cpu/cpu
125
+ - collectors/cpu/cpu.json
126
+ - collectors/disk/disk
127
+ - collectors/disk/disk.json
128
+ - collectors/disk/requires
129
+ - collectors/disk_free/disk_free
130
+ - collectors/disk_free/disk_free.json
131
+ - collectors/dns/README.md
132
+ - collectors/dns/dns
133
+ - collectors/dns/dns.json
134
+ - collectors/dns/lib/panoptimon-collector-dns.rb
135
+ - collectors/dns/lib/panoptimon-collector-dns/dns.rb
136
+ - collectors/dns/panoptimon-collector-dns.gemspec
137
+ - collectors/files/README.md
138
+ - collectors/files/files
139
+ - collectors/files/files.json
140
+ - collectors/files/spec/files_spec.rb
141
+ - collectors/haproxy/README.md
142
+ - collectors/haproxy/haproxy
143
+ - collectors/haproxy/haproxy.json
144
+ - collectors/haproxy/lib/panoptimon-collector-haproxy.rb
145
+ - collectors/haproxy/lib/panoptimon-collector-haproxy/haproxy.rb
146
+ - collectors/haproxy/notes.txt
147
+ - collectors/haproxy/spec/haproxy_spec.rb
148
+ - collectors/haproxy/spec/haproxy_spec.rb-get.html
149
+ - collectors/haproxy/spec/haproxy_spec.rb-show_info.txt
150
+ - collectors/haproxy/spec/haproxy_spec.rb-show_stat.csv
151
+ - collectors/haproxy/spec/haproxy_spec.rb-show_stat2.csv
152
+ - collectors/http/README.md
153
+ - collectors/http/http
154
+ - collectors/http/http.json
155
+ - collectors/http/lib/panoptimon-collector-http.rb
156
+ - collectors/http/lib/panoptimon-collector-http/http.rb
157
+ - collectors/http/lib/panoptimon-collector-http/version.rb
158
+ - collectors/interfaces/interfaces
159
+ - collectors/interfaces/interfaces.json
160
+ - collectors/iostat/iostat
161
+ - collectors/iostat/iostat.json
162
+ - collectors/json/README.md
163
+ - collectors/json/json
164
+ - collectors/json/json.json
165
+ - collectors/load/load
166
+ - collectors/load/load.json
167
+ - collectors/memcached/memcached
168
+ - collectors/memcached/memcached.json
169
+ - collectors/memcached/test-notes.txt
170
+ - collectors/memory/memory
171
+ - collectors/memory/memory.json
172
+ - collectors/mysql_status/mysql_status
173
+ - collectors/mysql_status/mysql_status.json
174
+ - collectors/network/network
175
+ - collectors/network/network.json
176
+ - collectors/nginx/README.md
177
+ - collectors/nginx/lib/panoptimon-collector-nginx.rb
178
+ - collectors/nginx/lib/panoptimon-collector-nginx/nginx.rb
179
+ - collectors/nginx/nginx
180
+ - collectors/nginx/nginx.json
181
+ - collectors/nginx/panoptimon-collector-nginx.gemspec
182
+ - collectors/ping/README.md
183
+ - collectors/ping/ping
184
+ - collectors/ping/ping.json
185
+ - collectors/process/README.md
186
+ - collectors/process/process
187
+ - collectors/process/process.json
188
+ - collectors/service/README.md
189
+ - collectors/service/samples/.gitignore
190
+ - collectors/service/samples/data/disconnect
191
+ - collectors/service/samples/data/flappy
192
+ - collectors/service/samples/data/solid
193
+ - collectors/service/samples/replay
194
+ - collectors/service/service
195
+ - collectors/service/service.json
196
+ - collectors/smtp/lib/panoptimon-collector-smtp.rb
197
+ - collectors/smtp/lib/panoptimon-collector-smtp/smtp.rb
198
+ - collectors/smtp/smtp
199
+ - collectors/smtp/smtp.json
200
+ - collectors/socket/README.md
201
+ - collectors/socket/lib/panoptimon-collector-socket.rb
202
+ - collectors/socket/lib/panoptimon-collector-socket/socket.rb
203
+ - collectors/socket/lib/panoptimon-collector-socket/tcp.rb
204
+ - collectors/socket/lib/panoptimon-collector-socket/unix.rb
205
+ - collectors/socket/socket
206
+ - collectors/socket/socket.json
207
+ - collectors/socket/tests/tcp_spec.rb
208
+ - collectors/socket/tests/unix_spec.rb
209
+ - collectors/ssh/README.md
210
+ - collectors/ssh/ssh
211
+ - collectors/ssh/ssh.json
212
+ - lib/panoptimon.rb
213
+ - lib/panoptimon/collector.rb
214
+ - lib/panoptimon/eventmonkeypatch/popen3.rb
215
+ - lib/panoptimon/http.rb
216
+ - lib/panoptimon/logger.rb
217
+ - lib/panoptimon/monitor.rb
218
+ - lib/panoptimon/util.rb
219
+ - lib/panoptimon/util/string-with-as_number.rb
220
+ - lib/panoptimon/version.rb
221
+ - misc/collector_setup.rb
222
+ - misc/monitor_setup.rb
223
+ - misc/plugins_setup.rb
224
+ - misc/riemann-cli.rb
225
+ - panoptimon.gemspec
226
+ - plugins/daemon_health/README.md
227
+ - plugins/daemon_health/daemon_health.json
228
+ - plugins/daemon_health/daemon_health.rb
229
+ - plugins/daemon_health/lib/panoptimon-plugin-daemon_health/rollup.rb
230
+ - plugins/daemon_health/panoptimon-plugin-daemon_health.gemspec
231
+ - plugins/daemon_health/spec/moving_avg_spec.rb
232
+ - plugins/email/README.md
233
+ - plugins/email/email.json
234
+ - plugins/email/email.rb
235
+ - plugins/log_to_file/log_to_file.json
236
+ - plugins/log_to_file/log_to_file.rb
237
+ - plugins/log_to_logger/log_to_logger.json
238
+ - plugins/log_to_logger/log_to_logger.rb
239
+ - plugins/metrics_http/README.md
240
+ - plugins/metrics_http/metrics_http.json
241
+ - plugins/metrics_http/metrics_http.rb
242
+ - plugins/riemann_stream/requires
243
+ - plugins/riemann_stream/riemann_stream.json
244
+ - plugins/riemann_stream/riemann_stream.rb
245
+ - plugins/status_http/requires
246
+ - plugins/status_http/status_http.json
247
+ - plugins/status_http/status_http.rb
248
+ - sample_configs/1/collectors/alls_well.json
249
+ - sample_configs/1/collectors/clock.json
250
+ - sample_configs/1/collectors/clock/clock
251
+ - sample_configs/1/collectors/df/df.json
252
+ - sample_configs/1/collectors/df/wrap_df
253
+ - sample_configs/1/collectors/load.json
254
+ - sample_configs/1/panoptimon.json
255
+ - sample_configs/1/plugins/isup.json
256
+ - sample_configs/1/plugins/isup/isup.rb
257
+ - sample_configs/1/plugins/log_to_file.json
258
+ - sample_configs/err_handler/collectors/fail.json
259
+ - sample_configs/err_handler/collectors/noisy.json
260
+ - sample_configs/err_handler/collectors/noisy_failure.json
261
+ - sample_configs/err_handler/collectors/notfound.json
262
+ - sample_configs/err_handler/panoptimon.json
263
+ - sample_configs/err_handler/plugins/.exists
264
+ - sample_configs/passthru/collectors/beep.json
265
+ - sample_configs/passthru/collectors/cat.json
266
+ - sample_configs/passthru/collectors/cat/collect_this.json
267
+ - sample_configs/passthru/panoptimon.json
268
+ - sample_configs/passthru/plugins/okcat.json
269
+ - sample_configs/passthru/plugins/okcat/okcat.rb
270
+ - sample_configs/plugin_error/collectors/beep.json
271
+ - sample_configs/plugin_error/panoptimon.json
272
+ - sample_configs/plugin_error/plugins/error_always.json
273
+ - sample_configs/plugin_error/plugins/error_always/error_always.rb
274
+ - sample_configs/slow/collectors/slowbeep.json
275
+ - sample_configs/slow/panoptimon.json
276
+ - sample_configs/slow/plugins/.exists
277
+ - sample_configs/timeout_newline/collectors/slow_lf.json
278
+ - sample_configs/timeout_newline/panoptimon.json
279
+ - sample_configs/timeout_newline/plugins/.exists
280
+ - sample_configs/timeout_not/collectors/slowly.json
281
+ - sample_configs/timeout_not/panoptimon.json
282
+ - sample_configs/timeout_not/plugins/.exists
283
+ - spec/collector/config_spec.rb
284
+ - spec/collector/initialize_spec.rb
285
+ - spec/collector/metric_spec.rb
286
+ - spec/passthru_spec.rb
287
+ - spec/util_spec.rb
288
+ - tools/link_and_enable
289
+ - tools/metricify
290
+ homepage: https://github.com/synthesist/panoptimon
291
+ licenses:
292
+ - bsd
293
+ metadata: {}
294
+ post_install_message:
295
+ rdoc_options: []
296
+ require_paths:
297
+ - lib
298
+ required_ruby_version: !ruby/object:Gem::Requirement
299
+ requirements:
300
+ - - '>='
301
+ - !ruby/object:Gem::Version
302
+ version: '1.9'
303
+ required_rubygems_version: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - '>='
306
+ - !ruby/object:Gem::Version
307
+ version: '0'
308
+ requirements: []
309
+ rubyforge_project:
310
+ rubygems_version: 2.0.3
311
+ signing_key:
312
+ specification_version: 4
313
+ summary: Panoptimon collects and routes system metrics.
314
+ test_files:
315
+ - spec/collector/config_spec.rb
316
+ - spec/collector/initialize_spec.rb
317
+ - spec/collector/metric_spec.rb
318
+ - spec/passthru_spec.rb
319
+ - spec/util_spec.rb