logstash-output-graphite 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0b011a8afde4eaa11d8d81019c56a84377c2c1db
4
- data.tar.gz: 8cf4c99d2cc31dfa23e1ee3558c23ac04488fb42
3
+ metadata.gz: 0b0fcc4d3ba4675e46b147a8e8fabd2fc24387c3
4
+ data.tar.gz: afb15d9df4d24266a16a05abe6dd9832360bc34a
5
5
  SHA512:
6
- metadata.gz: 555ae0f0f9f0fe87bef65d5e23b65ce1aee51ddff0bbc3976bca5b908600e78e3afa7476f222e31ed9ace5973d6bc671d881fec44bdc2595dda13e2088db748e
7
- data.tar.gz: c7671e873098a4f7afeca2d3d965761545305060fd506efb7e0b30b759da4d17c1a458805ced7b3e663c96da0b87ccf2929ac906d6ce2aa8b56233b8bec92308
6
+ metadata.gz: 5e16bf4dd0736a352c1b44eeeee96cb229319a97132cd16ec26480536702f7b3d4c766b9c3747da3065ccd2a3f3425d62c97c243d922d78e0e7245153bccbcd6
7
+ data.tar.gz: 54d208eff8bfe710bef705cceb4b1faac4e0bdc56314187019e2c18deda14fe038054e695821b231b5f4978069c7d00f27be75e722e166a2ef15ffb79bd296bd
@@ -1,9 +1,13 @@
1
+ ## 2.0.3
2
+ - Fixed empty/nil messages handling
3
+
1
4
  ## 2.0.0
2
- - Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
5
+ - Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
3
6
  instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
4
7
  - Dependency on logstash-core update to 2.0
5
8
 
6
- - 1.0.2
7
- * Added support for sprintf in field formatting
8
- - 1.0.1
9
- * Added support for nested hashes as values
9
+ ## 1.0.2
10
+ - Added support for sprintf in field formatting
11
+
12
+ ## 1.0.1
13
+ - Added support for nested hashes as values
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Logstash Plugin
2
2
 
