metrics-capacitor-utils 0.0.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: 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: []