mini_statsd 0.1.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: be0ac4712a9c32e5402edc0c2d20b2002069244d
4
+ data.tar.gz: 1b4d48d558f2aa2f73e74882c01891bc74c501b6
5
+ SHA512:
6
+ metadata.gz: eeeb59171b0f7c399bda290fb25174b4361be5138bf6bb24a90ab27fef97298681f15dabdaf6ace60b4792c0cd8752bd8dfeb3f536b1b68c8fee03ca0a2a5058
7
+ data.tar.gz: 88bc608719a8c6b3b8c7244b90f1445be3e646bd79cc0e627c6ed636284b0875e48518c0c120bbb8da3773ec808b986e89b3daf4318d588940d05deffbeeeb56
data/bin/mini_statsd ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/mini_statsd'
4
+
5
+ MiniStatsd.run(ARGV)
@@ -0,0 +1,7 @@
1
+ require_relative 'statsd_listener'
2
+
3
+ class MiniStatsd
4
+ def self.run(args = [])
5
+ StatsdListener.run(args)
6
+ end
7
+ end
@@ -0,0 +1,17 @@
1
+ require 'term/ansicolor'
2
+
3
+ class PortSanitizer
4
+ def self.get_port(args)
5
+ color = Term::ANSIColor
6
+
7
+ port = args.first.to_i
8
+
9
+ if port < 1024
10
+ puts "#{color.yellow('Invalid or no port informed. Assigning default port (8125)')}.\n\n"
11
+
12
+ port = 8125
13
+ end
14
+
15
+ port
16
+ end
17
+ end
@@ -0,0 +1,44 @@
1
+ require 'socket'
2
+ require 'term/ansicolor'
3
+ require_relative 'port_sanitizer'
4
+
5
+ class StatsdListener
6
+ include Term::ANSIColor
7
+
8
+ def self.run(args)
9
+ puts "Starting MiniStatsd...\n\n"
10
+
11
+ new(args).run
12
+ end
13
+
14
+ def initialize(args)
15
+ $stdout.sync = true
16
+
17
+ @socket = UDPSocket.new
18
+ @port = PortSanitizer.get_port(args)
19
+
20
+ @socket.bind(nil, @port)
21
+ end
22
+
23
+ def run
24
+ puts "Listening on port #{@port}"
25
+
26
+ while @message = @socket.recvfrom(@port)
27
+ extract_metric
28
+
29
+ print_metric
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def extract_metric
36
+ return if @message.empty?
37
+
38
+ @metric, @value = @message.first.split(':')
39
+ end
40
+
41
+ def print_metric
42
+ puts "#{bold('Metric Received')}: #{blue(@metric)} | value: #{green(@value)}"
43
+ end
44
+ end
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mini_statsd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Igor Marques
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: term-ansicolor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.3.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.3.2
27
+ description: A super simple StatsD receiver
28
+ email: igormarquessilva@gmail.com
29
+ executables:
30
+ - mini_statsd
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - bin/mini_statsd
35
+ - lib/mini_statsd.rb
36
+ - lib/port_sanitizer.rb
37
+ - lib/statsd_listener.rb
38
+ homepage: https://github.com/IgorMarques/Mini-StatsD
39
+ licenses:
40
+ - MIT
41
+ metadata: {}
42
+ post_install_message:
43
+ rdoc_options: []
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirements: []
57
+ rubyforge_project:
58
+ rubygems_version: 2.4.6
59
+ signing_key:
60
+ specification_version: 4
61
+ summary: Mini StatsD
62
+ test_files: []
63
+ has_rdoc: