logstash-codec-graphite 3.0.2 → 3.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: a5e875b6c61301bd447a593556cb635e7cabb3a7
4
- data.tar.gz: 17c108254a40fd8c2937eb0665f247b984657e41
3
+ metadata.gz: 859dc15d43e063bcbedd5b0a2a2b9296d33f5562
4
+ data.tar.gz: bafc39cd683fcb28c29d04218a0cff3021015ca0
5
5
  SHA512:
6
- metadata.gz: 7c2eca2d8908111154aa589b3d520daac5ae093ef0433e13063478f1cb50b9587f8f14a6899fcdf050845c51103479a7270a0b658043c07066b8a1811f2d3238
7
- data.tar.gz: edbc70a9e0f7daef34a96ffe0819779a2f92018bcf05835605389e113f4c8f8e3fa940493267df6ef19fcbc5c46602970cedc8f809a7fa72d8b5b3956120e68e
6
+ metadata.gz: 6363a8e6244389d9a106ef5f7a929117521260414532baa394c046dabf2ea529dddbcbfbf40f2e7ae109bca5785e2e9569704e2af1bc684cc49720ad9b5afe92
7
+ data.tar.gz: 39d3adbe589138e5864f5c44d8f390334017be37dcb3502d711aea33978cbed0f9264cecebbea48e544e8188f5e020ac5a47f857c21dd61ddd903aab87f054f2
data/Gemfile CHANGED
@@ -1,4 +1,11 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in logstash-mass_effect.gemspec
4
3
  gemspec
4
+
5
+ logstash_path = ENV["LOGSTASH_PATH"] || "../../logstash"
6
+ use_logstash_source = ENV["LOGSTASH_SOURCE"] && ENV["LOGSTASH_SOURCE"].to_s == "1"
7
+
8
+ if Dir.exist?(logstash_path) && use_logstash_source
9
+ gem 'logstash-core', :path => "#{logstash_path}/logstash-core"
10
+ gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api"
11
+ end
@@ -0,0 +1,93 @@
1
+ :plugin: graphite
2
+ :type: codec
3
+
4
+ ///////////////////////////////////////////
5
+ START - GENERATED VARIABLES, DO NOT EDIT!
6
+ ///////////////////////////////////////////
7
+ :version: %VERSION%
8
+ :release_date: %RELEASE_DATE%
9
+ :changelog_url: %CHANGELOG_URL%
10
+ :include_path: ../../../../logstash/docs/include
11
+ ///////////////////////////////////////////
12
+ END - GENERATED VARIABLES, DO NOT EDIT!
13
+ ///////////////////////////////////////////
14
+
15
+ [id="plugins-{type}-{plugin}"]
16
+
17
+ === Graphite codec plugin
18
+
19
+ include::{include_path}/plugin_header.asciidoc[]
20
+
21
+ ==== Description
22
+
23
+ This codec will encode and decode Graphite formated lines.
24
+
25
+ [id="plugins-{type}s-{plugin}-options"]
26
+ ==== Graphite Codec Configuration Options
27
+
28
+ [cols="<,<,<",options="header",]
29
+ |=======================================================================
30
+ |Setting |Input type|Required
31
+ | <<plugins-{type}s-{plugin}-exclude_metrics>> |<<array,array>>|No
32
+ | <<plugins-{type}s-{plugin}-fields_are_metrics>> |<<boolean,boolean>>|No
33
+ | <<plugins-{type}s-{plugin}-include_metrics>> |<<array,array>>|No
34
+ | <<plugins-{type}s-{plugin}-metrics>> |<<hash,hash>>|No
35
+ | <<plugins-{type}s-{plugin}-metrics_format>> |<<string,string>>|No
36
+ |=======================================================================
37
+
38
+ &nbsp;
39
+
40
+ [id="plugins-{type}s-{plugin}-exclude_metrics"]
41
+ ===== `exclude_metrics`
42
+
43
+ * Value type is <<array,array>>
44
+ * Default value is `["%{[^}]+}"]`
45
+
46
+ Exclude regex matched metric names, by default exclude unresolved %{field} strings
47
+
48
+ [id="plugins-{type}s-{plugin}-fields_are_metrics"]
49
+ ===== `fields_are_metrics`
50
+
51
+ * Value type is <<boolean,boolean>>
52
+ * Default value is `false`
53
+
54
+ Indicate that the event @fields should be treated as metrics and will be sent as is to graphite
55
+
56
+ [id="plugins-{type}s-{plugin}-include_metrics"]
57
+ ===== `include_metrics`
58
+
59
+ * Value type is <<array,array>>
60
+ * Default value is `[".*"]`
61
+
62
+ Include only regex matched metric names
63
+
64
+ [id="plugins-{type}s-{plugin}-metrics"]
65
+ ===== `metrics`
66
+
67
+ * Value type is <<hash,hash>>
68
+ * Default value is `{}`
69
+
70
+ The metric(s) to use. This supports dynamic strings like `%{host}`
71
+ for metric names and also for values. This is a hash field with key
72
+ of the metric name, value of the metric value. Example:
73
+ [source,ruby]
74
+ [ "%{host}/uptime", "%{uptime_1m}" ]
75
+
76
+ The value will be coerced to a floating point value. Values which cannot be
77
+ coerced will zero (0)
78
+
79
+ [id="plugins-{type}s-{plugin}-metrics_format"]
80
+ ===== `metrics_format`
81
+
82
+ * Value type is <<string,string>>
83
+ * Default value is `"*"`
84
+
85
+ Defines format of the metric string. The placeholder `*` will be
86
+ replaced with the name of the actual metric. This supports dynamic
87
+ strings like `%{host}`.
88
+ [source,ruby]
89
+ metrics_format => "%{host}.foo.bar.*.sum"
90
+
91
+ NOTE: If no metrics_format is defined the name of the metric will be used as fallback.
92
+
93
+
@@ -33,9 +33,10 @@ class LogStash::Codecs::Graphite < LogStash::Codecs::Base
33
33
  config :exclude_metrics, :validate => :array, :default => [ "%\{[^}]+\}" ]
