riemann-redis-keys 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: []