logstash-output-awslogs 0.1.30 → 1.1.1

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
  SHA256:
3
- metadata.gz: c474bc4a5ef1f07fa80d864aff9d8117a03e538a1803d5580f568ad247184657
4
- data.tar.gz: 3ba1244c07a40439e0720db526d977f50e4927f7880f0d84c99cdee00222be85
3
+ metadata.gz: b0e70a243f0906f2799aab77d0dbf1f29b7e07c6bea94485c37aa681dccf8b8f
4
+ data.tar.gz: 0f1621ab83b6955c5844857a82e58ec03581dbc0782c345d63cb4a9665dbd09f
5
5
  SHA512:
6
- metadata.gz: 85c3a5ed5b1fe574d69d3a120f6e69bec74a2cef47803d089dec0b837c11189391bfc822828f869e32f36c000296df8a216b5cc31a74ed7924b4bd12cd9673a3
7
- data.tar.gz: 114a6efe2abb2909f2245bcb92aca3beea9076b809c56374c5ae8099eebc0783a6cc083ef4f7c3c6a3df5046c999e0f4297d5e376e779ddc1fb56b0999c16b1c
6
+ metadata.gz: c9dbad4911570e8f125209a616f91ec835b2b7b339041068d7521db71c220058a11da0853b0108df0201d8c59656383f427ca450f4610f584d0298b548f1ed5d
7
+ data.tar.gz: 47fd4a9f146e9c42051b3744164f64d6cbfd3c651e4c7128926f9e48035a097ac9824d171c668edd03b357b65b8fbfee4d3a0c7305328ece96129135dafc33a5
data/CHANGELOG.md CHANGED
@@ -1,2 +1,5 @@
1
1
  ## 0.1.0
2
2
  - Plugin created with the logstash plugin generator
3
+
4
+ ## 1.1.1
5
+ - First fully working version.
data/CONTRIBUTORS CHANGED
@@ -3,6 +3,7 @@ reports, or in general have helped logstash along its way.
3
3
 
4
4
  Contributors:
5
5
  * - Ricky Cook (rickycook)
6
+ * - Anton Klyba (anarhyst266)
6
7
 
7
8
  Note: If you've sent us patches, bug reports, or otherwise contributed to
8
9
  Logstash, and you aren't on the list above and want to be, please let us know
data/DEVELOPER.md CHANGED
File without changes
data/Gemfile CHANGED
@@ -1,2 +1,3 @@
1
1
  source 'https://rubygems.org'
2
- gemspec
2
+ gemspec
3
+ gem 'rubocop', group: 'development'
data/LICENSE CHANGED
File without changes
data/README.md CHANGED
File without changes
@@ -4,10 +4,10 @@ require 'logstash/outputs/base'
4
4
  require 'logstash/namespace'
5
5
  require 'logstash/plugin_mixins/aws_config'
6
6
  require 'aws-sdk-cloudwatchlogs'
7
+ require 'json'
7
8
 
8
9
  Aws.eager_autoload!
9
10
 
10
- # An awslogs output that does nothing.
11
11
  class LogStash::Outputs::Awslogs < LogStash::Outputs::Base
12
12
  include LogStash::PluginMixins::AwsConfig::V2
13
13
 
@@ -18,19 +18,16 @@ class LogStash::Outputs::Awslogs < LogStash::Outputs::Base
18
18
  config :log_stream_name, validate: :string, required: true
19
19
 
20
20
  public
21
-
22
21
  def register
23
22
  @client = Aws::CloudWatchLogs::Client.new(aws_options_hash)
24
23
  @next_sequence_tokens = {}
25
24
  end # def register
26
25
 
27
26
  public
28
-
29
- def multi_receive_encoded(events_and_encoded)
27
+ def multi_receive(events)
30
28
  to_send = {}
31
- sequence_tokens = {}
32
29
 
33
- events_and_encoded.each do |event, encoded|
30
+ events.each do |event|
34
31
  event_log_stream_name = event.sprintf(log_stream_name)
35
32
  event_log_group_name = event.sprintf(log_group_name)
36
33
 
@@ -38,17 +35,10 @@ class LogStash::Outputs::Awslogs < LogStash::Outputs::Base
38
35
  unless to_send.keys.include? next_sequence_token_key
39
36
  to_send.store(next_sequence_token_key, [])
