riemann-redis-keys 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 (4) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +21 -0
  3. data/bin/riemann-redis-keys +67 -0
  4. metadata +74 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: af3b5a5a359001d4bdee472bba116b0bbb46dbcc
4
+ data.tar.gz: 39e4df9ff66021c4bfdcbcf37552a1849c40137f
5
+ SHA512:
6
+ metadata.gz: bd08d3b74cb96a0ceb48ae1f097223b7ace7cce98800e1ee5c1655a57ca65e55fe7c2805ccad3e8af8c463b506db98a1923b94f803212a85cac72d0e2ce96a3e
7
+ data.tar.gz: f93b642e5472b11b5bd327940a7a1eea9f83197c22998b2d7bbafbd59cbce422d10eb465e2f6b93524cd67ffd2898f8103ef008a2512698d34ae5d452aab64e3
data/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # Riemann Redis Keys
2
+
3
+ A simple redis riemann client based on https://github.com/riemann/riemann-redis
4
+ Supports reporting the size/cardinality/length of the following key types:
5
+
6
+ * list
7
+ * set
8
+ * zset
9
+ * hash
10
+ * string
11
+
12
+ ## Usage
13
+
14
+ ```bash
15
+ riemann-redis-keys --redis-key "key:one" --redis-key "other:key"
16
+ ```
17
+
18
+ Specify additional conneciton info:
19
+ ```
20
+ riemann-redis-keys --redis-key "other:key" --redis-url "redis://localhost:6379"
21
+ ```
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env ruby
2
+ require 'riemann/tools'
3
+ require 'pry'
4
+
5
+ class Riemann::Tools::RedisKeys
6
+ include Riemann::Tools
7
+ require 'redis'
8
+
9
+ opt :redis_host, "Redis hostname", :default => 'localhost'
10
+ opt :redis_port, "Redis port", :default => 6379
11
+ opt :redis_password, "Redis password", :default => ''
12
+ opt :redis_url, "Redis URL", :default => ''
13
+ opt :redis_socket, "Redis socket", :default => ''
14
+ opt :redis_section, "Redis INFO section", :type => String, :multi => true, :default => 'default'
15
+ opt :redis_key, "Redis keys", :type => :strings, :multi => true
16
+
17
+ def initialize
18
+ options = if opts[:redis_url] != ''
19
+ { :url => opts[:redis_url] }
20
+ elsif opts[:redis_socket] != ''
21
+ { :path => opts[:redis_socket] }
22
+ else
23
+ { :host => opts[:redis_host], :port => opts[:redis_port] }
24
+ end
25
+ @redis = ::Redis.new(options)
26
+ @redis.auth(opts[:redis_password]) unless opts[:redis_password] == ''
27
+ @key_types = Hash[opts[:redis_key].collect { |v| [v.first, nil] }]
28
+
29
+ @key_operations = {"list" => :llen, "set" => :scard, "zset" => :zcard,
30
+ "hash" => :hlen, "string" => :strlen}
31
+
32
+ end
33
+
34
+
35
+ def tick
36
+ begin
37
+ @key_types.each do |key, key_type|
38
+ type = key_type
39
+ # If nil, grab type from redis
40
+ if type.nil?
41
+ t = @redis.type key
42
+ @key_types[key] = t unless t == "none"
43
+ end
44
+
45
+ if !type.nil?
46
+ value = @redis.send(@key_operations[type], key)
47
+
48
+ data = {
49
+ :host => opts[:redis_host].dup,
50
+ :service => "redis #{key}",
51
+ :metric => value.to_s,
52
+ :state => value.to_s,
53
+ :tags => ['redis']
54
+ }
55
+
56
+ report(data)
57
+ end
58
+ end
59
+ rescue ::Redis::CommandError => e
60
+ if e.message == "ERR operation not permitted"
61
+ @redis.auth(opts[:redis_password]) unless opts[:redis_password] == ''
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ Riemann::Tools::RedisKeys.run
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: riemann-redis-keys
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Stuart Quin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: riemann-tools
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.2.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.2.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: redis
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.2
41
+ description: Monitor redis key size/length and report back to riemann
42
+ email: stuart.quin@gmail.com
43
+ executables:
44
+ - riemann-redis-keys
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - README.md
49
+ - bin/riemann-redis-keys
50
+ homepage: https://github.com/stuartquin/riemann-redis-keys
51
+ licenses:
52
+ - MIT
53
+ metadata: {}
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 1.8.7
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ requirements: []
69
+ rubyforge_project: riemann-redis-keys
70
+ rubygems_version: 2.2.2
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: Monitor redis key size/length and report back to riemann
74
+ test_files: []