sensu-plugins-cassandra 0.0.1.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 01590d99080dbd40e971b6bbb0a104524f6dac23
4
+ data.tar.gz: ac8608508b57ddc7d48b183d28a83c6bbc420a04
5
+ SHA512:
6
+ metadata.gz: 569331519e50b498b36ae08c5328c2d8cd070162af8de58c547cc8959762dac6aeffe298988a5d167eb8c5f38d5f9a7579347703a3b415dfac1c5bd9002f6439
7
+ data.tar.gz: 0083a833323afa9b8d04f656fc95816977a6d54f094ebd0e3e735082980174fc36d91b034c7d1718a46564c4c479e2beda60f8166cc30c5474a372a7de532395
Binary file
@@ -0,0 +1 @@
1
+ ���C�L�,����X�Uj�6���Ft��1��b�ِ�c�DA��-o�7�)�L#�>R� �4V��wv>�����Z�^r݂�.����4��gU��R_��:_�K^�@�d_k/E/D܊us�ʎ�<Fm�6�o����$Y�1i�6��d��O���z¬|�2�X�z)�K ��v
@@ -0,0 +1,6 @@
1
+ Change Log
2
+ This project adheres to [Semantic Versioning](http://semver.org/).
3
+
4
+ #### 0.0.1.alpha.1
5
+
6
+ * identical functionality to the community-plugins repo
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 devops@yieldbot.com
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,54 @@
1
+ ## sensu-plugins-cassandra
2
+
3
+ [![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-cassandra.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-cassandra)
4
+ [![Gem Version](https://badge.fury.io/rb/sensu-plugins-cassandra.svg)](http://badge.fury.io/rb/sensu-plugins-cassandra)
5
+ [![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-cassandra/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-cassandra)
6
+ [![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-cassandra/badges/coverage.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-cassandra)
7
+ [![Dependency Status](https://gemnasium.com/sensu-plugins/sensu-plugins-cassandra.svg)](https://gemnasium.com/sensu-plugins/sensu-plugins-cassandra)
8
+
9
+ ## Functionality
10
+
11
+ ## Files
12
+ * bin/check-cassandra-schema
13
+ * bin/metrics-cassandra-graphite
14
+
15
+ ## Usage
16
+
17
+ ## Installation
18
+
19
+ Add the public key (if you haven’t already) as a trusted certificate
20
+
21
+ ```
22
+ gem cert --add <(curl -Ls https://raw.githubusercontent.com/sensu-plugins/sensu-plugins.github.io/master/certs/sensu-plugins.pem)
23
+ gem install sensu-plugins-cassandra -P MediumSecurity
24
+ ```
25
+
26
+ You can also download the key from /certs/ within each repository.
27
+
28
+ #### Rubygems
29
+
30
+ `gem install sensu-plugins-cassandra`
31
+
32
+ #### Bundler
33
+
34
+ Add *sensu-plugins-cassandra* to your Gemfile and run `bundle install` or `bundle update`
35
+
36
+ #### Chef
37
+
38
+ Using the Sensu **sensu_gem** LWRP
39
+ ```
40
+ sensu_gem 'sensu-plugins-cassandra' do
41
+ options('--prerelease')
42
+ version '0.0.1'
43
+ end
44
+ ```
45
+
46
+ Using the Chef **gem_package** resource
47
+ ```
48
+ gem_package 'sensu-plugins-cassandra' do
49
+ options('--prerelease')
50
+ version '0.0.1'
51
+ end
52
+ ```
53
+
54
+ ## Notes
@@ -0,0 +1,83 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-cassandra-schema
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin uses Apache Cassandra's `nodetool` to check to see
7
+ # if any node in the cluster has run into a schema disagreement problem
8
+ #
9
+ # OUTPUT:
10
+ # plain text
11
+ #
12
+ # PLATFORMS:
13
+ # Linux
14
+ #
15
+ # DEPENDENCIES:
16
+ # gem: sensu-plugin
17
+ # Cassandra's nodetool
18
+ #
19
+ # USAGE:
20
+ # #YELLOW
21
+ #
22
+ # NOTES:
23
+ # See http://www.datastax.com/documentation/cassandra/2.0/cassandra/dml/dml_handle_schema_disagree_t.html
24
+ # for more details
25
+ #
26
+ # LICENSE:
27
+ # Copyright 2014 Sonian, Inc. and contributors. <support@sensuapp.org>
28
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
29
+ # for details.
30
+ #
31
+
32
+ require 'sensu-plugin/check/cli'
33
+ require 'English'
34
+
35
+ #
36
+ # Check Cassandra Schema
37
+ #
38
+ class CheckCassandraSchema < Sensu::Plugin::Check::CLI
39
+ option :hostname,
40
+ short: '-h HOSTNAME',
41
+ long: '--host HOSTNAME',
42
+ description: 'cassandra hostname',
43
+ default: 'localhost'
44
+
45
+ option :port,
46
+ short: '-P PORT',
47
+ long: '--port PORT',
48
+ description: 'cassandra JMX port',
49
+ default: '7199'
50
+
51
+ # execute cassandra's nodetool and return output as string
52
+ def nodetool_cmd(cmd)
53
+ out = `nodetool -h #{config[:hostname]} -p #{config[:port]} #{cmd} 2>&1`
54
+ [out, $CHILD_STATUS]
55
+ end
56
+
57
+ def run # rubocop:disable all
58
+ out, rc = nodetool_cmd('describecluster')
59
+ if rc != 0
60
+ critical(out)
61
+ end
62
+
63
+ bad_nodes = []
64
+ # #YELLOW
65
+ out.each_line do |line| # rubocop:disable Style/Next
66
+ if m = line.match(/\s+UNREACHABLE:\s+(.*)\[(.*)\]\s+$/)# rubocop:disable all
67
+ bad_nodes << m[2]
68
+ next
69
+ end
70
+ if bad_nodes.count > 0
71
+ if m = line.match(/\s+(.*)\[(.*)\]\s+$/)# rubocop:disable all
72
+ bad_nodes << m[2]
73
+ end
74
+ end
75
+ end
76
+
77
+ if bad_nodes.count > 0
78
+ critical('nodes ' + bad_nodes.join(', ') + ' are in schema disagreement')
79
+ else
80
+ ok
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,381 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # cassandra-graphite
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin uses Apache Cassandra's `nodetool` to collect metrics
7
+ # from an instance of Cassandra. Default is localhost and port 7199.
8
+ # Use 8080 for Cassandra < 0.8.
9
+ #
10
+ # By default, only 'info' and 'tpstats' metrics will be output, but
11
+ # can be disabled with `--no-info` or `--no-tpstats`.
12
+ #
13
+ # Use `--cfstats` to get detailed metrics on keyspaces and column
14
+ # families.
15
+ #
16
+ # Only column-families matching a regex will be output if the
17
+ # `--filter REGEX` flag is used.
18
+ #
19
+ # OUTPUT:
20
+ # metric data
21
+ #
22
+ # PLATFORMS:
23
+ # Linux
24
+ #
25
+ # DEPENDENCIES:
26
+ # gem: sensu-plugin
27
+ # Cassandra's nodetool
28
+ #
29
+ # USAGE:
30
+ # # info and tpstats
31
+ # ----------------
32
+ #
33
+ # $ ./cassandra-metrics.rb
34
+ #
35
+ # host.cassandra.load 75696701.44 1344547246
36
+ # host.cassandra.uptime 580640 1344547246
37
+ # host.cassandra.heap.used 88332042.24 1344547246
38
+ # host.cassandra.heap.total 408944640.0 1344547246
39
+ # host.cassandra.exceptions 0 1344547246
40
+ # host.cassandra.threadpool.ReadStage.active 0 1344547246
41
+ # host.cassandra.threadpool.ReadStage.pending 0 1344547246
42
+ # ...
43
+ #
44
+ # All metrics, including keyspaces and column families
45
+ # ----------------------------------------------------
46
+ #
47
+ # $ ./cassandra-metrics.rb --cfstats
48
+ #
49
+ # Show metrics for column-families matching '.*user.*' regex
50
+ # ----------------------------------------------------------
51
+ #
52
+ # $ ./cassandra-metrics.rb --cfstats --filter .*user.*
53
+ #
54
+ # Show keyspace metrics, but not column family metrics
55
+ # ----------------------------------------------------
56
+ #
57
+ # $ ./cassandra-metrics.rb --cfstats NOTHING_SHOULD_MATCH_THIS_REGEX
58
+ #
59
+ # NOTES:
60
+ # Heavily inspired by Datadog's python plugin:
61
+ # https://github.com/miketheman/dd-agent/blob/master/checks/cassandra.py
62
+ #
63
+ # LICENSE:
64
+ # Copyright 2012 Joe Miller https://github.com/joemiller
65
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
66
+ # for details.
67
+ #
68
+
69
+ require 'sensu-plugin/metric/cli'
70
+ require 'socket'
71
+
72
+ UNITS_FACTOR = {
73
+ 'bytes' => 1,
74
+ 'KB' => 1024,
75
+ 'MB' => 1024**2,
76
+ 'GB' => 1024**3,
77
+ 'TB' => 1024**4
78
+ }
79
+
80
+ #
81
+ # Cassandra Metrics
82
+ #
83
+ class CassandraMetrics < Sensu::Plugin::Metric::CLI::Graphite
84
+ option :hostname,
85
+ short: '-h HOSTNAME',
86
+ long: '--host HOSTNAME',
87
+ description: 'cassandra hostname',
88
+ default: 'localhost'
89
+
90
+ option :port,
91
+ short: '-P PORT',
92
+ long: '--port PORT',
93
+ description: 'cassandra JMX port',
94
+ default: '7199'
95
+
96
+ option :scheme,
97
+ description: 'Metric naming scheme, text to prepend to metric',
98
+ short: '-s SCHEME',
99
+ long: '--scheme SCHEME',
100
+ default: "#{Socket.gethostname}.cassandra"
101
+
102
+ option :filter_regex,
103
+ description: 'regular expression for filtering column families (use with --cfstats)',
104
+ on: :tail,
105
+ short: '-f REGEX',
106
+ long: '--filter REGEX'
107
+
108
+ option :info,
109
+ description: 'output high-level Cassandra "info" metrics (default: yes)',
110
+ on: :tail,
111
+ short: '-i',
112
+ long: '--[no-]info',
113
+ boolean: true,
114
+ default: true
115
+
116
+ option :compactionstats,
117
+ description: 'output Cassandra "compactionstats" metrics (default: yes)',
118
+ on: :tail,
119
+ short: '-o',
120
+ long: '--[no-]compactionstats',
121
+ boolean: true,
122
+ default: true
123
+
124
+ option :tpstats,
125
+ description: 'output Cassandra threadPool metrics (default: yes)',
126
+ on: :tail,
127
+ short: '-t',
128
+ long: '--[no-]tpstats',
129
+ boolean: true,
130
+ default: true
131
+
132
+ option :cfstats,
133
+ description: 'output metrics on keyspaces and column families (default: no)',
134
+ on: :tail,
135
+ short: '-c',
136
+ long: '--[no-]cfstats',
137
+ boolean: true,
138
+ default: false
139
+
140
+ # convert_to_bytes(512, 'KB') => 524288
141
+ # convert_to_bytes(1, 'MB') => 1048576
142
+ def convert_to_bytes(size, unit)
143
+ size.to_f * UNITS_FACTOR[unit]
144
+ end
145
+
146
+ # execute cassandra's nodetool and return output as string
147
+ def nodetool_cmd(cmd)
148
+ `nodetool -h #{config[:hostname]} -p #{config[:port]} #{cmd}`
149
+ end
150
+
151
+ # nodetool -h localhost info:
152
+ # v 0.7
153
+ #
154
+ # 36299342986353445520010708318471778930
155
+ # Load : 457.02 KB
156
+ # Generation No : 1295816448
157
+ # Uptime (seconds) : 95
158
+ # Heap Memory (MB) : 521.86 / 1019.88
159
+ #
160
+ # v 0.8
161
+ # Token : 51022655878160265769426795515063697984
162
+ # Gossip active : True
163
+ # Load : 283.87 GB
164
+ # Generation No : 1331653944
165
+ # Uptime (seconds) : 188319
166
+ # Heap Memory (MB) : 2527.04 / 3830.00
167
+ # Data Center : 283
168
+ # Rack : 76
169
+ # Exceptions : 0
170
+ #
171
+ # v 1.1
172
+ # Token : 141784319550391026443072753096570088106
173
+ # Gossip active : true
174
+ # Thrift active : true
175
+ # Load : 821.59 GB
176
+ # Generation No : 1345535280
177
+ # Uptime (seconds) : 34269
178
+ # Heap Memory (MB) : 2382.02 / 3032.00
179
+ # Data Center : datacenter1
180
+ # Rack : rack1
181
+ # Exceptions : 0
182
+ # Key Cache : size 28141776 (bytes), capacity 104857584 (bytes), 9489268 hits, 9676043 requests, 0.987 recent hit rate, 14400 save period in seconds
183
+ # Row Cache : size 7947581 (bytes), capacity 1048576000 (bytes), 84005 hits, 104727 requests, 0.701 recent hit rate, 0 save period in seconds
184
+ #
185
+ # According to io/util/FileUtils.java units for load are:
186
+ # TB/GB/MB/KB/bytes
187
+ #
188
+ def parse_info# rubocop:disable all
189
+ info = nodetool_cmd('info')
190
+ # #YELLOW
191
+ info.each_line do |line| # rubocop:disable Style/Next
192
+ if m = line.match(/^Exceptions\s*:\s+([0-9]+)$/)# rubocop:disable all
193
+ output "#{config[:scheme]}.exceptions", m[1], @timestamp
194
+ end
195
+
196
+ if m = line.match(/^Load\s*:\s+([0-9.]+)\s+([KMGT]B|bytes)$/)# rubocop:disable all
197
+ output "#{config[:scheme]}.load", convert_to_bytes(m[1], m[2]), @timestamp
198
+ end
199
+
200
+ if m = line.match(/^Uptime[^:]+:\s+(\d+)$/)# rubocop:disable all
201
+ output "#{config[:scheme]}.uptime", m[1], @timestamp
202
+ end
203
+
204
+ if m = line.match(/^Heap Memory[^:]+:\s+([0-9.]+)\s+\/\s+([0-9.]+)$/)# rubocop:disable all
205
+ output "#{config[:scheme]}.heap.used", convert_to_bytes(m[1], 'MB'), @timestamp
206
+ output "#{config[:scheme]}.heap.total", convert_to_bytes(m[2], 'MB'), @timestamp
207
+ end
208
+
209
+ # v1.1+
210
+ if m = line.match(/^Key Cache[^:]+: size ([0-9]+) \(bytes\), capacity ([0-9]+) \(bytes\), ([0-9]+) hits, ([0-9]+) requests/)# rubocop:disable all
211
+ output "#{config[:scheme]}.key_cache.size", m[1], @timestamp
212
+ output "#{config[:scheme]}.key_cache.capacity", m[2], @timestamp
213
+ output "#{config[:scheme]}.key_cache.hits", m[3], @timestamp
214
+ output "#{config[:scheme]}.key_cache.requests", m[4], @timestamp
215
+ end
216
+
217
+ if m = line.match(/^Row Cache[^:]+: size ([0-9]+) \(bytes\), capacity ([0-9]+) \(bytes\), ([0-9]+) hits, ([0-9]+) requests/)# rubocop:disable all
218
+ output "#{config[:scheme]}.row_cache.size", m[1], @timestamp
219
+ output "#{config[:scheme]}.row_cache.capacity", m[2], @timestamp
220
+ output "#{config[:scheme]}.row_cache.hits", m[3], @timestamp
221
+ output "#{config[:scheme]}.row_cache.requests", m[4], @timestamp
222
+ end
223
+ end
224
+ end
225
+
226
+ # nodetool -h localhost tpstats:
227
+ # Pool Name Active Pending Completed Blocked All time blocked
228
+ # ReadStage 0 0 282971 0 0
229
+ # RequestResponseStage 0 0 32926 0 0
230
+ # MutationStage 0 0 3216105 0 0
231
+ # ReadRepairStage 0 0 0 0 0
232
+ # ReplicateOnWriteStage 0 0 0 0 0
233
+ # GossipStage 0 0 0 0 0
234
+ # AntiEntropyStage 0 0 0 0 0
235
+ # MigrationStage 0 0 188 0 0
236
+ # MemtablePostFlusher 0 0 110 0 0
237
+ # StreamStage 0 0 0 0 0
238
+ # FlushWriter 0 0 110 0 0
239
+ # MiscStage 0 0 0 0 0
240
+ # InternalResponseStage 0 0 179 0 0
241
+ # HintedHandoff 0 0 0 0 0
242
+ #
243
+ # Message type Dropped
244
+ # RANGE_SLICE 0
245
+ # READ_REPAIR 0
246
+ # BINARY 0
247
+ # READ 0
248
+ # MUTATION 0
249
+ # REQUEST_RESPONSE 0
250
+ def parse_tpstats# rubocop:disable all
251
+ tpstats = nodetool_cmd('tpstats')
252
+ tpstats.each_line do |line|
253
+ next if line.match(/^Pool Name/)
254
+ next if line.match(/^Message type/)
255
+
256
+ if m = line.match(/^(\w+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)$/)# rubocop:disable all
257
+ (thread, active, pending, completed, blocked, _) = m.captures
258
+
259
+ output "#{config[:scheme]}.threadpool.#{thread}.active", active, @timestamp
260
+ output "#{config[:scheme]}.threadpool.#{thread}.pending", pending, @timestamp
261
+ output "#{config[:scheme]}.threadpool.#{thread}.completed", completed, @timestamp
262
+ output "#{config[:scheme]}.threadpool.#{thread}.blocked", blocked, @timestamp
263
+ end
264
+
265
+ if m = line.match(/^(\w+)\s+(\d+)$/)# rubocop:disable all
266
+ (message_type, dropped) = m.captures
267
+ output "#{config[:scheme]}.message_type.#{message_type}.dropped", dropped, @timestamp
268
+ end
269
+ end
270
+ end
271
+
272
+ # nodetool -h localhost compactionstats
273
+ # pending tasks: 1
274
+ # compaction type keyspace column family bytes compacted bytes total progress
275
+ # ....
276
+ #
277
+ # note: we are only capturing the 'pending tasks' stats
278
+ def parse_compactionstats
279
+ cstats = nodetool_cmd('compactionstats')
280
+ cstats.each_line do |line|
281
+ if m = line.match(/^pending tasks:\s+([0-9]+)/)# rubocop:disable all
282
+ output "#{config[:scheme]}.compactionstats.pending_tasks", m[1], @timestamp
283
+ end
284
+ end
285
+ end
286
+
287
+ # nodetool -h localhost cfstats
288
+ # Keyspace: system
289
+ # Read Count: 216
290
+ # Read Latency: 1.4066805555555557 ms.
291
+ # Write Count: 36
292
+ # Write Latency: 0.32755555555555554 ms.
293
+ # Pending Tasks: 0
294
+ # Column Family: NodeIdInfo
295
+ # SSTable count: 0
296
+ # Space used (live): 0
297
+ # Space used (total): 0
298
+ # Number of Keys (estimate): 0
299
+ # Memtable Columns Count: 0
300
+ # Memtable Data Size: 0
301
+ # Memtable Switch Count: 0
302
+ # Read Count: 0
303
+ # Read Latency: NaN ms.
304
+ # Write Count: 0
305
+ # Write Latency: NaN ms.
306
+ # Pending Tasks: 0
307
+ # Bloom Filter False Postives: 0
308
+ # Bloom Filter False Ratio: 0.00000
309
+ # Bloom Filter Space Used: 0
310
+ # Key cache capacity: 1
311
+ # Key cache size: 0
312
+ # Key cache hit rate: NaN
313
+ # Row cache: disabled
314
+ # Compacted row minimum size: 0
315
+ # Compacted row maximum size: 0
316
+ # Compacted row mean size: 0
317
+ #
318
+ # some notes on parsing cfstats output:
319
+ # - a line preceeded by 1 tab contains keyspace metrics
320
+ # - a line preceeded by 2 tabs contains column family metrics
321
+ def parse_cfstats# rubocop:disable all
322
+ def get_metric(string)
323
+ string.strip!
324
+ (metric, value) = string.split(': ')
325
+ if metric.nil? || value.nil?
326
+ return [nil, nil]
327
+ else
328
+ # sanitize metric names for graphite
329
+ metric.gsub!(/[^a-zA-Z0-9]/, '_') # convert all other chars to _
330
+ metric.gsub!(/[_]*$/, '') # remove any _'s at end of the string
331
+ metric.gsub!(/[_]{2,}/, '_') # convert sequence of multiple _'s to single _
332
+ metric.downcase!
333
+ # sanitize metric values for graphite. Numbers only, please.
334
+ value = value.chomp(' ms.').gsub(/([0-9.]+)$/, '\1')
335
+ end
336
+ [metric, value]
337
+ end
338
+
339
+ cfstats = nodetool_cmd('cfstats')
340
+
341
+ keyspace = nil
342
+ cf = nil
343
+
344
+ cfstats.each_line do |line|
345
+ num_indents = line.count("\t")
346
+ if m = line.match(/^Keyspace:\s+(\w+)$/)# rubocop:disable all
347
+ keyspace = m[1]
348
+ elsif m = line.match(/\t\tColumn Family[^:]*:\s+(\w+)$/)# rubocop:disable all
349
+ cf = m[1]
350
+ elsif num_indents == 0
351
+ # keyspace = nil
352
+ cf = nil
353
+ elsif num_indents == 2 && !cf.nil?
354
+ # a column family metric
355
+ # #YELLOW
356
+ if config[:filter_regex]
357
+ unless cf.match(config[:filter_regex]) # rubocop:disable IfUnlessModifier
358
+ next
359
+ end
360
+ end
361
+ (metric, value) = get_metric(line)
362
+ output "#{config[:scheme]}.#{keyspace}.#{cf}.#{metric}", value, @timestamp unless value == 'disabled'
363
+ elsif num_indents == 1 && !keyspace.nil?
364
+ # a keyspace metric
365
+ (metric, value) = get_metric(line)
366
+ output "#{config[:scheme]}.#{keyspace}.#{metric}", value, @timestamp
367
+ end
368
+ end
369
+ end
370
+
371
+ def run# rubocop:disable all
372
+ @timestamp = Time.now.to_i
373
+
374
+ parse_info if config[:info]
375
+ parse_compactionstats if config[:compactionstats]
376
+ parse_tpstats if config[:tpstats]
377
+ parse_cfstats if config[:cfstats]
378
+
379
+ ok
380
+ end
381
+ end
@@ -0,0 +1,7 @@
1
+ #
2
+ # Set gem version
3
+ #
4
+ module SensuPluginsCassandra
5
+ # Gem version
6
+ VERSION = '0.0.1.alpha.1'
7
+ end
metadata ADDED
@@ -0,0 +1,229 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sensu-plugins-cassandra
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.alpha.1
5
+ platform: ruby
6
+ authors:
7
+ - Yieldbot, Inc. and contributors
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRIwEAYDVQQDDAltYXR0
14
+ am9uZXMxGDAWBgoJkiaJk/IsZAEZFgh5aWVsZGJvdDETMBEGCgmSJomT8ixkARkW
15
+ A2NvbTAeFw0xNTAxMjgyMTAyNTFaFw0xNjAxMjgyMTAyNTFaMEMxEjAQBgNVBAMM
16
+ CW1hdHRqb25lczEYMBYGCgmSJomT8ixkARkWCHlpZWxkYm90MRMwEQYKCZImiZPy
17
+ LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyTSzVYnO
18
+ CLgyrIyT1mBQakArQyW8xhi6MlDqyzXHJGeERT790U6EgoBVeS4XoK0ptFZNR8Tf
19
+ zko0w+Nv47TarSCgkPOaxY+mxWnAVR10dOmfeLr7huiMyps+YD56/EF2FqQ3jf/+
20
+ qohENfKD91qy1ieEy+Fn7Pf74ltbNKUdkb9a9eFXQ0DQ4ip5vik7DzjQkUTj4lca
21
+ k6ArwnmHX4YDhZoYtrQJ8jVktN0/+NtA40M5qkCYHNe5tUW25b/tKVYuioxG6b2Z
22
+ oIzaZxRLxf6HVAWpCVRT/F5+/yjigkX4u++eYacfLGleXQzoK7BL65vHGMJygWEE
23
+ 0TKGqFOrl/L0AQIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
24
+ HQ4EFgQUEf6a8Td7MrSZc8ImbLFZAENPbz0wIQYDVR0RBBowGIEWbWF0dGpvbmVz
25
+ QHlpZWxkYm90LmNvbTAhBgNVHRIEGjAYgRZtYXR0am9uZXNAeWllbGRib3QuY29t
26
+ MA0GCSqGSIb3DQEBBQUAA4IBAQBbzXAYA3BVGw8DZ0YYoY1VHPNEcH5qPIApmHO8
27
+ rvSmuUT0yMEi7u00H/5uHRFf4LleGT/+sTdyXKsNPGT9kdRuQEgwi+vf7Zfvd8aX
28
+ UF/+4VkEYf/8rV8Ere6u2QaWPgApdMV6JjKr1fAwCTd8AuGXNaWItiPPMseSQzLJ
29
+ JKP4hVvbc1d+oS925B1lcBiqn2aYvElbyNAVmQPywNNqkWmvtlqj9ZVJfV5HQLdu
30
+ 8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
31
+ HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
32
+ -----END CERTIFICATE-----
33
+ date: 2015-04-09 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: sensu-plugin
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '='
40
+ - !ruby/object:Gem::Version
41
+ version: 1.1.0
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '='
47
+ - !ruby/object:Gem::Version
48
+ version: 1.1.0
49
+ - !ruby/object:Gem::Dependency
50
+ name: english
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '='
54
+ - !ruby/object:Gem::Version
55
+ version: 0.6.3
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '='
61
+ - !ruby/object:Gem::Version
62
+ version: 0.6.3
63
+ - !ruby/object:Gem::Dependency
64
+ name: codeclimate-test-reporter
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.4'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '0.4'
77
+ - !ruby/object:Gem::Dependency
78
+ name: rubocop
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '='
82
+ - !ruby/object:Gem::Version
83
+ version: 0.17.0
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '='
89
+ - !ruby/object:Gem::Version
90
+ version: 0.17.0
91
+ - !ruby/object:Gem::Dependency
92
+ name: rspec
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '3.1'
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '3.1'
105
+ - !ruby/object:Gem::Dependency
106
+ name: bundler
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '1.7'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '1.7'
119
+ - !ruby/object:Gem::Dependency
120
+ name: rake
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '10.0'
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '10.0'
133
+ - !ruby/object:Gem::Dependency
134
+ name: github-markup
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '1.3'
140
+ type: :development
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '1.3'
147
+ - !ruby/object:Gem::Dependency
148
+ name: redcarpet
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '3.2'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '3.2'
161
+ - !ruby/object:Gem::Dependency
162
+ name: yard
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '0.8'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '0.8'
175
+ - !ruby/object:Gem::Dependency
176
+ name: pry
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - "~>"
180
+ - !ruby/object:Gem::Version
181
+ version: '0.10'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: '0.10'
189
+ description: Sensu plugins for working with cassandra
190
+ email: "<sensu-users@googlegroups.com>"
191
+ executables: []
192
+ extensions: []
193
+ extra_rdoc_files: []
194
+ files:
195
+ - CHANGELOG.md
196
+ - LICENSE
197
+ - README.md
198
+ - bin/check-cassandra-schema.rb
199
+ - bin/metrics-cassandra-graphite.rb
200
+ - lib/sensu-plugins-cassandra.rb
201
+ homepage: https://github.com/sensu-plugins/sensu-plugins-cassandra
202
+ licenses:
203
+ - MIT
204
+ metadata:
205
+ maintainer: ''
206
+ development_status: active
207
+ production_status: unstable - testing recommended
208
+ post_install_message:
209
+ rdoc_options: []
210
+ require_paths:
211
+ - lib
212
+ required_ruby_version: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: 1.9.3
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">"
220
+ - !ruby/object:Gem::Version
221
+ version: 1.3.1
222
+ requirements: []
223
+ rubyforge_project:
224
+ rubygems_version: 2.2.2
225
+ signing_key:
226
+ specification_version: 4
227
+ summary: Sensu plugins for working with haproxy
228
+ test_files: []
229
+ has_rdoc:
@@ -0,0 +1 @@
1
+ n��3�9�9�'�5Mߓ럝����*��N܎4-�f2̓0)�3C'�6�|��3JX�]��\�Z5\��"-��`9�Ӂ�[�/IBy��-�ܱF���y�Zs2�Ӏ�:��9�B,P�n��qJ$����j��ɦ�8L�q��b�Z9n��Q��%m�ɦ}�j�ҝ���yO��]X���A�k�f-�0o���~۴�:�'?x{-O��j��WM��4*�&"�Y?;at��