logstash-output-graphite 1.0.1 → 1.0.2

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: aaa1548ced5cd4e3cc3f3724c078a13e9c507fe5
4
- data.tar.gz: 9c2309ed86b7c371bd35ad4d21ed7bb96536b48d
3
+ metadata.gz: 7b6b47436f05d8903ef227740690ad1d785a93d7
4
+ data.tar.gz: 672997abc19ab7bc65e4650d7798125d2713a8ad
5
5
  SHA512:
6
- metadata.gz: 26aedf2dae122c104225a6297484edd858457e553b340113d2458c2c4ec963a80133e8505f52cc0e348135db0ab5eb6ee654e8b15419906a1ba7a3f2f62dc7f4
7
- data.tar.gz: dd176d82e9c199bb713dc8c8e3ecdda2b30117692994b9beef372d6531c125a6ff1056ae13d6bec070fc62d33f80b4637f8b567dd9404fef663d843a2f9a7571
6
+ metadata.gz: 43f7a13e246f7b82402fdeb8cbfd8ed3a87ed7d61e97b6f62cfd2e0e14dc137445b8284b58c083cc647787b830d1f97d4a92e4140ca29f7ab41dcf0e6e62812f
7
+ data.tar.gz: b0824e226d9b6bd324ea2988846d7416bf0248599b7edabae43f23bfc754a268b6a267ef4f8ee3af7df1c2f590435bbc17d7dce7a8de03f0bdd2cec5e57b169f
@@ -1,2 +1,4 @@
1
+ - 1.0.2
2
+ * Added support for sprintf in field formatting
1
3
  - 1.0.1
2
4
  * Added support for nested hashes as values
@@ -104,9 +104,10 @@ class LogStash::Outputs::Graphite < LogStash::Outputs::Base
104
104
  end
105
105
  end # def connect
106
106
 
107
- def construct_metric_name(metric)
107
+ def construct_metric_name(event, metric)
108
108
  if @metrics_format
109
- return @metrics_format.gsub(METRIC_PLACEHOLDER, metric)
109
+ sprinted = event.sprintf(@metrics_format)
110
+ return sprinted.gsub(METRIC_PLACEHOLDER, metric)
110
111
  end
111
112
 
112
113
  metric
@@ -175,15 +176,15 @@ class LogStash::Outputs::Graphite < LogStash::Outputs::Base
175
176
  def metrics_lines_for_event(event, metric, value, timestamp)
176
177
  if event[metric].is_a?(Hash)
177
178
  dotify(event[metric], metric).map do |k,v|
178
- metrics_line(k, v, timestamp)
179
+ metrics_line(event, k, v, timestamp)
179
180
  end
180
181
  else
181
- metrics_line(event.sprintf(metric), event.sprintf(value).to_f, timestamp)
182
+ metrics_line(event, event.sprintf(metric), event.sprintf(value).to_f, timestamp)
182
183
  end
183
184
  end
184
185
 
185
- def metrics_line(name, value, timestamp)
186
- "#{construct_metric_name(name)} #{value} #{timestamp}"
186
+ def metrics_line(event, name, value, timestamp)
187
+ "#{construct_metric_name(event, name)} #{value} #{timestamp}"
187
188
  end
188
189
 
189
190
  # Take a nested ruby hash of the form {:a => {:b => 2}, c: => 3} and
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-output-graphite'
4
- s.version = '1.0.1'
4
+ s.version = '1.0.2'
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"
@@ -31,9 +31,10 @@ describe LogStash::Outputs::Graphite do
31
31
  "port" => port,
32
32
  "fields_are_metrics" => true,
33
33
  "include_metrics" => ["foo"],
34
- "metrics_format" => "foo.bar.sys.data.*") }
34
+ "metrics_format" => "foo.%{@host}.sys.data.*") }
35
35
 
36
- let(:event) { LogStash::Event.new("foo" => "123") }
36
+ let(:event) { LogStash::Event.new("foo" => "123", "@host" => "testhost") }
37
+ let(:expected_metric_prefix) { "foo.#{event['@host']}.sys.data" }
37
38
 
38
39
  context "match one key" do
39
40
  it "should generate one element" do
@@ -42,17 +43,17 @@ describe LogStash::Outputs::Graphite do
42
43
 
43
44
  it "should match the generated key" do
44
45
  line = server.pop
45
- expect(line).to match(/^foo.bar.sys.data.foo 123.0 \d{10,}\n$/)
46
+ expect(line).to match(/^#{expected_metric_prefix}.foo 123.0 \d{10,}\n$/)
46
47
  end
47
48
  end
48
49
 
49
50
  context "when matching a nested hash" do
50
- let(:event) { LogStash::Event.new("foo" => {"a" => 3, "c" => {"d" => 2}}) }
51
+ let(:event) { LogStash::Event.new("foo" => {"a" => 3, "c" => {"d" => 2}}, "@host" => "myhost") }
51
52
 
52
53
  it "should create the proper formatted lines" do
53
54
  lines = [server.pop, server.pop].sort # Put key 'a' first
54
- expect(lines[0]).to match(/^foo.bar.sys.data.foo.a 3 \d{10,}\n$/)
55
- expect(lines[1]).to match(/^foo.bar.sys.data.foo.c.d 2 \d{10,}\n$/)
55
+ expect(lines[0]).to match(/^#{expected_metric_prefix}.foo.a 3 \d{10,}\n$/)
56
+ expect(lines[1]).to match(/^#{expected_metric_prefix}.foo.c.d 2 \d{10,}\n$/)
56
57
  end
57
58
  end
58
59
  end
@@ -192,6 +193,5 @@ describe LogStash::Outputs::Graphite do
192
193
  expect(dotified).to eql("a" => 2, "5" => 4)
193
194
  end
194
195
  end
195
-
196
196
  end
197
197
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-graphite
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic