panoptimon 0.0.2

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.
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