logstash-input-cloudwatch 0.2.2 → 1.0.0

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: 28f0baff0d52fe044b7ff065ee8e6b1a43b02b5a
4
- data.tar.gz: 5e85ae4afdb328a48186956061bac044ca0ae677
3
+ metadata.gz: 065821490816976049e132fd6832e0ec764c5add
4
+ data.tar.gz: d307bc4381dfc82a4e2c988c521ee39a24a0a52a
5
5
  SHA512:
6
- metadata.gz: b8e96b39a27a7578fb484d6b84a2c4b384c1ffeee311a1d70ea367a87d0b0a6c0123ffdc81a796b8de9ec4a6c0ef78f1f41f7d4df0a2adbdc3bfff5d76b4dc89
7
- data.tar.gz: b26cdb6115046cd6ca2be80fdea6890647d92edc8642727b559b18abd1d33a3b57c4d867ed0d7a4858c0e48d0dd37a81912a78fa3e180cb60961089dcbef8532
6
+ metadata.gz: 2baaac13f86b6872818c9b455ec5c1390dc9fe6a68e26e0318bb08b975ccb5bcab3617b4b43fe1e7e75c316a135be0afbbb880511519147652ccb915e1f67338
7
+ data.tar.gz: eb332ecaaee1c366c2b374f6641313518e88bf37cdfb15b0ffecf13fd60a383edd1af033c3f4a2c066c726f17825590b820fc244442c07820d2b5ef586a9de9c
data/README.md CHANGED
@@ -1,86 +1,75 @@
1
- # Logstash Plugin
2
-
3
- This is a plugin for [Logstash](https://github.com/elasticsearch/logstash).
4
-
5
- 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.
6
-
7
- ## Documentation
8
-
9
- Logstash provides infrastructure to automatically generate documentation for this plugin. We use the asciidoc format to write documentation so any comments in the source code will be first converted into asciidoc and then into html. All plugin documentation are placed under one [central location](http://www.elasticsearch.org/guide/en/logstash/current/).
10
-
11
- - For formatting code or config example, you can use the asciidoc `[source,ruby]` directive
12
- - For more asciidoc formatting tips, see the excellent reference here https://github.com/elasticsearch/docs#asciidoc-guide
13
-
14
- ## Need Help?
15
-
16
- Need help? Try #logstash on freenode IRC or the https://discuss.elastic.co/c/logstash discussion forum.
17
-
18
- ## Developing
19
-
20
- ### 1. Plugin Developement and Testing
21
-
22
- #### Code
23
- - To get started, you'll need JRuby with the Bundler gem installed.
24
-
25
- - Create a new plugin or clone and existing from the GitHub [logstash-plugins](https://github.com/logstash-plugins) organization. We also provide [example plugins](https://github.com/logstash-plugins?query=example).
26
-
27
- - Install dependencies
28
- ```sh
29
- bundle install
1
+ # Logstash CloudWatch Input Plugins
2
+
3
+ Pull events from the Amazon Web Services CloudWatch API.
4
+
5
+ To use this plugin, you *must* have an AWS account, and the following policy:
6
+
7
+ ```json
8
+ {
9
+ "Version": "2012-10-17",
10
+ "Statement": [
11
+ {
12
+ "Sid": "Stmt1444715676000",
13
+ "Effect": "Allow",
14
+ "Action": [
15
+ "cloudwatch:GetMetricStatistics",
16
+ "cloudwatch:ListMetrics"
17
+ ],
18
+ "Resource": "*"
19
+ },
20
+ {
21
+ "Sid": "Stmt1444716576170",
22
+ "Effect": "Allow",
23
+ "Action": [
24
+ "ec2:DescribeInstances"
25
+ ],
26
+ "Resource": "*"
27
+ }
28
+ ]
29
+ }
30
30
  ```
31
31
 
32
- #### Test
32
+ See the [IAM][3] section on AWS for more details on setting up AWS identities.
33
33
 
34
- - Update your dependencies
34
+ ## Supported Namespaces
35
35
 
36
- ```sh
37
- bundle install
38
- ```
36
+ Unfortunately it's not possible to create a "one shoe fits all" solution for fetching metrics from AWS. We need to specifically add support for every namespace. This takes time so we'll be adding support for namespaces as the requests for them come in and we get time to do it. Please check the [`metric support`][1] issues for already requested namespaces, and add your request if it's not there yet.
39
37
 
40
- - Run tests
38
+ ## Configuration
41
39
 
42
- ```sh
43
- bundle exec rspec
44
- ```
45
-
46
- ### 2. Running your unpublished Plugin in Logstash
47
-
48
- #### 2.1 Run in a local Logstash clone
49
-
50
- - Edit Logstash `Gemfile` and add the local plugin path, for example:
40
+ Just note that the below configuration doesn't contain the AWS API access information.
41
+
51
42
  ```ruby
52
- gem "logstash-filter-awesome", :path => "/your/local/logstash-filter-awesome"
53
- ```
54
- - Install plugin
55
- ```sh
56
- bin/plugin install --no-verify
43
+ input {
44
+ cloudwatch {
45
+ namespace => "AWS/EC2"
46
+ metrics => [ "CPUUtilization" ]
47
+ filters => { "tag:Monitoring" => "Yes" }
48
+ region => "us-east-1"
49
+ }
50
+ }
51
+
52
+ input {
53
+ cloudwatch {
54
+ namespace => "AWS/EBS"
55
+ metrics => ["VolumeQueueLength"]
56
+ filters => { "tag:Monitoring" => "Yes" }
57
+ region => "us-east-1"
58
+ }
59
+ }
60
+
61
+ input {
62
+ cloudwatch {
63
+ namespace => "AWS/RDS"
64
+ metrics => ["CPUUtilization", "CPUCreditUsage"]
65
+ filters => { "EngineName" => "mysql" } # Only supports EngineName, DatabaseClass and DBInstanceIdentifier
66
+ region => "us-east-1"
67
+ }
68
+ }
57
69
  ```
58
- - Run Logstash with your plugin
59
- ```sh
60
- bin/logstash -e 'filter {awesome {}}'
61
- ```
62
- At this point any modifications to the plugin code will be applied to this local Logstash setup. After modifying the plugin, simply rerun Logstash.
63
-
64
- #### 2.2 Run in an installed Logstash
65
-
66
- You can use the same **2.1** method to run your plugin in an installed Logstash by editing its `Gemfile` and pointing the `:path` to your local plugin development directory or you can build the gem and install it using:
67
-
68
- - Build your plugin gem
69
- ```sh
70
- gem build logstash-filter-awesome.gemspec
71
- ```
72
- - Install the plugin from the Logstash home
73
- ```sh
74
- bin/plugin install /your/local/plugin/logstash-filter-awesome.gem
75
- ```
76
- - Start Logstash and proceed to test the plugin
77
-
78
- ## Contributing
79
-
80
- All contributions are welcome: ideas, patches, documentation, bug reports, complaints, and even something you drew up on a napkin.
81
-
82
- Programming is not a required skill. Whatever you've seen about open source and maintainers or community members saying "send patches or die" - you will not see that here.
83
70
 
84
- It is more important to the community that you are able to contribute.
71
+ See AWS Developer Guide for more information on [namespaces and metrics][2].
85
72
 
86
- For more information about contributing, see the [CONTRIBUTING](https://github.com/elasticsearch/logstash/blob/master/CONTRIBUTING.md) file.
73
+ [1]: https://github.com/EagerELK/logstash-input-cloudwatch/labels/metric%20support
74
+ [2]: http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html
75
+ [3]: http://aws.amazon.com/iam/
@@ -8,12 +8,10 @@ require "stud/interval"
8
8
 
9
9
  # Pull events from the Amazon Web Services CloudWatch API.
10
10
  #
11
- # CloudWatch provides various metrics on EC2, EBS and SNS.
12
- #
13
11
  # To use this plugin, you *must* have an AWS account, and the following policy
14
12
  #
15
13
  # Typically, you should setup an IAM policy, create a user and apply the IAM policy to the user.
16
- # A sample policy is as follows:
14
+ # A sample policy for EC2 metrics is as follows:
17
15
  # [source,json]
18
16
  # {
19
17
  # "Version": "2012-10-17",
@@ -40,6 +38,35 @@ require "stud/interval"
40
38
  #
41
39
  # See http://aws.amazon.com/iam/ for more details on setting up AWS identities.
42
40
  #
41
+ # # Configuration Example
42
+ # [source, ruby]
43
+ # input {
44
+ # cloudwatch {
45
+ # namespace => "AWS/EC2"
46
+ # metrics => [ "CPUUtilization" ]
47
+ # filters => { "tag:Group" => "API-Production" }
48
+ # region => "us-east-1"
49
+ # }
50
+ # }
51
+ #
52
+ # input {
53
+ # cloudwatch {
54
+ # namespace => "AWS/EBS"
55
+ # metrics => ["VolumeQueueLength"]
56
+ # filters => { "tag:Monitoring" => "Yes" }
57
+ # region => "us-east-1"
58
+ # }
59
+ # }
60
+ #
61
+ # input {
62
+ # cloudwatch {
63
+ # namespace => "AWS/RDS"
64
+ # metrics => ["CPUUtilization", "CPUCreditUsage"]
65
+ # filters => { "EngineName" => "mysql" } # Only supports EngineName, DatabaseClass and DBInstanceIdentifier
66
+ # region => "us-east-1"
67
+ # }
68
+ # }
69
+ #
43
70
 
44
71
  class LogStash::Inputs::CloudWatch < LogStash::Inputs::Base
45
72
  include LogStash::PluginMixins::AwsConfig
@@ -49,6 +76,19 @@ class LogStash::Inputs::CloudWatch < LogStash::Inputs::Base
49
76
  # If undefined, LogStash will complain, even if codec is unused.
50
77
  default :codec, "json"
51
78
 
79
+ # The service namespace of the metrics to fetch.
80
+ #
81
+ # The default is for the EC2 service. See http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html
82
+ # for valid values.
83
+ config :namespace, :validate => :string, :default => 'AWS/EC2'
84
+
85
+ # Specify the metrics to fetch for the namespace. The defaults are AWS/EC2 specific. See http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html
86
+ # for the available metrics for other namespaces.
87
+ config :metrics, :validate => :array, :default => [ 'CPUUtilization', 'DiskReadOps', 'DiskWriteOps', 'NetworkIn', 'NetworkOut' ]
88
+
89
+ # Specify the statistics to fetch for each namespace
90
+ config :statistics, :validate => :array, :default => [ 'SampleCount', 'Average', 'Minimum', 'Maximum', 'Sum' ]
91
+
52
92
  # Set how frequently CloudWatch should be queried
53
93
  #
54
94
  # The default, `900`, means check every 15 minutes. Setting this value too low
@@ -58,44 +98,17 @@ class LogStash::Inputs::CloudWatch < LogStash::Inputs::Base
58
98
  # Set the granularity of the returned datapoints.
59
99
  #
60
100
  # Must be at least 60 seconds and in multiples of 60.
61
- config :period, :validate => :number, :default => 60
101
+ config :period, :validate => :number, :default => (60 * 5)
62
102
 
63
- # The service namespace of the metrics to fetch.
103
+ # Specify the filters to apply when fetching resources:
64
104
  #
65
- # The default is for the EC2 service. Valid values are 'AWS/EC2', 'AWS/EBS' and
66
- # 'AWS/SNS'.
67
- config :namespace, :validate => :string, :default => 'AWS/EC2'
68
-
69
- # The instances to check.
70
- #
71
- # Either specify specific instances using this setting, or use `tag_name` and
72
- # `tag_values`. The `instances` setting takes precedence.
73
- config :instances, :validate => :array
74
-
75
- # Specify which tag to use when determining what instances to fetch metrics for
76
- #
77
- # You need to specify `tag_values` when using this setting. The `instances` setting
78
- # takes precedence.
79
- config :tag_name, :validate => :string
80
-
81
- # Specify which tag value to check when determining what instances to fetch metrics for
82
- #
83
- # You need to specify `tag_name` when using this setting. The `instances` setting
84
- # takes precedence.
85
- config :tag_values, :validate => :array
86
-
87
- # Set how frequently the available instances should be refreshed. Making it less
88
- # than `interval` doesn't really make sense. This cannot be used along with the
89
- # `instances` setting.
90
- #
91
- # The default, -1, means never refresh
92
- config :instance_refresh, :validate => :number, :default => -1
93
-
94
- # Specify the metrics to fetch for each instance
95
- config :metrics, :validate => :array, :default => [ 'CPUUtilization', 'DiskReadOps', 'DiskWriteOps', 'NetworkIn', 'NetworkOut' ]
96
-
97
- # Specify the statistics to fetch for each metric
98
- config :statistics, :validate => :array, :default => [ 'SampleCount', 'Average', 'Minimum', 'Maximum', 'Sum' ]
105
+ # This needs to follow the AWS convention of specifiying filters.
106
+ # Instances: { 'instance-id' => 'i-12344321' }
107
+ # Tags: { "tag:Environment" => "Production" }
108
+ # Volumes: { 'attachment.status' => 'attached' }
109
+ # Each namespace uniquely support certian dimensions. Please consult the documentation
110
+ # to ensure you're using valid filters.
111
+ config :filters, :validate => :array
99
112
 
100
113
  public
101
114
  def aws_service_endpoint(region)
@@ -107,76 +120,79 @@ class LogStash::Inputs::CloudWatch < LogStash::Inputs::Base
107
120
  require "aws-sdk"
108
121
  AWS.config(:logger => @logger)
109
122
 
110
- if @instances
111
- raise LogStash::ConfigurationError, 'Should not specify both `instance_refresh` and `instances`' if @instance_refresh > 0
112
- raise LogStash::ConfigurationError, 'Should not specify both `tag_name` and `instances`' unless @tag_name.nil?
113
- raise LogStash::ConfigurationError, 'Should not specify both `tag_values` and `instances`' unless @tag_values.nil?
114
- else
115
- raise LogStash::ConfigurationError, 'Both `tag_name` and `tag_values` need to be specified if no `instances` are specified' if @tag_name.nil? || @tag_values.nil?
116
- end
117
-
118
- @cloudwatch = AWS::CloudWatch::Client.new(aws_options_hash)
119
- @ec2 = AWS::EC2::Client.new(aws_options_hash)
123
+ # Initialize all the clients
124
+ [@namespace, 'CloudWatch'].each { |ns| clients[ns] }
120
125
  @last_check = Time.now
121
126
  end # def register
122
127
 
123
128
  def run(queue)
124
129
  Stud.interval(@interval) do
125
- @logger.debug('Polling CloudWatch API')
126
- # Set up the instance_refresh check
127
- if @instance_refresh > 0 && (Time.now - @last_check) > @instance_refresh
128
- @instances = nil
129
- @last_check = Time.now
130
- end
131
-
132
- # Poll the instances
133
- instance_ids.each do |instance|
134
- metrics(instance).each do |metric|
135
- opts = options(metric, instance)
136
- @cloudwatch.get_metric_statistics(opts)[:datapoints].each do |dp|
137
- event = LogStash::Event.new(LogStash::Util.stringify_symbols(dp))
138
- event['@timestamp'] = LogStash::Timestamp.new(dp[:timestamp])
139
- event['metric'] = metric
140
- event['instance'] = instance
141
- @instance_tags[instance].each do |tag|
142
- event[tag[:key]] = tag[:value]
130
+ @logger.info('Polling CloudWatch API')
131
+
132
+ raise 'No metrics to query' unless metrics_for(@namespace).count > 0
133
+
134
+ # For every metric
135
+ metrics_for(@namespace).each do |metric|
136
+ @logger.info "Polling metric #{metric}"
137
+ # For every dimension in the metric
138
+ resources.each_pair do |dimension, dim_resources|
139
+ # For every resource in the dimension
140
+ dim_resources = *dim_resources
141
+ dim_resources.each do |resource|
142
+ # For every event in the resource
143
+ fetch_resource_events(dimension, resource, metric_options(@namespace, metric)).each do |event|
144
+ queue << event
143
145
  end
144
- decorate(event)
145
- queue << event
146
146
  end
147
147
  end
148
148
  end
149
149
  end # loop
150
150
  end # def run
151
151
 
152
- private
153
- def options(metric, instance)
154
- {
155
- namespace: @namespace,
156
- metric_name: metric,
157
- dimensions: [ { name: 'InstanceId', value: instance } ],
158
- start_time: (Time.now - @interval).iso8601,
159
- end_time: Time.now.iso8601,
160
- period: @period,
161
- statistics: @statistics
162
- }
152
+ def fetch_resource_events(dimension, resource, options)
153
+ @logger.info "Polling resource #{dimension}: #{resource}"
154
+ options[:dimensions] = [ { name: dimension, value: resource } ]
155
+ datapoints = clients['CloudWatch'].get_metric_statistics(options)
156
+ @logger.debug "DPs: #{datapoints.data}"
157
+ datapoints[:datapoints].each do |event|
158
+ event.merge! options
159
+ event[dimension.to_sym] = resource
160
+ event = LogStash::Event.new(cleanup(event))
161
+ decorate(event)
162
+ end
163
+ end
164
+
165
+ def cleanup(event)
166
+ event.delete :statistics
167
+ event.delete :dimensions
168
+ event[:start_time] = Time.parse(event[:start_time]).utc
169
+ event[:end_time] = Time.parse(event[:end_time]).utc
170
+ event[:timestamp] = event[:end_time]
171
+ LogStash::Util.stringify_symbols(event)
163
172
  end
164
173
 
165
174
  private
166
- def metrics(instance)
167
- metrics_available(instance) & @metrics
175
+ def clients
176
+ @clients ||= Hash.new do |h, k|
177
+ k = k[4..-1] if k[0..3] == 'AWS/'
178
+ k = 'EC2' if k == 'EBS'
179
+ cls = AWS.const_get(k)
180
+ h[k] = cls::Client.new(aws_options_hash)
181
+ end
168
182
  end
169
183
 
170
184
  private
171
- def metrics_available(instance)
172
- @metrics ||= Hash.new do |h, k|
173
- opts = {
174
- namespace: @namespace,
175
- dimensions: [ { name: 'InstanceId', value: instance } ]
176
- }
185
+ def metrics_for(namespace)
186
+ metrics_available[namespace] & @metrics
187
+ end
177
188
 
189
+ private
190
+ def metrics_available
191
+ @metrics_available ||= Hash.new do |h, k|
178
192
  h[k] = []
179
- @cloudwatch.list_metrics(opts)[:metrics].each do |metrics|
193
+
194
+ options = { namespace: k }
195
+ clients['CloudWatch'].list_metrics(options)[:metrics].each do |metrics|
180
196
  h[k].push metrics[:metric_name]
181
197
  end
182
198
  h[k]
@@ -184,19 +200,44 @@ class LogStash::Inputs::CloudWatch < LogStash::Inputs::Base
184
200
  end
185
201
 
186
202
  private
187
- def instance_ids
188
- return @instances unless @instances.nil?
189
-
190
- @instance_tags = {}
191
- @ec2.describe_instances(filters: [ { name: "tag:#{@tag_name}", values: @tag_values } ])[:reservation_set].each do |reservation|
192
- @logger.debug reservation
193
- reservation[:instances_set].each do |instance|
194
- @instance_tags[instance[:instance_id]] = instance[:tag_set]
195
- end
203
+ def metric_options(namespace, metric)
204
+ {
205
+ namespace: namespace,
206
+ metric_name: metric,
207
+ start_time: (Time.now - @interval).iso8601,
208
+ end_time: Time.now.iso8601,
209
+ period: @period,
210
+ statistics: @statistics
211
+ }
212
+ end
213
+
214
+ private
215
+ def aws_filters
216
+ @filters.collect do |key, value|
217
+ value = [value] unless value.is_a? Array
218
+ { name: key, values: value }
196
219
  end
197
- @instances = @instance_tags.keys
198
- @logger.debug 'Fetching metrics for the following instances', instances: @instances
199
- @instances
200
220
  end
201
221
 
222
+ private
223
+ def resources
224
+ # See http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html
225
+ @logger.info "Filters: #{aws_filters}"
226
+ case @namespace
227
+ when 'AWS/EC2'
228
+ instances = clients[@namespace].describe_instances(filters: aws_filters)[:reservation_set].collect do |r|
229
+ r[:instances_set].collect{ |i| i[:instance_id] }
230
+ end.flatten
231
+ @logger.debug "AWS/EC2 Instances: #{instances}"
232
+ { 'InstanceId' => instances }
233
+ when 'AWS/EBS'
234
+ volumes = clients[@namespace].describe_volumes(filters: aws_filters)[:volume_set].collect do |a|
235
+ a[:attachment_set].collect{ |v| v[:volume_id] }
236
+ end.flatten
237
+ @logger.debug "AWS/EBS Volumes: #{volumes}"
238
+ { 'VolumeId' => volumes }
239
+ when 'AWS/RDS'
240
+ @filters
241
+ end
242
+ end
202
243
  end # class LogStash::Inputs::CloudWatch
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-input-cloudwatch'
3
- s.version = '0.2.2'
3
+ s.version = '1.0.0'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "Retrieve stats from AWS CloudWatch."
6
6
  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"
metadata CHANGED
@@ -1,112 +1,114 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-cloudwatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jurgens du Toit
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-13 00:00:00.000000000 Z
11
+ date: 2015-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-core
15
- version_requirements: !ruby/object:Gem::Requirement
15
+ requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.4.0
20
- - - <
20
+ - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: 2.0.0
23
- requirement: !ruby/object:Gem::Requirement
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
24
26
  requirements:
25
- - - '>='
27
+ - - ">="
26
28
  - !ruby/object:Gem::Version
27
29
  version: 1.4.0
28
- - - <
30
+ - - "<"
29
31
  - !ruby/object:Gem::Version
30
32
  version: 2.0.0
31
- prerelease: false
32
- type: :runtime
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: logstash-codec-plain
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - '>='
38
- - !ruby/object:Gem::Version
39
- version: '0'
40
35
  requirement: !ruby/object:Gem::Requirement
41
36
  requirements:
42
- - - '>='
37
+ - - ">="
43
38
  - !ruby/object:Gem::Version
44
39
  version: '0'
45
- prerelease: false
46
40
  type: :runtime
47
- - !ruby/object:Gem::Dependency
48
- name: stud
41
+ prerelease: false
49
42
  version_requirements: !ruby/object:Gem::Requirement
50
43
  requirements:
51
- - - '>='
44
+ - - ">="
52
45
  - !ruby/object:Gem::Version
53
46
  version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: stud
54
49
  requirement: !ruby/object:Gem::Requirement
55
50
  requirements:
56
- - - '>='
51
+ - - ">="
57
52
  - !ruby/object:Gem::Version
58
53
  version: '0'
59
- prerelease: false
60
54
  type: :runtime
61
- - !ruby/object:Gem::Dependency
62
- name: logstash-mixin-aws
55
+ prerelease: false
63
56
  version_requirements: !ruby/object:Gem::Requirement
64
57
  requirements:
65
- - - '>='
58
+ - - ">="
66
59
  - !ruby/object:Gem::Version
67
60
  version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: logstash-mixin-aws
68
63
  requirement: !ruby/object:Gem::Requirement
69
64
  requirements:
70
- - - '>='
65
+ - - ">="
71
66
  - !ruby/object:Gem::Version
72
67
  version: '0'
73
- prerelease: false
74
68
  type: :runtime
75
- - !ruby/object:Gem::Dependency
76
- name: aws-sdk
69
+ prerelease: false
77
70
  version_requirements: !ruby/object:Gem::Requirement
78
71
  requirements:
79
- - - '>='
72
+ - - ">="
80
73
  - !ruby/object:Gem::Version
81
74
  version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: aws-sdk
82
77
  requirement: !ruby/object:Gem::Requirement
83
78
  requirements:
84
- - - '>='
79
+ - - ">="
85
80
  - !ruby/object:Gem::Version
86
81
  version: '0'
87
- prerelease: false
88
82
  type: :runtime
89
- - !ruby/object:Gem::Dependency
90
- name: logstash-devutils
83
+ prerelease: false
91
84
  version_requirements: !ruby/object:Gem::Requirement
92
85
  requirements:
93
- - - '>='
86
+ - - ">="
94
87
  - !ruby/object:Gem::Version
95
88
  version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: logstash-devutils
96
91
  requirement: !ruby/object:Gem::Requirement
97
92
  requirements:
98
- - - '>='
93
+ - - ">="
99
94
  - !ruby/object:Gem::Version
100
95
  version: '0'
101
- prerelease: false
102
96
  type: :development
103
- 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
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ description: This gem is a logstash plugin required to be installed on top of the
104
+ Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not
105
+ a stand-alone program
104
106
  email: jrgns@eagerelk.com
105
107
  executables: []
106
108
  extensions: []
107
109
  extra_rdoc_files: []
108
110
  files:
109
- - .gitignore
111
+ - ".gitignore"
110
112
  - CHANGELOG.md
111
113
  - DEVELOPER.md
112
114
  - Gemfile
@@ -122,24 +124,24 @@ licenses:
122
124
  metadata:
123
125
  logstash_plugin: 'true'
124
126
  logstash_group: input
125
- post_install_message:
127
+ post_install_message:
126
128
  rdoc_options: []
127
129
  require_paths:
128
130
  - lib
129
131
  required_ruby_version: !ruby/object:Gem::Requirement
130
132
  requirements:
131
- - - '>='
133
+ - - ">="
132
134
  - !ruby/object:Gem::Version
133
135
  version: '0'
134
136
  required_rubygems_version: !ruby/object:Gem::Requirement
135
137
  requirements:
136
- - - '>='
138
+ - - ">="
137
139
  - !ruby/object:Gem::Version
138
140
  version: '0'
139
141
  requirements: []
140
- rubyforge_project:
141
- rubygems_version: 2.4.5
142
- signing_key:
142
+ rubyforge_project:
143
+ rubygems_version: 2.4.6
144
+ signing_key:
143
145
  specification_version: 4
144
146
  summary: Retrieve stats from AWS CloudWatch.
145
147
  test_files: