logstash-output-cloudwatch 3.0.9 → 3.0.10
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 +4 -4
- data/CHANGELOG.md +5 -1
- data/lib/logstash/outputs/cloudwatch.rb +11 -3
- data/logstash-output-cloudwatch.gemspec +2 -2
- data/spec/outputs/cloudwatch_spec.rb +25 -5
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8aa68c4678a209eeeab4d6e43e7f0c6e7e10de5525efc2c87d771fef4ecf053e
|
4
|
+
data.tar.gz: 67484c33232c78a5d4ac335011dbad19377d83ab0745934daf8da185fed40c6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af131f72bc576f1c65a43396b93b9a3847a211fecffdf0d2299d97070c4593ad8c453d3577048af3ca75d1447416f14c632a3fe075a3cd83b5e4d601fccf59ef
|
7
|
+
data.tar.gz: 7a9d5b73e391150d1eac342a75e6398d520acf311775fd7aab6bbd6a45e042e05c416cd70c3c011f0380d588ef17e2bbb18a31787efe539d68388c2fb9ff97f9
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
+
## 3.0.10
|
2
|
+
- Deps: unpin rufus scheduler [#20](https://github.com/logstash-plugins/logstash-output-cloudwatch/pull/20)
|
3
|
+
- Fix: an old undefined method error which would surface with load (as queue fills up)
|
4
|
+
|
1
5
|
## 3.0.9
|
2
|
-
- Fix: dropped usage of SHUTDOWN event deprecated since Logstash 5.0 [#18](https://github.com/logstash-plugins/logstash-output-cloudwatch/pull/18)
|
6
|
+
- Fix: dropped usage of SHUTDOWN event deprecated since Logstash 5.0 [#18](https://github.com/logstash-plugins/logstash-output-cloudwatch/pull/18)
|
3
7
|
|
4
8
|
## 3.0.8
|
5
9
|
- Docs: Set the default_codec doc attribute.
|
@@ -3,6 +3,8 @@ require "logstash/outputs/base"
|
|
3
3
|
require "logstash/namespace"
|
4
4
|
require "logstash/plugin_mixins/aws_config"
|
5
5
|
|
6
|
+
require "rufus/scheduler"
|
7
|
+
|
6
8
|
# This output lets you aggregate and send metric data to AWS CloudWatch
|
7
9
|
#
|
8
10
|
# ==== Summary:
|
@@ -154,28 +156,34 @@ class LogStash::Outputs::CloudWatch < LogStash::Outputs::Base
|
|
154
156
|
# `add_field => [ "CW_dimensions", "prod" ]`
|
155
157
|
config :field_dimensions, :validate => :string, :default => "CW_dimensions"
|
156
158
|
|
159
|
+
attr_reader :event_queue
|
160
|
+
|
157
161
|
public
|
158
162
|
def register
|
159
163
|
require "thread"
|
160
|
-
require "rufus/scheduler"
|
161
164
|
require "aws-sdk"
|
162
165
|
|
163
166
|
@cw = Aws::CloudWatch::Client.new(aws_options_hash)
|
164
167
|
|
165
168
|
@event_queue = SizedQueue.new(@queue_size)
|
166
169
|
@scheduler = Rufus::Scheduler.new
|
167
|
-
@job = @scheduler.
|
170
|
+
@job = @scheduler.schedule_every @timeframe do
|
168
171
|
@logger.debug("Scheduler Activated")
|
169
172
|
publish(aggregate({}))
|
170
173
|
end
|
171
174
|
end # def register
|
172
175
|
|
176
|
+
# Rufus::Scheduler >= 3.4 moved the Time impl into a gem EoTime = ::EtOrbi::EoTime`
|
177
|
+
# Rufus::Scheduler 3.1 - 3.3 using it's own Time impl `Rufus::Scheduler::ZoTime`
|
178
|
+
RufusTimeImpl = defined?(Rufus::Scheduler::EoTime) ? Rufus::Scheduler::EoTime :
|
179
|
+
(defined?(Rufus::Scheduler::ZoTime) ? Rufus::Scheduler::ZoTime : ::Time)
|
180
|
+
|
173
181
|
public
|
174
182
|
def receive(event)
|
175
183
|
return unless (event.get(@field_metricname) || @metricname)
|
176
184
|
|
177
185
|
if (@event_queue.length >= @event_queue.max)
|
178
|
-
@job.trigger
|
186
|
+
@job.trigger RufusTimeImpl.now
|
179
187
|
@logger.warn("Posted to AWS CloudWatch ahead of schedule. If you see this often, consider increasing the cloudwatch queue_size option.")
|
180
188
|
end
|
181
189
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-output-cloudwatch'
|
4
|
-
s.version = '3.0.
|
4
|
+
s.version = '3.0.10'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Aggregates and sends metric data to AWS CloudWatch"
|
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"
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
# Gem dependencies
|
23
23
|
s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
|
24
24
|
s.add_runtime_dependency 'logstash-mixin-aws', '>= 1.0.0'
|
25
|
-
s.add_runtime_dependency 'rufus-scheduler',
|
25
|
+
s.add_runtime_dependency 'rufus-scheduler', '>= 3.0.9'
|
26
26
|
|
27
27
|
s.add_development_dependency 'logstash-devutils'
|
28
28
|
end
|
@@ -1,18 +1,38 @@
|
|
1
1
|
require "logstash/devutils/rspec/spec_helper"
|
2
|
-
require "logstash/
|
3
|
-
require "logstash/json"
|
2
|
+
require "logstash/outputs/cloudwatch"
|
4
3
|
|
5
4
|
describe "outputs/cloudwatch" do
|
6
5
|
|
6
|
+
let(:config) { { 'metricname' => 'foo' } }
|
7
7
|
|
8
|
-
|
8
|
+
subject(:plugin) { LogStash::Outputs::CloudWatch.new(config) }
|
9
9
|
|
10
10
|
it "should register" do
|
11
|
-
expect {
|
11
|
+
expect { plugin.register }.to_not raise_error
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should respond correctly to a receive call" do
|
15
|
+
plugin.register
|
15
16
|
event = LogStash::Event.new
|
16
|
-
expect {
|
17
|
+
expect { plugin.receive(event) }.to_not raise_error
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'with queue_size' do
|
21
|
+
|
22
|
+
let(:queue_size) { 100 }
|
23
|
+
|
24
|
+
let(:config) { super().merge('queue_size' => queue_size) }
|
25
|
+
|
26
|
+
it "triggers job ahead of time" do
|
27
|
+
plugin.register
|
28
|
+
event_queue = plugin.event_queue
|
29
|
+
allow( event_queue ).to receive(:length).and_return queue_size # emulate full queue
|
30
|
+
expect( plugin ).to receive(:publish)
|
31
|
+
|
32
|
+
event = LogStash::Event.new
|
33
|
+
plugin.receive(event)
|
34
|
+
sleep 1.0 # allow scheduler to kick in
|
35
|
+
end
|
36
|
+
|
17
37
|
end
|
18
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-cloudwatch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -47,7 +47,7 @@ dependencies:
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
requirements:
|
50
|
-
- - "
|
50
|
+
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: 3.0.9
|
53
53
|
name: rufus-scheduler
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
type: :runtime
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - "
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: 3.0.9
|
61
61
|
- !ruby/object:Gem::Dependency
|
@@ -111,8 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
113
|
requirements: []
|
114
|
-
|
115
|
-
rubygems_version: 2.6.13
|
114
|
+
rubygems_version: 3.1.6
|
116
115
|
signing_key:
|
117
116
|
specification_version: 4
|
118
117
|
summary: Aggregates and sends metric data to AWS CloudWatch
|