40
37
  end
41
- if event.get('message') && !event.get('message').empty?
42
- to_send[next_sequence_token_key].push(
43
- timestamp: (event.timestamp.time.to_f * 1000).to_int,
44
- message: event.get('message')
45
- )
46
- else
47
- to_send[next_sequence_token_key].push(
48
- timestamp: (event.timestamp.time.to_f * 1000).to_int,
49
- message: encoded
50
- )
51
- end
38
+ to_send[next_sequence_token_key].push(
39
+ timestamp: (event.timestamp.time.to_f * 1000).to_int,
40
+ message: event.to_hash.sort.to_h.to_json
41
+ )
52
42
  end
53
43
 
54
44
 
@@ -57,6 +47,8 @@ class LogStash::Outputs::Awslogs < LogStash::Outputs::Base
57
47
  event_log_stream_name = event_log_names[1]
58
48
  next_sequence_token_key = [event_log_group_name, event_log_stream_name]
59
49
 
50
+ log_events.sort_by!{ |event| event[:timestamp] }
51
+
60
52
  ident_opts = {
61
53
  log_group_name: event_log_group_name,
62
54
  log_stream_name: event_log_stream_name
@@ -64,32 +56,31 @@ class LogStash::Outputs::Awslogs < LogStash::Outputs::Base
64
56
  send_opts = ident_opts.merge(
65
57
  log_events: log_events
66
58
  )
67
-
68
59
  if @next_sequence_tokens.keys.include? next_sequence_token_key
69
60
  send_opts[:sequence_token] = @next_sequence_tokens[next_sequence_token_key]
61
+ end
62
+ begin
63
+ resp = @client.put_log_events(send_opts)
64
+ @next_sequence_tokens.store(next_sequence_token_key, resp.next_sequence_token)
65
+ rescue Aws::CloudWatchLogs::Errors::ResourceNotFoundException
66
+ @logger.info('Will create log group/stream and retry')
67
+ begin
68
+ @client.create_log_group({log_group_name: send_opts[:log_group_name]})
69
+ rescue Aws::CloudWatchLogs::Errors::ResourceAlreadyExistsException
70
+ @logger.info("Log group #{send_opts[:log_group_name]} already exists")
71
+ end
70
72
  begin
71
- resp = @client.put_log_events(send_opts)
72
- @next_sequence_tokens.store(next_sequence_token_key, resp.next_sequence_token)
73
- rescue Aws::CloudWatchLogs::Errors::ResourceNotFoundException => e
74
- @logger.info('Will create log group/stream and retry')
75
- begin
76
- @client.create_log_group({log_group_name: send_opts[:log_group_name]})
77
- rescue Aws::CloudWatchLogs::Errors::ResourceAlreadyExistsException => e
78
- @logger.info("Log group #{send_opts[:log_group_name]} already exists")
79
- end
80
- begin
81
- @client.create_log_stream({log_group_name: send_opts[:log_group_name], log_stream_name: send_opts[:log_stream_name]})
82
- rescue Aws::CloudWatchLogs::Errors::ResourceAlreadyExistsException => e
83
- @logger.info("Log stream #{send_opts[:log_stream_name]} already exists")
84
- end
85
- retry
86
- rescue Aws::CloudWatchLogs::Errors::InvalidSequenceTokenException => e
87
- send_opts[:sequence_token] = e.expected_sequence_token
88
- retry
89
- rescue Aws::CloudWatchLogs::Errors::ThrottlingException => e
90
- @logger.info('Logs throttling, retry')
91
- retry
73
+ @client.create_log_stream({log_group_name: send_opts[:log_group_name], log_stream_name: send_opts[:log_stream_name]})
74
+ rescue Aws::CloudWatchLogs::Errors::ResourceAlreadyExistsException
75
+ @logger.info("Log stream #{send_opts[:log_stream_name]} already exists")
92
76
  end
77
+ retry
78
+ rescue Aws::CloudWatchLogs::Errors::InvalidSequenceTokenException => e
79
+ send_opts[:sequence_token] = e.expected_sequence_token
80
+ retry
81
+ rescue Aws::CloudWatchLogs::Errors::ThrottlingException
82
+ @logger.info('Logs throttling, retry')
83
+ retry
93
84
  end
94
85
  end
95
86
  end # def multi_receive_encodeds
@@ -1,9 +1,9 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-output-awslogs'
3
- s.version = '0.1.30'
3
+ s.version = '1.1.1'
4
4
  s.licenses = ['Apache-2.0']
5
5
  s.summary = 'Writes events to AWS CloudWatch logs.'
6
- s.homepage = 'https://github.com/rickycook/logstash-output-awslogs'
6
+ s.homepage = 'https://github.com/Anarhyst266/logstash-output-awslogs'
7
7
  s.authors = ['Anton Klyba']
8
8
  s.email = 'anarhyst266+gems@gmail.com'
9
9
  s.require_paths = ['lib']
@@ -19,7 +19,8 @@ Gem::Specification.new do |s|
19
19
  # Gem dependencies
20
20
  s.add_runtime_dependency "logstash-core-plugin-api", "~> 2.0"
21
21
  s.add_runtime_dependency "logstash-codec-plain"
22
- s.add_runtime_dependency 'logstash-mixin-aws', '>= 4.3.0'
23
22
  s.add_runtime_dependency "aws-sdk-cloudwatchlogs", '~> 1'
23
+ s.add_runtime_dependency "logstash-integration-aws"
24
+ s.add_runtime_dependency "json"
24
25
  s.add_development_dependency "logstash-devutils"
25
26
  end
metadata CHANGED
@@ -1,86 +1,100 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-awslogs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.30
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Klyba
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-19 00:00:00.000000000 Z
11
+ date: 2022-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: logstash-core-plugin-api
14
15
  requirement: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - "~>"
17
18
  - !ruby/object:Gem::Version
18
19
  version: '2.0'
19
- name: logstash-core-plugin-api
20
- prerelease: false
21
20
  type: :runtime
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
+ name: logstash-codec-plain
28
29
  requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
- name: logstash-codec-plain
34
- prerelease: false
35
34
  type: :runtime
35
+ prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
+ name: aws-sdk-cloudwatchlogs
42
43
  requirement: !ruby/object:Gem::Requirement
43
44
  requirements:
44
- - - ">="
45
+ - - "~>"
45
46
  - !ruby/object:Gem::Version
46
- version: 4.3.0
47
- name: logstash-mixin-aws
47
+ version: '1'
48
+ type: :runtime
48
49
  prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: logstash-integration-aws
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
49
62
  type: :runtime
63
+ prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: 4.3.0
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
70
+ name: json
56
71
  requirement: !ruby/object:Gem::Requirement
57
72
  requirements:
58
- - - "~>"
73
+ - - ">="
59
74
  - !ruby/object:Gem::Version
60
- version: '1'
61
- name: aws-sdk-cloudwatchlogs
62
- prerelease: false
75
+ version: '0'
63
76
  type: :runtime
77
+ prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - "~>"
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: '1'
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
84
+ name: logstash-devutils
70
85
  requirement: !ruby/object:Gem::Requirement
71
86
  requirements:
72
87
  - - ">="
73
88
  - !ruby/object:Gem::Version
74
89
  version: '0'
75
- name: logstash-devutils
76
- prerelease: false
77
90
  type: :development
91
+ prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
- description:
97
+ description:
84
98
  email: anarhyst266+gems@gmail.com
85
99
  executables: []
86
100
  extensions: []
@@ -94,13 +108,13 @@ files:
94
108
  - README.md
95
109
  - lib/logstash/outputs/awslogs.rb
96
110
  - logstash-output-awslogs.gemspec
97
- homepage: https://github.com/rickycook/logstash-output-awslogs
111
+ homepage: https://github.com/Anarhyst266/logstash-output-awslogs
98
112
  licenses:
99
113
  - Apache-2.0
100
114
  metadata:
101
115
  logstash_plugin: 'true'
102
116
  logstash_group: output
103
- post_install_message:
117
+ post_install_message:
104
118
  rdoc_options: []
105
119
  require_paths:
106
120
  - lib
@@ -115,9 +129,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
129
  - !ruby/object:Gem::Version
116
130
  version: '0'
117
131
  requirements: []
118
- rubyforge_project:
119
- rubygems_version: 2.6.11
120
- signing_key:
132
+ rubygems_version: 3.0.3.1
133
+ signing_key:
121
134
  specification_version: 4
122
135
  summary: Writes events to AWS CloudWatch logs.
123
136
  test_files: []