34
34
 
35
35
  # Defines format of the metric string. The placeholder `*` will be
36
- # replaced with the name of the actual metric.
36
+ # replaced with the name of the actual metric. This supports dynamic
37
+ # strings like `%{host}`.
37
38
  # [source,ruby]
38
- # metrics_format => "foo.bar.*.sum"
39
+ # metrics_format => "%{host}.foo.bar.*.sum"
39
40
  #
40
41
  # NOTE: If no metrics_format is defined the name of the metric will be used as fallback.
41
42
  config :metrics_format, :validate => :string, :default => DEFAULT_METRICS_FORMAT
@@ -70,6 +71,7 @@ class LogStash::Codecs::Graphite < LogStash::Codecs::Base
70
71
 
71
72
  messages = []
72
73
  timestamp = event.sprintf("%{+%s}")
74
+ @metrics_format = event.sprintf(@metrics_format)
73
75
 
74
76
  if @fields_are_metrics
75
77
  @logger.debug("got metrics event", :metrics => event.to_hash)
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-codec-graphite'
4
- s.version = '3.0.2'
4
+ s.version = '3.0.3'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "This codec will encode and decode Graphite formated lines."
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/logstash-plugin install gemname. This gem is not a stand-alone program"
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.require_paths = ["lib"]
12
12
 
13
13
  # Files
14
- s.files = Dir['lib/**/*','spec/**/*','vendor/**/*','*.gemspec','*.md','CONTRIBUTORS','Gemfile','LICENSE','NOTICE.TXT']
14
+ s.files = Dir["lib/**/*","spec/**/*","*.gemspec","*.md","CONTRIBUTORS","Gemfile","LICENSE","NOTICE.TXT", "vendor/jar-dependencies/**/*.jar", "vendor/jar-dependencies/**/*.rb", "VERSION", "docs/**/*"]
15
15
 
16
16
  # Tests
17
17
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
@@ -1,3 +1,4 @@
1
+ require "logstash/devutils/rspec/spec_helper"
1
2
  require "logstash/codecs/graphite"
2
3
  require "logstash/event"
3
4
  require "insist"
@@ -92,5 +93,19 @@ describe LogStash::Codecs::Graphite do
92
93
  end
93
94
  subject.encode(LogStash::Event.new("@timestamp" => timestamp))
94
95
  end
96
+
97
+ it "should support dynamic strings in metrics_format" do
98
+ name = Random.srand.to_s(36)
99
+ value = Random.rand*1000
100
+ timestamp = Time.now.gmtime
101
+ host = "localhost"
102
+ subject.metrics = {name => value}
103
+ subject.metrics_format = "%{host}.foo.bar.*.baz"
104
+ subject.on_event do |event, data|
105
+ insist { data.is_a? String }
106
+ insist { data } == "#{host}.foo.bar.#{name}.baz #{value} #{timestamp.to_i}\n"
107
+ end
108
+ subject.encode(LogStash::Event.new({'host' => host, "@timestamp" => timestamp}))
109
+ end
95
110
  end
96
111
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-codec-graphite
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.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: 2016-07-14 00:00:00.000000000 Z
11
+ date: 2017-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -70,6 +70,7 @@ files:
70
70
  - LICENSE
71
71
  - NOTICE.TXT
72
72
  - README.md
73
+ - docs/index.asciidoc
73
74
  - lib/logstash/codecs/graphite.rb
74
75
  - logstash-codec-graphite.gemspec
75
76
  - spec/codecs/graphite_spec.rb
@@ -95,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
96
  version: '0'
96
97
  requirements: []
97
98
  rubyforge_project:
98
- rubygems_version: 2.6.3
99
+ rubygems_version: 2.4.8
99
100
  signing_key:
100
101
  specification_version: 4
101
102
  summary: This codec will encode and decode Graphite formated lines.