logstash-output-graphite 2.0.2 → 2.0.3

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 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: []