metrics-capacitor-utils 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7d250dadf7c7b0ed6295d98277ce17fa09e56bc4
4
+ data.tar.gz: 2b12a3394c54eb606985e1c2bbf0a7a45786889c
5
+ SHA512:
6
+ metadata.gz: 6fd8a5b2fa2cda337da8cb146693e252d6bcdcce9d10269dba5a7f896871d0f556f2ba3aa3fad5b6c757508df093c5d854b1900fa3b2187ffd2811c21cb23ab8
7
+ data.tar.gz: 24127a911f222f94a598eaa23b72d36787f63c40112264aeeed1b5d55f673faf07032250e8d1977f6ee2cb1f851ba2247673d8782687a0103c7b445182c88dcf
@@ -0,0 +1,88 @@
1
+ require 'redis'
2
+ require 'securerandom'
3
+ require 'json'
4
+ require 'metrics-capacitor/config'
5
+ require 'metrics-capacitor/model'
6
+
7
+ module MetricsCapacitor
8
+ module Utils
9
+ class Graphite
10
+
11
+ def initialize(opts)
12
+ Config.load!
13
+ @options = opts
14
+ @metrics = Model::Metrics.new
15
+ begin
16
+ @input = $stdin.readlines
17
+ rescue Interrupt
18
+ $stderr.puts 'Interrupted'
19
+ end
20
+ end
21
+
22
+ def run!
23
+ parse_input!
24
+ send_metrics!
25
+ end
26
+
27
+ def apply_tag_map path
28
+ name = []
29
+ autodetect = []
30
+ tags = {}
31
+ map = @options[:tag_map].split '.'
32
+ fields = path.split '.'
33
+ if fields.length < map.length
34
+ $stderr.puts "Map length can't be deeper than source tree length"
35
+ else
36
+ fields.each_with_index do |field, idx|
37
+ next if map[idx] == '_'
38
+ i = Integer(map[idx]) rescue i = map[idx]
39
+ case i
40
+ when nil
41
+ autodetect.push field
42
+ when Integer
43
+ name[i] = field
44
+ when String
45
+ tags[i] = field
46
+ end
47
+ end
48
+ end
49
+ tags['autodetect'] = autodetect.join(':')
50
+ tags.merge! @options[:add_tag]
51
+ return [ name.join(':'), tags ]
52
+ end
53
+
54
+ def debug msg
55
+ $stderr.puts "DEBUG: #{msg}" if @options[:debug]
56
+ end
57
+
58
+ def parse_input!
59
+ @input.each do |line|
60
+ fields = line.split(/\s+/)
61
+ ( name, tags ) = apply_tag_map(fields[0]) unless fields.empty?
62
+ @metrics << Model::Metric.new(name: name, tags: tags, values: fields[1].to_f) unless name == ''
63
+ end
64
+ end
65
+
66
+ def send_metrics!
67
+ @redis = Redis.new(url: Config.redis[:url])
68
+ msg = JSON.dump({
69
+ 'class' => 'MetricsCapacitor::Processor::Scrubber',
70
+ 'args' => @metrics.to_redis,
71
+ 'jid' => SecureRandom.hex(12),
72
+ 'retry' => true,
73
+ 'enqueued_at' => Time.now.to_f
74
+ })
75
+ debug "Metrics packet to send"
76
+ debug msg
77
+ begin
78
+ @redis.lpush('queue:scrubber', msg) unless @options[:debug]
79
+ exit 0
80
+ rescue StandardError => e
81
+ $stderr.puts "#{e.class}: #{e.message}"
82
+ $stderr.puts @metrics.to_redis
83
+ exit 1
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,28 @@
1
+ require 'redis'
2
+ require 'sensu-plugin'
3
+ require 'mixlib/cli'
4
+ require 'metrics-capacitor/config'
5
+ require 'metrics-capacitor/model'
6
+
7
+
8
+ module MetricsCapacitor
9
+ module Utils
10
+ class Sensu < Sensu::Plugin::CLI
11
+
12
+ def initialize(args=ARGV)
13
+ super()
14
+ self.args = self.parse_options(argv)
15
+ @settings = Utils.settings
16
+ @redis = Redis.new(url: Config.redis[:url])
17
+ end
18
+
19
+ def output(args)
20
+ case args
21
+ when Array
22
+ when Hash
23
+ end
24
+ end
25
+
26
+ end
27
+ end
28
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: metrics-capacitor-utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Radek 'blufor' Slavicinsky
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: metrics-capacitor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ - - '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 0.0.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 0.0.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: sensu-plugin
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: '1'
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: 1.1.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: '1'
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: 1.1.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: redis
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: '3.3'
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: 3.3.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '3.3'
70
+ - - '>='
71
+ - !ruby/object:Gem::Version
72
+ version: 3.3.0
73
+ - !ruby/object:Gem::Dependency
74
+ name: msgpack
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: '0.7'
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.7.6
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '0.7'
90
+ - - '>='
91
+ - !ruby/object:Gem::Version
92
+ version: 0.7.6
93
+ description: Inheritable class for writing Sensu metric plugins and Graphite format
94
+ CLI transformer/sender.
95
+ email: radek@blufor.cz
96
+ executables: []
97
+ extensions: []
98
+ extra_rdoc_files: []
99
+ files:
100
+ - lib/metrics-capacitor/utils/graphite.rb
101
+ - lib/metrics-capacitor/utils/sensu.rb
102
+ homepage: https://github.com/metrics-capacitor/metrics-capacitor-engine
103
+ licenses:
104
+ - GPLv3
105
+ metadata: {}
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - '>='
113
+ - !ruby/object:Gem::Version
114
+ version: 2.0.0
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubyforge_project:
122
+ rubygems_version: 2.4.8
123
+ signing_key:
124
+ specification_version: 4
125
+ summary: Metrics Capacitor (utils)
126
+ test_files: []