3
+ [![Build
4
+ Status](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Outputs/job/logstash-plugin-output-graphite-unit/badge/icon)](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Outputs/job/logstash-plugin-output-graphite-unit/)
5
+
3
6
  This is a plugin for [Logstash](https://github.com/elastic/logstash).
4
7
 
5
8
  It is fully free and fully open source. The license is Apache 2.0, meaning you are pretty much free to use it however you want in whatever way.
@@ -30,7 +30,7 @@ class LogStash::Outputs::Graphite < LogStash::Outputs::Base
30
30
  config :resend_on_failure, :validate => :boolean, :default => false
31
31
 
32
32
  # The metric(s) to use. This supports dynamic strings like %{host}
33
- # for metric names and also for values. This is a hash field with key
33
+ # for metric names and also for values. This is a hash field with key
34
34
  # being the metric name, value being the metric value. Example:
35
35
  # [source,ruby]
36
36
  # metrics => { "%{host}/uptime" => "%{uptime_1m}" }
@@ -90,19 +90,18 @@ class LogStash::Outputs::Graphite < LogStash::Outputs::Base
90
90
  end
91
91
 
92
92
  connect
93
- end # def register
93
+ end
94
94
 
95
95
  def connect
96
96
  # TODO(sissel): Test error cases. Catch exceptions. Find fortune and glory. Retire to yak farm.
97
97
  begin
98
98
  @socket = TCPSocket.new(@host, @port)
99
99
  rescue Errno::ECONNREFUSED => e
100
- @logger.warn("Connection refused to graphite server, sleeping...",
101
- :host => @host, :port => @port)
100
+ @logger.warn("Connection refused to graphite server, sleeping...", :host => @host, :port => @port)
102
101
  sleep(@reconnect_interval)
103
102
  retry
104
103
  end
105
- end # def connect
104
+ end
106
105
 
107
106
  def construct_metric_name(event, metric)
108
107
  if @metrics_format
@@ -113,41 +112,41 @@ class LogStash::Outputs::Graphite < LogStash::Outputs::Base
113
112
  metric
114
113
  end
115
114
 
116
- public
117
115
  def receive(event)
118
-
119
-
120
116
  # Graphite message format: metric value timestamp\n
121
117
 
122
- messages = @fields_are_metrics ?
123
- messages_from_event_fields(event, @include_metrics, @exclude_metrics) :
124
- messages_from_event_metrics(event, @metrics)
118
+ # compact to remove nil messages which produces useless \n
119
+ messages = (
120
+ @fields_are_metrics \
121
+ ? messages_from_event_fields(event, @include_metrics, @exclude_metrics)
122
+ : messages_from_event_metrics(event, @metrics)
123
+ ).compact
125
124
 
126
125
  if messages.empty?
127
- @logger.debug("Message is empty, not sending anything to Graphite", :messages => messages, :host => @host, :port => @port)
126
+ @logger.debug? && @logger.debug("Message is empty, not sending anything to Graphite", :messages => messages, :host => @host, :port => @port)
128
127
  else
129
128
  message = messages.join("\n")
130
- @logger.debug("Sending carbon messages", :messages => messages, :host => @host, :port => @port)
129
+ @logger.debug? && @logger.debug("Sending carbon messages", :messages => messages, :host => @host, :port => @port)
131
130
 
132
131
  # Catch exceptions like ECONNRESET and friends, reconnect on failure.
133
132
  # TODO(sissel): Test error cases. Catch exceptions. Find fortune and glory.
134
133
  begin
135
134
  @socket.puts(message)
136
135
  rescue Errno::EPIPE, Errno::ECONNRESET, IOError => e
137
- @logger.warn("Connection to graphite server died",
138
- :exception => e, :host => @host, :port => @port)
136
+ @logger.warn("Connection to graphite server died", :exception => e, :host => @host, :port => @port)
139
137
  sleep(@reconnect_interval)
140
138
  connect
141
139
  retry if @resend_on_failure
142
140
  end
143
141
  end
144
- end # def receive
142
+ end
145
143
 
146
144
  private
147
145
 
148
146
  def messages_from_event_fields(event, include_metrics, exclude_metrics)
149
- timestamp = event_timestamp(event)
150
147
  @logger.debug? && @logger.debug("got metrics event", :metrics => event.to_hash)
148
+
149
+ timestamp = event_timestamp(event)
151
150
  event.to_hash.flat_map do |metric,value|
152
151
  next if EXCLUDE_ALWAYS.include?(metric)
153
152
  next unless include_metrics.empty? || include_metrics.any? { |regexp| metric.match(regexp) }
@@ -160,7 +159,8 @@ class LogStash::Outputs::Graphite < LogStash::Outputs::Base
160
159
  def messages_from_event_metrics(event, metrics)
161
160
  timestamp = event_timestamp(event)
162
161
  metrics.flat_map do |metric, value|
163
- @logger.debug("processing", :metric => metric, :value => value)
162
+ @logger.debug? && @logger.debug("processing", :metric => metric, :value => value)
163
+
164
164
  metric = event.sprintf(metric)
165
165
  next unless @include_metrics.any? {|regexp| metric.match(regexp)}
166
166
  next if @exclude_metrics.any? {|regexp| metric.match(regexp)}
@@ -175,7 +175,7 @@ class LogStash::Outputs::Graphite < LogStash::Outputs::Base
175
175
 
176
176
  def metrics_lines_for_event(event, metric, value, timestamp)
177
177
  if event[metric].is_a?(Hash)
178
- dotify(event[metric], metric).map do |k,v|
178
+ dotify(event[metric], metric).map do |k, v|
179
179
  metrics_line(event, k, v, timestamp)
180
180
  end
181
181
  else
@@ -190,9 +190,9 @@ class LogStash::Outputs::Graphite < LogStash::Outputs::Base
190
190
  # Take a nested ruby hash of the form {:a => {:b => 2}, c: => 3} and
191
191
  # turn it into a hash of the form
192
192
  # { "a.b" => 2, "c" => 3}
193
- def dotify(hash,prefix=nil)
194
- hash.reduce({}) do |acc,kv|
195
- k,v = kv
193
+ def dotify(hash, prefix = nil)
194
+ hash.reduce({}) do |acc, kv|
195
+ k, v = kv
196
196
  pk = prefix ? "#{prefix}#{@nested_object_separator}#{k}" : k.to_s
197
197
  if v.is_a?(Hash)
198
198
  acc.merge!(dotify(v, pk))
@@ -205,5 +205,4 @@ class LogStash::Outputs::Graphite < LogStash::Outputs::Base
205
205
  acc
206
206
  end
207
207
  end
208
-
209
- end # class LogStash::Outputs::Graphite
208
+ end
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-output-graphite'
4
- s.version = '2.0.2'
4
+ s.version = '2.0.3'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "This output allows you to pull metrics from your logs and ship them to Graphite"
7
7
  s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require_relative '../spec_helper'
2
4
 
3
5
  describe LogStash::Outputs::Graphite do
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-graphite
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-14 00:00:00.000000000 Z
11
+ date: 2015-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- requirement: !ruby/object:Gem::Requirement
14
+ name: logstash-core
15
+ version_requirements: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - '>='
17
18
  - !ruby/object:Gem::Version
@@ -19,10 +20,7 @@ dependencies:
19
20
  - - <
20
21
  - !ruby/object:Gem::Version
21
22
  version: 3.0.0
22
- name: logstash-core
23
- prerelease: false
24
- type: :runtime
25
- version_requirements: !ruby/object:Gem::Requirement
23
+ requirement: !ruby/object:Gem::Requirement
26
24
  requirements:
27
25
  - - '>='
28
26
  - !ruby/object:Gem::Version
@@ -30,62 +28,64 @@ dependencies:
30
28
  - - <
31
29
  - !ruby/object:Gem::Version
32
30
  version: 3.0.0
31
+ prerelease: false
32
+ type: :runtime
33
33
  - !ruby/object:Gem::Dependency
34
+ name: logstash-devutils
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
34
40
  requirement: !ruby/object:Gem::Requirement
35
41
  requirements:
36
42
  - - '>='
37
43
  - !ruby/object:Gem::Version
38
44
  version: '0'
39
- name: logstash-devutils
40
45
  prerelease: false
41
46
  type: :development
47
+ - !ruby/object:Gem::Dependency
48
+ name: logstash-input-generator
42
49
  version_requirements: !ruby/object:Gem::Requirement
43
50
  requirements:
44
51
  - - '>='
45
52
  - !ruby/object:Gem::Version
46
53
  version: '0'
47
- - !ruby/object:Gem::Dependency
48
54
  requirement: !ruby/object:Gem::Requirement
49
55
  requirements:
50
56
  - - '>='
51
57
  - !ruby/object:Gem::Version
52
58
  version: '0'
53
- name: logstash-input-generator
54
59
  prerelease: false
55
60
  type: :development
61
+ - !ruby/object:Gem::Dependency
62
+ name: logstash-filter-kv
56
63
  version_requirements: !ruby/object:Gem::Requirement
57
64
  requirements:
58
65
  - - '>='
59
66
  - !ruby/object:Gem::Version
60
67
  version: '0'
61
- - !ruby/object:Gem::Dependency
62
68
  requirement: !ruby/object:Gem::Requirement
63
69
  requirements:
64
70
  - - '>='
65
71
  - !ruby/object:Gem::Version
66
72
  version: '0'
67
- name: logstash-filter-kv
68
73
  prerelease: false
69
74
  type: :development
75
+ - !ruby/object:Gem::Dependency
76
+ name: logstash-filter-ruby
70
77
  version_requirements: !ruby/object:Gem::Requirement
71
78
  requirements:
72
79
  - - '>='
73
80
  - !ruby/object:Gem::Version
74
81
  version: '0'
75
- - !ruby/object:Gem::Dependency
76
82
  requirement: !ruby/object:Gem::Requirement
77
83
  requirements:
78
84
  - - '>='
79
85
  - !ruby/object:Gem::Version
80
86
  version: '0'
81
- name: logstash-filter-ruby
82
87
  prerelease: false
83
88
  type: :development
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - '>='
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
89
  description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
90
90
  email: info@elastic.co
91
91
  executables: []